lvs持久连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lvs持久连接相关的知识,希望对你有一定的参考价值。

 

在我们实现lvs负载均衡的同时是否想过这样的一个问题:当客户访问一台WEB服务器时,如果每次客户刷新页面后多会更变连接的realserver,那么这样客户是会非常苦恼的,因为客户一刷新前面的数据和保留的session信息就 找不到了。

对于这样的问题我们该怎么解决呢?

其实解决的这个问题是有很多方法的,下面我就来介绍关于lvs提出的解决方案吧--------------基于lvs持久连接。

lvs持久连接的三种模型:

1、PCC 将某个客户的所用访问请求在超时时间内都定向到同一台server上 基于客户端的持久连接
2、PPC 将某个客户的某个服务访问请求在超时时间内都定向到同一台server上 基于会话的端口持久连接
3、Netfilter Mark 基于防火墙标志的持久连接(将多个服务端口绑定到一起,定义有限个服务为集群服务)


PCC:

[[email protected] ~]# ipvsadm -C
[[email protected] ~]# ipvsadm -At 192.168.1.63:0 -s rr -p 500
[[email protected] ~]# ipvsadm -at 192.168.1.63:0 -r 192.168.1.65 -g
[[email protected] ~]# ipvsadm -at 192.168.1.63:0 -r 192.168.1.66 -g
[[email protected] ~]# ipvsadm -L -n 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.63:80 rr persistent 500
  -> 192.168.1.65:80              Route   1      0          0         
  -> 192.168.1.66:80              Route   1      0          0   

在super64上访问vip:
[[email protected] ~]# elinks 192.168.1.63 -dump
   192.168.1.66
[[email protected] ~]# ssh 192.168.1.63
[[email protected] ~]

再次在super63上查看:

[[email protected] ~]# ipvsadm -L -n 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.63:80 rr persistent 500
  -> 192.168.1.65:80              Route   1      0          0         
  -> 192.168.1.66:80              Route   1      0          2

连接一直定位到66


PPC:

[[email protected] ~]# ipvsadm -C
[[email protected] ~]# ipvsadm -At 192.168.1.63:22 -s rr -p
[[email protected] ~]# ipvsadm -At 192.168.1.63:80 -s rr -p
[[email protected] ~]# ipvsadm -at 192.168.1.63:80 -r 192.168.1.65 -g
[[email protected] ~]# ipvsadm -at 192.168.1.63:80 -r 192.168.1.66 -g
[[email protected] ~]# ipvsadm -at 192.168.1.63:20 -r 192.168.1.65 -g


[[email protected] ~]# elinks 192.168.1.63 -dump
2次访问多定位到66
[[email protected] ~]# ssh 192.168.1.63
[email protected]‘s password: 
Last login: Wed Aug  5 10:09:47 2015 from 192.168.1.64
[[email protected] ~]# 
2次访问多定位到65

[[email protected] ~]# ipvsadm -nL
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.63:22 rr persistent 360
  -> 192.168.1.65:22              Route   1      0          2        
TCP  192.168.1.63:80 rr persistent 360
  -> 192.168.1.65:80              Route   1      0          0         
  -> 192.168.1.66:80              Route   1      0          2 


基于防火墙标记:

[[email protected] ~]#ipvsadm -C

将端口打上标记
[[email protected] ~]#iptables -t mangle -A PREROUTING -d 192.168.1.63 -i eth0 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 8

创建规则(把防火墙的8定义为集群服务)
[[email protected] ~]#ipvsadm -A -f 8 -s rr -p --f 
[[email protected] ~]#ipvsadm -a -f 8 -r 192.168.1.65 -g
[[email protected] ~]#ipvsadm -a -f 8 -r 192.168.1.66 -g

通过64分别访问vip的https与http服务:
2次访问的结果定位到同一主机。

[[email protected] ~]# ipvsadm -nL
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  8 rr persistent 360
  -> 192.168.1.65:0               Route   1      0          2        
  -> 192.168.1.66:0               Route   1      0          0  

以上是关于lvs持久连接的主要内容,如果未能解决你的问题,请参考以下文章

LVS 持久连接

Linux学习-LVS持久连接

LVS负载均衡之session解决方案 持久连接

Linux集群系列之六——LVS持久连接

lvs持久连接

LVS负载均衡下session共享的实现方式-持久化连接