LVS负载均衡(4)-- LVS FWM防火墙标记
防火墙标记的作用是:借助于防火墙标记来分类报文,然后基于标记定义集群服务;可将多个不同的应用使用同一个集群服务进行调度。
-
实现方法:
-
在Director主机打标记,作用在mangle表的PREROUTING链上
格式
iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport --dports $port1,$port2,… -j MARK --set-mark NUMBER
参数说明
MARK target :可用于给特定的报文打标记
--set-mark value:value 可为0xffff格式,表示十六进制数字
-
在Director主机基于标记定义集群服务:
ipvsadm -A -f NUMBER [options]
-
-
配置示例:
以上一节DR模型为例,LVS需要同时调度80端口和443端口,定义了两个集群,可以使用防火墙标记功能把两个集群合并为一个集群,简化配置。
#1.使用iptables定义防火墙标记,把80端口和443端口定义一个MARK为10 [root@lvs-01 ~]# iptables -t mangle -A PREROUTING -d 192.168.50.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10 [root@lvs-01 ~]# iptables -t mangle -vnL Chain PREROUTING (policy ACCEPT 42 packets, 2772 bytes) pkts bytes target prot opt in out source destination 0 0 MARK tcp -- * * 0.0.0.0/0 192.168.50.100 multiport dports 80,443 MARK set 0xa Chain INPUT (policy ACCEPT 42 packets, 2772 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 22 packets, 2088 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 22 packets, 2088 bytes) pkts bytes target prot opt in out source destination #2.清除ipvs规则,使用防火墙标记重新定义: [root@lvs-01 ~]# ipvsadm -C [root@lvs-01 ~]# ipvsadm -A -f 10 -s rr [root@lvs-01 ~]# ipvsadm -a -f 10 -r 192.168.50.22 -g [root@lvs-01 ~]# ipvsadm -a -f 10 -r 192.168.50.23 -g [root@lvs-01 ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn FWM 10 rr -> 192.168.50.22:0 Route 1 0 0 -> 192.168.50.23:0 Route 1 0 0 #3.使用客户端测试: #测试使用http方式访问,重定向到https [root@xuzhichao ~]# for i in {1..10} ;do curl -k -L -Hhost:www,xuzhichao.com http://192.168.20.50; done node2.xuzhichao.com page node1.xuzhichao.com page node2.xuzhichao.com page node1.xuzhichao.com page node2.xuzhichao.com page node1.xuzhichao.com page node2.xuzhichao.com page node1.xuzhichao.com page node2.xuzhichao.com page node1.xuzhichao.com page #测试直接使用https方式访问 [root@xuzhichao ~]# for i in {1..10} ;do curl -k -Hhost:www,xuzhichao.com https://192.168.20.50; done node2.xuzhichao.com page node1.xuzhichao.com page node2.xuzhichao.com page node1.xuzhichao.com page node2.xuzhichao.com page node1.xuzhichao.com page node2.xuzhichao.com page node1.xuzhichao.com page node2.xuzhichao.com page node1.xuzhichao.com page