什么是LVS?
LVS是四层负载均衡器,Linux2.4内核以后天然支持(内核的一部分),其网络架构如下所示:
备注:LVS对外暴露的公网IP叫做“VIP”。
LVS工作模式
NAT模式
NAT(Network Address Translation)网络地址转换,即将一个IP地址转换为另一个IP地址的技术,如下图所示:
- LVS接收到请求,根据调度算法得到实际服务器,假设其地址为RIP;
- LVS将数据包的目标地址从VIP改为RIP,并转发到实际服务器;
- 实际服务器处理完成后返回响应数据包,其源地址为RIP,目标地址为CIP;
- LVS收到响应数据包后,将其源地址改为VIP,然后发送到公网;
缺点: NAT模式下所有的请求和响应都会经过LVS,LVS容易成为系统的性能瓶颈。
DR模式
DR(Direct Routing)直接路由,LVS只负责请求的调度,响应由真实服务器直接返回给客户端,以此提高吞吐量(依据是大多数网络请求都是请求报文短而响应报文长),如下图所示:
- LVS接收到请求,根据调度算法得到实际服务器RS;
- LVS将数据包的MAC地址改为际服务器RS的MAC地址,并转发给RS;
- 实际服务器处理完成后直接给客户端返回响应数据包;
TUN模式
IP隧道技术是将一个IP数据封装成另一个IP数据包的技术。
- LVS接收到请求,根据调度算法得到实际服务器RS;
- LVS将数据包封装成新的数据包,其目标地址为RS的地址,源地址为VIP,并转发给RS;
- 实际服务器处理完成后直接给客户端返回响应数据包;
备注:TUN模式需要操作系统支持IP隧道技术。
LVS调度算法
轮询(Round Robin, rr)
LVS将外部请求按顺序依次分配到集群中的每台机器上,均等对待每一台机器,不管服务器上实际的连接数和系统负载。
加权轮询(Weighted Round Robin, wrr)
LVS根据服务器的不同处理能力来调度访问请求,这样可以保证处理能力强的服务器处理更多的访问流量。
最少连接(Least Connections, lc)
LVS动态地将网络请求调度到已建立连接最少的服务器上。
加权最少连接(Weighted Least Connections, wlc)
权重高的服务器承受更多的连接,适用于服务器配置差异较大的场景。
源地址散列(Source Hashing, sh)
将请求的源IP地址作为key进行hash,从静态分配的散列表中找出对应服务器。
目标地址散列(Destination Hashing, dh)
将请求的目标IP地址作为key进行hash,从静态分配的散列表中找出对应服务器。
LVS配置
目前主要使用ipvsadm命令配置LVS
参考:https://www.cnblogs.com/liwei0526vip/p/6370103.html