虚拟服务持久性连接

拓扑图:

前端的虚拟服务器的ip地址vip192.168.20.100,后端的node1rip192.168.20.10vip192.168.20.100

node2rip192.168.20.20vip192.168.20.100

工作原理:

前端的虚拟服务器接到请求,把请求封装成数据帧,帧的目标mac地址为后方真实的服务器的mac地址,目标ip地址为vip,原地址为客户端的ip地址,原mac为客户端的mac地址,后方的服务器接收到数据帧,把帧拆解成数据包,发现目标ip地址是自己的vip,原ip地址是客户端的ip地址,然后服务器直接把请求的结果发给客户端,不在转发给虚拟服务器。

1:基于客户端的高持续性连接PCC

虚拟服务器上的规则:

ipvsadm-E-t192.168.20.100:0-srr-p

[root@localhost~]#ipvsadm-a-t192.168.20.100:0-r192.168.20.10-g

[root@localhost~]#ipvsadm-a-t192.168.20.100:0-r192.168.20.20-g

0端口代表所有端口,-p默认是360秒,在360秒内,同一客户机一直访问节点一或者节点二。假如客户机1一直访问节点一,那么客户机就会一直访问节点二,超过360秒,将会续约120秒的时间。基于客户端的高持续性连接的有点,客户机一直访问同一web服务器,连接并不发生跳转,一直请求同一节点,保证数据的一致性和完整性。

2:基于端口的高持续性连接PPC

虚拟服务器上的规则:

[root@localhost~]#ipvsadm-A-t192.168.20.100:80-srr-p60

[root@localhost~]#ipvsadm-A-t192.168.20.100:22-srr-p60

[root@localhost~]#ipvsadm-a-t192.168.20.100:22-r192.168.20.10:22-g

[root@localhost~]#ipvsadm-a-t192.168.20.100:80-r192.168.20.20:80-g

root@localhost~]#ipvsadm-l

IPVirtualServerversion1.2.1(size=4096)

ProtLocalAddress:PortSchedulerFlags

->RemoteAddress:PortForwardWeightActiveConnInActConn

TCP192.168.20.100:httprrpersistent60

->192.168.20.20:httpRoute100

TCP192.168.20.100:sshrrpersistent60

->192.168.20.10:sshRoute100

当访问http//192.168.20.100时请求被转发到节点2web服务器上80端口,访问到二节点上的页面内容。

当访问ssh:192.168.20.100时请求被转发到节点1上的25端口,远程登录到一节点上。

3:基于防火墙规则的高持续性连接http服务

防火墙上的规则:

[root@localhost~]#iptables-tmangle-APREROUTING-d192.168.20.100-ptcp--dport80-jMARK--set-mark10

[root@localhost~]#iptables-tmangle-APREROUTING-d192.168.20.100-ptcp--dport443-jMARK--set-mark10

[root@localhost~]#iptables-tmangle-L

ChainPREROUTING(policyACCEPT)

targetprotoptsourcedestination

MARKtcp--anywhere192.168.20.100tcpdpt:httpMARKxset0xa/0xffffffff

MARKtcp--anywhere192.168.20.100tcpdpt:httpsMARKxset0xa/0xfffffff

在虚拟服务器上的规则:

[root@localhost~]#ipvsadm-A-f10-p60-srr

[root@localhost~]#

[root@localhost~]#

[root@localhost~]#ipvsadm-a-f10-r192.168.20.10-g

[root@localhost~]#ipvsadm-a-f10-r192.168.20.20-g

[root@localhost~]#ipvsadm-l

IPVirtualServerversion1.2.1(size=4096)

ProtLocalAddress:PortSchedulerFlags

->RemoteAddress:PortForwardWeightActiveConnInActConn

FWM10rrpersistent60

->192.168.20.20:0Route100

->192.168.20.10:0Route100

打开浏览器进行访问http://192.168.20.100

出现后方的节点1apache服务器的页面内容

访问https://192.168.20.100/

后方出现的内容还是节点1的页面内容

查看虚拟服务匹配规则iplvsadm-l

4:基于防火墙规则的高持续性连接ftp服务

防火墙规则:

[root@localhost~]#iptables-tmangle-APREROUTING-d192.168.20.100-ptcp--dport21-jMARK--set-mark20

[root@localhost~]#iptables-tmangle-APREROUTING-d192.168.20.100-ptcp-mmultiport--dport10000:10002-jMARK--set-mark20

[root@localhost~]#iptables-tmangle-L-n--line-number

ChainPREROUTING(policyACCEPT)numtargetprotoptsourcedestination

1MARKtcp--0.0.0.0/0192.168.20.100tcpdpt:21MARKxset0x14/0xffffffff

2MARKtcp--0.0.0.0/0192.168.20.100multiportdports10000:10002MARKxset0x14/0xffffffff

虚拟服务规则:

[root@localhost~]#ipvsadm-A-f20-srr-p1800

[root@localhost~]#ipvsadm-a-f20-r192.168.20.10-g

[root@localhost~]#ipvsadm-a-f20-r192.168.20.20-g

[root@localhost~]#

[root@localhost~]#ipvsadm-l

IPVirtualServerversion1.2.1(size=4096)

ProtLocalAddress:PortSchedulerFlags

->RemoteAddress:PortForwardWeightActiveConnInActConn

FWM20rrpersistent1800

->192.168.20.20:0Route100

->192.168.20.10:0Route100

查看虚拟服务规则匹配的情况

[root@localhost~]#ipvsadm-l

IPVirtualServerversion1.2.1(size=4096)

ProtLocalAddress:PortSchedulerFlags

->RemoteAddress:PortForwardWeightActiveConnInActConn

FWM20rrpersistent1800

->192.168.20.20:0Route115

->192.168.20.10:0Route100

当客户端1访问ftp://192.168.20.100时,请求到的结果是节点一ftp服务器上的内容,在1800秒内访问的都是节点二。

当客户端2访问ftp://192.168.20.100时,请求到的结果是节点一ftp服务器上的内容,在1800秒内访问的都是节点一。