首页 > 代码库 > 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详解