lvs持久连接

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

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

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

lvs持久连接的三种模型:

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


PCC:

[root@super63 ~]# ipvsadm -C
[root@super63 ~]# ipvsadm -At 192.168.1.63:0 -s rr -p 500
[root@super63 ~]# ipvsadm -at 192.168.1.63:0 -r 192.168.1.65 -g
[root@super63 ~]# ipvsadm -at 192.168.1.63:0 -r 192.168.1.66 -g
[root@super63 ~]# 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:
[root@super64 ~]# elinks 192.168.1.63 -dump
   192.168.1.66
[root@super64 ~]# ssh 192.168.1.63
[root@super66 ~]

再次在super63上查看:

[root@super63 ~]# 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:

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


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

[root@super63 ~]# 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 


基于防火墙标记:

[root@super63 ~]#ipvsadm -C

将端口打上标记
[root@super63 ~]#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定义为集群服务)
[root@super63 ~]#ipvsadm -A -f 8 -s rr -p --f 
[root@super63 ~]#ipvsadm -a -f 8 -r 192.168.1.65 -g
[root@super63 ~]#ipvsadm -a -f 8 -r 192.168.1.66 -g

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

[root@super63 ~]# 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  

原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/5967036.html