接上文(LVS实验——部署DR模式集群),以http和https为例,当在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样就出现了一个轮询错乱的问题
当第一次访问80被轮询到RS2后下次访问443仍然可能会被轮询到RS2上
目录
一、实验环境
二、问题呈现
1、下载
2、LVS中设置调度
3、测试问题
三、防火墙标记解决轮询调度问题
四、测试
一、实验环境
二、问题呈现
1、下载
在RS1和RS2中安装mod_ssl并重启apache
[root@webserver1 ~]# yum install mod_ssl -y
[root@webserver1 ~]# systemctl restart httpd
[root@webserver2 ~]# yum install mod_ssl -y
[root@webserver2 ~]# systemctl restart httpd
2、LVS中设置调度
[root@lvs ~]# ipvsadm -A -t 192.168.0.50:80 -s wrr
[root@lvs ~]# ipvsadm -a -t 192.168.0.50:80 -r 192.168.0.10:80 -g -w 1
[root@lvs ~]# ipvsadm -a -t 192.168.0.50:80 -r 192.168.0.20:80 -g -w 2
[root@lvs ~]# ipvsadm -A -t 192.168.0.50:443 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.50:443 -r 192.168.0.10:443 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.50:443 -r 192.168.0.20:443 -g
3、测试问题
三、防火墙标记解决轮询调度问题
FWM:FireWall Mark
MARK target 可用于给特定的报文打标记, --set-mark value
其中:value 可为0xffff格式,表示十六进制数字借助于防火墙标记来分类报文,而后基于标记定义集群服 务:可将多个不同的应用使用同一个集群服务进行调度
在打标记做策略之前应将之前的策略清空
[root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.50 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.10 -g
[root@lvs ~]# ipvsadm -a -f 66 -r 192.168.0.20 -g
四、测试
[root@client ~]# curl -k https://192.168.0.50
[root@client ~]# curl http://192.168.0.50; curl -k https://192.168.0.50
由此,此时的流量分布均衡,解决了轮询错乱的问题,当第一次访问443被轮询到RS2后下次访问80不会被轮询到RS2上,而是被轮询到RS1上。