环境:

     使用NAT模型

    Director(堡垒机):192.168.11.26  外网

              20.1.1.254   内网

    RS1:20.1.1.11 网关 20.1.1.254

    RS2:20.1.1.12 网关 20.1.1.254


一、堡垒机

[root@web2 ~]# iptables -A PREROUTING -t mangle -d 192.168.11.26  -p tcp --dport 80 -j MARK --set-mark 10  #设定访问目标IP192.168.11.26的80端口进行防火墙打标10
[root@web2 ~]# iptables -t mangle -vnL                                                                     #pkts包目前为0,有访问就会有标记
Chain PREROUTING (policy ACCEPT 139 packets, 11592 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MARK       tcp  --  *      *       0.0.0.0/0            192.168.11.26       tcp dpt:80 MARK set 0xa 
    ...
[root@web2 ~]# ipvsadm -A -f 10 -s rr                                                                      #设定Lvs 调度放放风
[root@web2 ~]# ipvsadm -a -f 10 -r 20.1.1.11 -m -w 1                                                       #20.1.1.11加入rr调度
[root@web2 ~]# ipvsadm -a -f 10 -r 20.1.1.12 -m -w 2                                                       #20.1.1.12加入rr调度
[root@web2 ~]# 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
  -> 20.1.1.11:0                  Masq    1      0          0         
  -> 20.1.1.12:0                  Masq    2      0          0 
[root@web2 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward                                                      #echo 1 开启内核转发功能
[root@web2 ~]# cat /proc/sys/net/ipv4/ip_forward                                                           #查看是否开启
1


二、RS1/RS2配置就不举例了

三、访问测试

[root@redis_master ~]# curl http://192.168.11.26                                                           #访问测试OK,是rr调度方式
<h1>===12===</h1>
[root@redis_master ~]# curl http://192.168.11.26
<h1>===11===</h1>
[root@redis_master ~]# curl http://192.168.11.26
<h1>===12===</h1>
[root@redis_master ~]# curl http://192.168.11.26
<h1>===11===</h1>

堡垒机设定会话绑定
[root@web2 ~]# ipvsadm -Ln                                                                               #查看没有会话绑定presistent
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  10 rr
  -> 20.1.1.11:0                  Masq    1      0          2         
  -> 20.1.1.12:0                  Masq    2      0          2         
[root@web2 ~]# ipvsadm -E -f 10 -s rr -p                                                                #修改
[root@web2 ~]# ipvsadm -Ln                                                                              #查看是否会话绑定presistent,-p后面不指定默认时长360秒
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  10 rr persistent 360
  -> 20.1.1.11:0                  Masq    1      0          0         
  -> 20.1.1.12:0                  Masq    2      0          0  

[root@redis_master ~]# curl http://192.168.11.26                                                        #再次测试,发现绑定OK
<h1>===12===</h1>
[root@redis_master ~]# curl http://192.168.11.26
<h1>===12===</h1>
[root@redis_master ~]# curl http://192.168.11.26
<h1>===12===</h1>
[root@redis_master ~]# curl http://192.168.11.26
<h1>===12===</h1>

堡垒机也可以基于PCC会话绑定,清空ipables规则,命令如下:
ipvsadm -A -f|-t $ip:0 -s rr -p                                                                         #主要是:0这个设定任何的端口都会绑定同一台RS