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  -s  rr-p (default is 300s)

-p [timeout]

此选项开启lvs的持久连接功能,默认300秒,当服务器提供了SSL功能和FTP服务时,此选项非常重要,在LVS-NAT模型下,提供FTP服务没有必要使用此选项,但可能需要使用insmod手动加载ip_vs_ftp模块。

开启持久连接连接只是将当前服务定义为持久连接,跟其他的服务还是没有关联起来,持久连接的类型有:

PCCpersistent client  connection,同一个客户端都定向到同一个服务器

PPC persistent port connection),同一个服务定向到同一个服务器

PFMC persistent firewall mark connection)防火墙标记相同的定向到同一服务器


将所有的服务类型都定向到同一台服务器

#ipvsadm  -A -t 172.16.1.100:0  -s rr  


将特定的服务(httphttps)定向到同一台服务器

先将需要关联的服务定义相同的防火墙标记

# iptables -tmangle -A PREROUTING -d 172.16.1.100 -p tcp -m multiport --dports 80,443 -jMARK --set-mark 10

然后根据标记定义服务

# ipvsadm-A -f 10  -s  rr


你可能感兴趣的:(LVS持久连接)