LVS介绍
LVS是linux virtual server的简写,是服务器集群的一种负载均衡解决方案,作为netfilter的补充套件,工作于内核空间。
常见的术语
CIP:客户端ip地址
RIP:后端服务器ip地址
VIP:lvs面向客户端的ip地址
DIP:lvs面向后端服务器的ip地址
RS:后端服务器
VS:调试器
调试算法分静态和动态两种
静态方法,根据算法本身进行调试
RR:轮询
WRR:加权轮询,根据服务器的权重做轮询
SH:源地址哈希,将来自同一ip的请求都发往该ip第一次请求的RS
DH:目标地址哈希,发送到同一目的地址的请求都发往指定的RS(常用于正向代理)
动态方法,根据算法及各RS当前的负载状态进行评估
LC:最少连接,把请求发给连接最少的RS
WLC:加权最少连接,按照服务器权重和服务器的连接数分配连接,
算法:overhead=(activeconns*256+inactive)/weight
SED:最短延迟,当连接都为0的时候,优先由权重高的服务器处理
算法:overhead=(activeconns+1)*256/weight
NQ:意为,永不排队,开始时,按权重从大到小分配负载,之后再按SED算法进行工作。SED算法的改进
LBLC:动态的DH算法
LBLCR:带复制功能的动态DH算法
Lvs-nat
多目标的DNAT,通过修改报文的目标地址和端口将请求转发至后端real server,类似与iptables的DNAT
工作原理:
Client请求到VS的VIP,数据到达INPUT后匹配LVS规则, 通过调试算法把请求从DIP向后端RS转发,RS把响应报文通过VS发给client (RS的RIP与Director必须在同一个IP网络,且RS的网关须指向DIP)
Lvs-dr
重新封装一个MAC地址首部请求报文,再通过调试算法转给RS(源IP为CIP,目标IP始终为VIP)
工作原理
Client请求到VS,VS在请求报文封装MAC首部,源MAC为DIP,目标MAC为后端某一台RS,源IP和目标IP都保持不变,RS通过本机VIP地址直接给客户端发响应报文。
DR类型须确保前端路由器将目标IP为VIP的请求报文一定会发送给RS。
解决这个问题的方法有:
1、 路由器静态绑定
2、 禁止RS响应VIP的ARP请求(修改arp表或禁用RS的内核参数,并把VIP配置在特定的接口上实现禁止其响应。
Lvs-tun
不修改请求报文的IP首部,在原有的IP首部外再次封装一个IP首部
工作原理
Client请求到VS, VS通过调试算法选定一台公网上的RS,并在请求报文外再封装一个IP首部,RS自己响应客户端(RIP、DIP、VIP全是公网地址)
Lvs-fullnat
Lvs-fullnat不是标准的调试机制,需要自己编译安装,它是通过同进修改请求报文的源IP和目标IP实现转发
工作原理类似nat类型,不同在于VS向后端RS转发时可以跨网络
LVS持久连接
LVS持久连接分3种模式
每端口持久(PPC)
每客户端持久(PCC)
每FWM持久(PFWMC)
原创文章,作者:N27_xieqizhi,如若转载,请注明出处:http://www.178linux.com/83613