LVS 的持久连接
当出现这样一种场景,一个集群提供不同的服务,那么客户端访问不同的服务会是同一台设备吗?不确定,即使使用source hashing (简称sh)调度算法。使用sh算法虽然可以保证访问相同的服务总是可以定向到同一台服务器,但不同的服务之间没有关联性,有可能会定向到其他服务器,LVS的持久连接就是解决这样一个问题将不同的服务划分为同一个组,让director把不同的服务建立关系,从而当做一个整体,可以称之为port affinity(端口关联性)或connection affinity(连接关联性),要想实现端口关联性,就需要对连接进行跟踪,LVS引进了LVS持久连接模板(persistent template),简单说来就是,一个内存管理空间,里面内容以key-value的形式存储着Client IP ---real server IP的对应关系。新建立的连接先查此模板,如果没有就采取事先设定的调度算法进行调度。
LVS持久连接配置:
ipvsadm-A -t 172.16.1.100:80-srr-p (default is 300s)
-p
此选项开启lvs的持久连接功能,默认300秒,当服务器提供了SSL功能和FTP服务时,此选项非常重要,在LVS-NAT模型下,提供FTP服务没有必要使用此选项,但可能需要使用insmod手动加载ip_vs_ftp模块。
开启持久连接连接只是将当前服务定义为持久连接,跟其他的服务还是没有关联起来,持久连接的类型有:
PCC(persistent clientconnection),同一个客户端都定向到同一个服务器
PPC (persistent port connection),同一个服务定向到同一个服务器
PFMC (persistent firewall mark connection)防火墙标记相同的定向到同一服务器
将所有的服务类型都定向到同一台服务器
#ipvsadm-A -t 172.16.1.100:0-s rr
将特定的服务(http,https)定向到同一台服务器
先将需要关联的服务定义相同的防火墙标记
# iptables -tmangle -A PREROUTING -d 172.16.1.100 -p tcp -m multiport --dports 80,443 -jMARK --set-mark 10
然后根据标记定义服务
# ipvsadm-A -f 10-srr
页:
[1]