目录
1 防火墙标签解决轮询错误
1.1 轮询规则中可能会遇到的错误
1.2 测试效果
2 防火墙标记解决轮询调度问题
2.1 使用iptables 在LVS主机打标记:
2.1.1 格式
2.1.2 实践
2.2 LVS中定义集群转发的服务
2.2.1 格式
2.2.2 添加LVS转发规则
2.2.3 测试结果
1 防火墙标签解决轮询错误
1.1 轮询规则中可能会遇到的错误
[root@LVS ~]# ipvsadm -A -t 172.25.254.200:80 -s wrr
[root@LVS ~]# ipvsadm -a -t 172.25.254.200:80 -r 172.25.254.10:80 -g -w 1
[root@LVS ~]# ipvsadm -a -t 172.25.254.200:80 -r 172.25.254.20:80 -g -w 1[root@LVS ~]# ipvsadm -A -t 172.25.254.200:443 -s wrr
[root@LVS ~]# ipvsadm -a -t 172.25.254.200:443 -r 172.25.254.10:443 -g -w 1
[root@LVS ~]# ipvsadm -a -t 172.25.254.200:443 -r 172.25.254.20:443 -g -w 1[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.254.200:80 wrr
-> 172.25.254.10:80 Route 1 0 0
-> 172.25.254.20:80 Route 1 0 0
TCP 192.168.0.100:443 wrr
-> 172.25.254.10:443 Route 1 0 0
-> 172.25.254.20:443 Route 1 0 0
1.2 测试效果
[root@client yum.repos.d]# curl 172.25.254.200;curl -k https://172.25.254.200
this is web1
this is web1
2 防火墙标记解决轮询调度问题
2.1 使用iptables 在LVS主机打标记:
2.1.1 格式
iptables -t mangle -A PREROUTING -d $vip -p $proto -m multiport --dports $portl,$port2,.. -i MARK --set-mark NUMBER
2.1.2 实践
[root@LVS ~]# iptables -t mangle -A PREROUTING -d 172.25.254.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 6666
[root@LVS ~]# iptables -nL -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK 6 -- 0.0.0.0/0 172.25.254.200 multiport dports 80,443 MARK set 0x1a0aChain INPUT (policy ACCEPT)
target prot opt source destination Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
-
-t mangle
:指定操作的目标表为mangle表。mangle表主要用于修改数据包的TTL、TOS字段以及做标记等操作。 -
-A PREROUTING
:将规则追加到PREROUTING链。PREROUTING链是在数据包进入系统之前执行的一系列规则。 -
-d 172.25.254.200
:指定目标地址为172.25.254.200。这意味着只有发往这个地址的数据包才会受到这个规则的影响。 -
-p tcp
:指定协议类型为TCP。只有TCP协议的数据包会被这个规则影响。 -
-m multiport --dports 80,443
:使用multiport模块,并指明目标端口为80和443。这意味着只有发往这两个端口的TCP数据包才会受到这个规则的影响。 -
-j MARK --set-mark 6666
:执行MARK动作,并设置标记值为6666。这个标记将会被附加到符合以上条件的所有数据包上。
2.2 LVS中定义集群转发的服务
2.2.1 格式
ipvsadm -A -f 标记值 [options]
2.2.2 添加LVS转发规则
在vs调度器中设定端口标签,人为80和443是一个整体
[root@LVS ~]# ipvsadm -A -f 6666 -s rr
[root@LVS ~]# ipvsadm -a -f 6666 -r 172.25.254.10 -g
[root@LVS ~]# ipvsadm -a -f 6666 -r 172.25.254.20 -g[root@LVS ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 6666 rr-> 172.25.254.10:0 Route 1 0 0 -> 172.25.254.20:0 Route 1 0 0
2.2.3 测试结果
[root@client ~]# for i in {1..10};do curl http://172.25.254.200;curl -k https://172.25.254.200 ;done
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1