在InfoWatch Traffic Monitor上配置负载平衡


如果一台服务器的功能不足以处理所有请求,并且软件制造商未提供负载平衡,该怎么办? 有很多选择-从购买负载平衡器到限制请求数量。 哪一种是正确的,您需要在考虑现有条件的情况下查看情况。 在本文中,我们将告诉您如果预算有限并且有可用的免费服务器该怎么办。


作为必须减少其中一台服务器上的负载的系统,我们选择了InfoWatch DLP(信息泄漏预防系统)。 该实现的一个功能是将平衡器功能放置在其中一台“战斗”服务器上。


我们遇到的问题之一是无法使用源NAT(SNAT)。 对于需要什么以及如何解决问题,我们将进一步描述。


因此,现有系统的初始逻辑图如下:



来自用户计算机的ICAP流量,SMTP,事件是在流量监控器(TM)服务器上处理的。 同时,数据库服务器在处理TM上的事件后可以轻松应对负载,但是TM本身的负载很大。 在设备监视器(DM)服务器上出现消息队列,以及在TM上加载处理器和内存,就可以证明这一点。


乍一看,如果我们向该方案添加另一个TM服务器,则可以将ICAP或DM切换到该方案,但是由于降低了容错能力,因此我们决定不使用此方法。


解决方案说明


在寻找正确解决方案的过程中,我们与LVS一起选择了keepalived免费软件。 由于keepalived解决了创建故障转移群集的问题,因此它也可以管理LVS平衡器。


我们想要达到的目标(减少TM上的负载并保持当前的容错水平)应根据以下方案工作:



检查性能时,结果发现服务器上安装的自定义RedHat程序集不支持SNAT。 在我们的例子中,我们计划使用SNAT,以便从相同的IP地址发送传入的数据包和对它们的答复,否则将得到以下图片:



这是不可接受的。 例如,将数据包发送到虚拟IP(VIP)地址的代理服务器将等待VIP的响应,但在这种情况下,它将来自IP2,用于发送到备份的会话。 找到了解决方案:有必要在备份上创建另一个路由表,并将两个TM服务器连接到单独的网络,如下所示:



设定值


我们实现了两台服务器的方案,其中两台服务器具有ICAP,SMTP,TCP 9100服务和一个负载平衡器。


我们有两个RHEL6服务器,从中删除了标准存储库和部分软件包。


我们需要平衡的服务:


•ICAP-TCP 1344;


•SMTP-TCP 25。


DM流量服务-TCP 9100。


首先,我们需要规划网络。


虚拟IP地址(VIP):


•IP:10.20.20.105。


服务器TM6_1:


•外部IP:10.20.20.101;


•内部IP:192.168.1.101。


服务器TM6_2:


•外部IP:10.20.20.102;


•内部IP:192.168.1.102。


然后在两个TM服务器上启用IP转发。 这里介绍如何在RedHat上进行操作。


我们决定哪些服务器将拥有主服务器,以及哪些服务器-备用服务器。 假设master为TM6_1,备份为TM6_2。


在备份时,创建一个新的平衡器路由表和路由规则:


[root@tm6_2 ~]echo 101 balancer >> /etc/iproute2/rt_tables [root@tm6_2 ~]ip rule add from 192.168.1.102 table balancer [root@tm6_2 ~]ip route add default via 192.168.1.101 table balancer 

以上命令一直有效,直到系统重新引导。 要在重新引导后保留路由,可以在/etc/rc.d/rc.local中输入它们,但最好通过设置文件/ etc / sysconfig / network-scripts / route-eth1输入它们(注意:这使用了不同的语法)。


在两个TM服务器上安装keepalived。 作为分发源,我们使用了rpmfind.net:


 [root@tm6_1 ~]#yum install https://rpmfind.net/linux/centos/6.10/os/x86_64/Packages/keepalived-1.2.13-5.el6_6.x86_64.rpm 

在keepalived设置中,我们分配一个主服务器,另一个分配备用服务器。 然后,我们设置VIP和服务以实现负载平衡。 设置文件通常位于以下位置: /etc/keepalived/keepalived.conf


TM1服务器的设置
 vrrp_sync_group VG1 { group { VI_1 } } vrrp_instance VI_1 { state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 51 priority 151 advert_int 1 authentication { auth_type PASS auth_pass example } virtual_ipaddress { 10.20.20.105 } } virtual_server 10.20.20.105 1344 { delay_loop 6 lb_algo wrr lb_kind NAT protocol TCP real_server 192.168.1.101 1344 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 1344 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.1.102 1344 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 1344 nb_get_retry 3 delay_before_retry 3 } } } virtual_server 10.20.20.105 25 { delay_loop 6 lb_algo wrr lb_kind NAT protocol TCP real_server 192.168.1.101 25 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 25 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.1.102 25 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 25 nb_get_retry 3 delay_before_retry 3 } } } virtual_server 10.20.20.105 9100 { delay_loop 6 lb_algo wrr lb_kind NAT protocol TCP real_server 192.168.1.101 9100 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 9100 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.1.102 9100 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 9100 nb_get_retry 3 delay_before_retry 3 } } } 

TM2服务器的设置
 vrrp_sync_group VG1 { group { VI_1 } } vrrp_instance VI_1 { state BACKUP interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass example } virtual_ipaddress { 10.20.20.105 } } 

在主LVS上安装,这将平衡流量。 对于第二台服务器,没有必要安装平衡器,因为在配置中我们只有两台服务器。


 [root@tm6_1 ~]##yum install https://rpmfind.net/linux/centos/6.10/os/x86_64/Packages/ipvsadm-1.26-4.el6.x86_64.rpm 

平衡器将由我们已经配置的keepalived管理。


要完成此操作,请在两台服务器上将keepalived添加为自动运行:


 [root@tm6_1 ~]#chkconfig keepalived on 

结论


检查结果


在两台服务器上运行keepalived:


 service keepalived start 

验证VRRP虚拟地址可用性


确保VIP在主机上:



备份中没有VIP:



使用ping命令,检查VIP的可用性:



现在,您可以关闭master并再次运行ping命令。


结果应该保持不变,在备份时,我们将看到VIP:



检查服务平衡


以SMTP为例。 同时运行到10.20.20.105的两个连接:


 telnet 10.20.20.105 25 

在主服务器上,我们应该看到两个连接都处于活动状态并连接到不同的服务器:


 [root@tm6_1 ~]#watch ipvsadm –Ln 


因此,我们在其中一台TM服务器上安装了平衡器,从而实现了TM服务的故障安全配置。 对于我们的系统,这将TM的负载减少了一半,这使我们能够通过系统解决缺少水平缩放的问题。


在大多数情况下,此解决方案可以快速实施且无需支付额外费用,但有时在设置时(例如在平衡UDP流量时)存在许多限制和困难。

Source: https://habr.com/ru/post/zh-CN484964/


All Articles