负载均衡器
在同一应用程序的不同实例之间实现负载平衡有几种解决方案(Nginx负载均衡器的商业版本,弹性负载均衡),但HAProxy是当前支持会话粘性的负载平衡开源解决方案,因此将在本指南中介绍。它能够处理大量的流量。与nginx类似,它使用单进程、事件驱动模型,因此具有较低的内存指纹,能够处理大量并发请求。
本文介绍了如何在两个RapidMiner Server实例之间设置HAProxy以实现负载平衡,但本指南不涉及SSL配置。
设置
请确保您遵循了本文中概述的步骤。负载均衡器应该是一个专用的机器,它只负责重定向流量和负载平衡几个RapidMiner服务器实例。在这个设置中,我们假设您使用的是Ubuntu机器,并且SSL配置不是在负载均衡器中完成的,而是在附加的负载均衡器中完成的反向代理.
安装
haproxy
使用您的发行版的包管理器。对于Ubuntu,有一个专门的存储库来安装haproxy
包:Sudo add-apt-repository ppa:vbernat/haproxy-1.8 Sudo apt-get update Sudo apt-get install -y haproxy
安装完成后,HAProxy配置可以在
/etc/haproxy/haproxy.cfg
.默认配置分为两部分:全球而且违约.如果您想要更改运行HAProxy进程的用户或调整一些日志记录行为,可以在这些部分中完成。看到HAProxy文档欲知详情。对于我们的基本设置,我们将跳过这些,只定义两个额外的部分:前端
而且后端
.的前端节包含HAProxy接收传入流量的连接。的后端节包含HAProxy重定向和负载均衡流量到的连接。添加
前端
的部分haproxy.cfg
:前端localnodes绑定*:80模式HTTP default_backend rapidminerservers
在这个示例设置中,HAProxy将侦听所有网络接口上的请求(
*
)在港口80
但仅限于HTTP协议。的前端Section作为流量输入.中定义的节点之间负载均衡所有从该端口观察到的/传入的流量后端部分rapidminerservers
(交通输出).添加
后端
的部分haproxy.cfg
:backend rapidminerserver2 mode http balance roundrobin option forwardfor http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if {ssl_fc} option httpchk HEAD / http /1.1\r\nHost:localhost cookie RAPIDMINER_SRV prefix server rapidminerserver1 ip-address-of-first-instance:8080 cookie check server rapidminerserver2 ip-address-of-second-instance:8080 cookie check
http方式
:这将把HTTP请求传递到列出的服务器。此平衡循环
:使用循环负载分配策略。选择forwardfor
:添加X-Forwarded-For头,以便RapidMiner服务器实例可以获得客户端的实际IP地址。如果没有这个,RapidMiner服务器实例将把每个传入的请求视为来自负载均衡器的IP地址。http-request set-header X-Forwarded-Port %[dst_port]
:手动添加X-Forwarded-Port头,以便RapidMiner服务器实例知道重定向时使用哪个端口。httpchk HEAD / HTTP/1.1\r\nHost:localhost
:设置HAProxy用于测试RapidMiner Server实例是否仍在响应的健康检查。如果这些服务器不能正确响应,则从HAProxy中删除服务器。这将发送一个带有HTTP/1.1和宿主标题设置。http-request add-header X-Forwarded-Proto https if {ssl_fc}
:添加X-Forwarded-Proto头,并将其设置为“https”,如果“https”方案用于“http”(viassl_fc
).类似于转发端口报头,这可以帮助RapidMiner服务器实例确定在发送重定向时使用哪种方案。cookie RAPIDMINER_SRV前缀
:添加唯一的会话标识。在这个帮助下,会话被启用。服务器rapidminerserver1 ip-address-of-first-instance:8080 cookie check
:为HAProxy添加RapidMiner Server实例,实现流量均衡。设置它们的IP地址和端口(RapidMiner Server的默认端口为8080
),并添加check指令告诉HAProxy对服务器进行健康检查。的饼干
指令告诉HAProxy总是为会话重用同一服务器(粘性)。
确保负载均衡器可以到达端口上的所有RapidMiner Server实例
8080
.(可选)添加统计网站,实现流量和负载均衡监控。调整你的
haproxy.cfg
并添加:监听stats *:1936 stats启用stats uri / stats隐藏版本stats认证someUser:somePassword
(可选)如果需要在HAProxy中添加RapidMiner Server实例,请执行添加操作
server rapidminerserverX ip-address-of-instance:8080 cookie check
到后端部分。在启动服务之后,负载均衡器就可以提供服务了
Sudo服务haproxy启动
.根据所使用的分布,您可能需要设置Enabled = 1
在/etc/default/haproxy
配置文件。它将在所有配置的RapidMiner服务器实例之间进行负载平衡。如果配置了统计数据现在您可以访问负载均衡器端口上的IP地址1936
和用户一起someUser
还有密码somePassword
来监控HAProxy。