首页 > 代码库 > lvs详解
lvs详解
lvs负载均衡集群
lvs工作原理
1.当客户端的请求到达负载均衡器的内核空间时,首先会到达PREROUTING链。
2.当内核发现请求数据包的目的地址是本机时,将数据包送往INPUT链。
3.LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作,IPVS工作在INPUT链上,当数据包到达INPUT链时
首先会被IPVS检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将被放行至用户空间。
4.如果数据包里面的目的地址及端口在规则里面,那么这条数据报文将被修改目的地址为事先定义好的后端服务器,并送往POSTROUTING链。
5.最后经由POSTROUTING链发往后端服务器。
1:arp协议:地址解析协议(使用arp协议可以实现通过IP地址获得对应主机的物理地址(MAC地址))
2:arp通信必须两个主机在同一网段
3:arp工作原理
3.1:先检查arp表没有缓存的目标主机的mac地址
3.2:如果没有缓存就进行arp广播
3.3:目标主机收到广播后,向源主机回应,并把源主机的mac地址记录下来
3.4:给源主机发送数据,源主机将目标主机的mac记录到arp缓存中
4:四层负载均衡(lvs)
七层负载均衡(Nginx,haproxy)
5:lvs类型
5.1:NAT工作原理(地址转换)
客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。
负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。
报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。
然后lvs将此报文的源地址修改为本机并发送给客户端。注意:在NAT模式中,Real Server的网关必须指向LVS,否则报文无法送达客户端。
5.1.1:NAT遵循的规则
集群节点跟dip必须在同一网络中
RIP通常为私有地址,仅用于各集群节点之间的通信
dip位于cip和rip之间,并且负责处理进出请求
rip必须将网关指向dip
dip支持端口映射
5.2:DR工作原理(直接路由)
客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。
RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。注意:需要设置lo接口的VIP不能响应本地网络内的arp请求。
5.2.1:DR遵循的规则
集群节点跟DIP必须在同一物理网络中
RIP可以使用公网IP,方便管理
DIP只负责处理入网请求,响应报文由rip直接发往客户端
集群节点不能将网关指向DIP
不支持端口映射
5.3:TUN工作原理(隧道)
客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。
RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。注意:需要设置lo接口的VIP不能在共网上出现。
5.3.1:TUN遵循的规则
集群节点可以跨越inintern
rip必须是公网IP
dip仅负责处理入站请求,响应报文则由rip直接发往客户端
rip网关不能指向dip
只有支持隧道功能的OS才能用于RIP
不支持端口映射
6:负载均衡的算法
6.1:rr轮询
6.2:wrr加权轮询
6.3:lc最少链接数
6.4:wlc加权最少链接数
6.5:sed最少期望延迟
6.6:NQ永不排队/最少队列调度
6.7:LBLC基于局部性的最少链接
6.8:LBLCR带复制的基于局部性最少连接
lvs详解