[root@test2 ~]#ipvsadm -a -t 10.0.10.100:0 -r 10.0.10.83 -g[root@test2 ~]# ipvsadm -a -t 10.0.10.100:0 -r 10.0.10.84 -g[root@test2 ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags ->RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 10.0.10.100:0 rr persistent 360 ->10.0.10.83:0 Route 1 0 0 ->10.0.10.84:0 Route 1 0 0
很显然这不符合我们的目的,我们的主要目的是将某些特定的服务绑在一起
所以这个时候,我们需要只绑定某几个服务,这就需要持久防火墙标记PFMC
实现PFMC持久连接
只需要将某几个服务,对其的请求刚到达directory服务器的时候,在perouting链上做防火墙标记
比如对目标是vip80端口的请求标记为1 对443端口请求的服务也标记为1 然后对标记1的角色做长久连接服务
mangle表的意义:
将报文拆开做标记再次封装,必须将在到达iptables所在链之前对其做标签,,而后将集群服务定义的时候以防火墙标记当做服务来标记
将规则清空
[root@test2 ~]#ipvsadm -C
启动web服务并新开一8080端口
定义标签
[root@test2CA]# iptables -t mangle -A PREROUTING -d 10.0.10.100 -p tcp –dport 80 -j MARK–set-mark 10
[root@test2CA]# iptables -t mangle -A PREROUTING -d 10.0.10.100 -p tcp –dport 8080 -jMARK –set-mark 10
[root@test2CA]# iptables -t mangle -A PREROUTING -d 10.0.10.100 -p tcp –dport 22 -j MARK–set-mark 10
查看规则
[root@test2 CA]#iptables -t mangle -L -nChain PREROUTING (policy ACCEPT)target prot optsource destination MARK tcp — 0.0.0.0/0 10.0.10.100 tcp dpt:80 MARK set0xaMARK tcp — 0.0.0.0/0 10.0.10.100 tcp dpt:8080 MARKset 0xa
MARK tcp — 0.0.0.0/0 10.0.10.100 tcp dpt:22 MARK set0xa
定制集群
使用ipvs命令同时,加入参数–f 明确指定mark标签
[root@test2 CA]#ipvsadm -A -f 10 -s rr -p
[root@test2 CA]#ipvsadm -a -f 10 -r 10.0.10.83 -g[root@test2 CA]# ipvsadm -a -f 10 -r 10.0.10.84 -g
[root@test2 CA]#ipvsadm -L -nIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags ->RemoteAddress:Port Forward Weight ActiveConn InActConnFWM 10 rr persistent 360 ->10.0.10.83:0 Route 1 0 0 ->10.0.10.84:0 Route 1 0 0
访问测试:
分别访问以下连接
:8080
一旦建立连接,无论其如何刷新、如何访问其指定端口的服务,请求都会分发到指定的其一台realserver
如果再想对其加入其它端口成员,则需要在iptables mangle表中加入规则即可
比如我们想将443加入集群服务中,明确指定mark标签
[root@test2CA]# iptables -t mangle -A PREROUTING -d 10.0.10.100 -p tcp –dport 443 -j MARK–set-mark 10
本文出自 “心情依旧” 博客,请务必保留此出处
就微笑着同清风合力染绿大地,这样才算善待生命,不负年华。