目录

一、LVS简介

二、LVS三种工作模式详解

1.NAT模式

2.TUN模式

3.DR模式

三、LVS负载均衡调度算法

1.轮询调度算法(Round Robin, RR)

2.加权轮询调度算法(Weighted Round Robin, WRR)

3.最小连接调度算法(Least Connections, LC)

4.加权最小连接调度算法(Weighted Least Connections, WLC)

5.基于局部性的最少链接调度算法(Locality-Based Least Connections, LBLC)

6.带复制的基于局部性最少链接调度算法(Locality-Based Least Connections with Replication, LBLCR)

7.目标地址散列调度算法(Destination Hashing, DH)

8.源地址散列调度算法(Source Hashing, SH)

9.最短的期望延迟调度算法(Shortest Expected Delay Scheduling, SED)

10.无需队列调度算法(Never Queue Scheduling, NQ)

四、LVS实战案例

1.部署NAT模式案例

1.1实验环境

1.2实验配置

1.启用内核路由功能

2.安装ipvsadm

3.添加并查看调度策略

4.保存并启动服务

5.设置web服务

6.测试

2.部署DR模式集群案例

​编辑


一、LVS简介

LVS(Linux Virtual Server)是一种基于Linux的高性能虚拟服务器集群系统,主要用于实现负载均衡。LVS通过Linux内核中的IPVS模块实现了基于IP负载均衡的功能,能够将来自网络的请求分配给后端的多个服务器,从而提供高可用性和伸缩性。这种技术在处理大规模网络请求时尤其有用,例如大型网站和在线服务,能够有效防止单点故障并提升服务的可靠性和性能。LVS的工作原理可以简要概括为“请求分发”和“响应返回”两个主要环节。当用户请求发送至LVS虚拟IP地址(VIP)时,LVS调度器会根据预设的算法(如轮询、最少连接等)决定将请求发送至哪一台后端服务器。后端服务器处理完请求后,将响应数据直接返回给用户,从而完成整个请求-响应流程。

LVS具有多种工作模式,主要包括NAT(网络地址转换)模式、DR(直接路由)模式和TUN(隧道)模式。每种模式都有其特定的应用场景和优缺点:

NAT模式:所有请求和响应都需要经过LVS调度器,可能导致调度器成为性能瓶颈。
DR模式:要求LVS调度器和后端服务器在同一物理网络内,响应不经过调度器直接返回给用户,性能较高。
TUN模式:通过IP隧道技术封装请求,允许调度器和后端服务器不在同一物理网络内,但配置和管理较为复杂

二、LVS三种工作模式详解

1.NAT模式

基本原理:NAT模式即网络地址转换模式,通过修改数据报头,使得内部私有IP地址能够访问外部网络,同时允许外部用户访问企业内部的服务。
工作流程:当用户请求发送至负载均衡器的虚拟IP(VIP)时,调度器会选择后端的一个真实服务器,并在转发请求前修改数据包的目标地址和端口。真实服务器处理完请求后,响应数据包会返回给调度器,调度器再次修改数据包的源地址和端口为VIP及相应端口,然后发送回用户。
优缺点:优点包括部署方便、灵活性高,支持任意操作系统的真实服务器;缺点是伸缩性有限,当服务器数量增加时,调度器本身可能成为性能瓶颈,因为所有的请求和响应报文都需要经过调器。

2.TUN模式

基本原理:TUN模式即IP隧道模式,通过IP封装技术将原始数据包封装并添加新的包头,从而实现数据请求和响应分离。
工作流程:调度器接收到用户请求后,通过IP隧道将请求转发给真实服务器。真实服务器直接处理请求并将响应数据包返回给用户,而不需再经过调度器。
优缺点:优点是提高了系统的伸缩性,降低了调度器的负担;缺点是需要所有服务器支持"IP Tunneling"或IP封装协议,并且服务器可以与外部网络直接连接。

3.DR模式

基本原理:DR模式即直接路由模式,要求调度器与后端服务器在同一个局域网内,通过修改MAC地址实现请求的直接路由转发。
工作流程:用户请求发送至调度器的VIP,调度器选择真实服务器后,将数据帧的MAC地址修改为选中服务器的MAC地址,然后通过交换机将数据帧发给真实服务器。真实服务器直接将响应数据包返回给用户,源地址为VIP。
优缺点:优点是没有IP隧道的开销,对集群中的服务器无特殊要求;缺点是要求调度器与后端服务器在同一物理网络中,且VIP地址需要在调度器与后端所有服务器之间共享。

三、LVS负载均衡调度算法

根据前面的介绍,我们了解了LVS的三种工作模式,但不管实际环境中采用的是哪种模式,调度算法进行调度的策略与算法都是LVS的核心技术,LVS在内核中主要实现了一下十种调度算法。LVS的10大调度算法包括轮询调度算法、加权轮询调度算法、最小连接调度算法、加权最小连接调度算法、基于局部性的最少链接调度算法、带复制的基于局部性最少链接调度算法、目标地址散列调度算法、源地址散列调度算法、最短的期望延迟调度算法和无需队列调度算法。这些算法各有其特点和应用场景,具体如下:

1.轮询调度算法(Round Robin, RR)

该算法按顺序将请求依次分配给每台服务器,假设每台服务器的处理能力相同,从而实现请求的平均分配。

2.加权轮询调度算法(Weighted Round Robin, WRR)

该算法在轮询的基础上增加了权重的概念,根据各台服务器的处理能力不同给予不同的权重,处理能力强的服务器分配更多的请求。

3.最小连接调度算法(Least Connections, LC)

该算法将新请求分配给当前连接数最少的服务器,适用于服务器性能相近的环境。

4.加权最小连接调度算法(Weighted Least Connections, WLC)

结合了最小连接和权重,按照服务器的连接数和权重进行综合考量,权重高的服务器处理更多连接。

5.基于局部性的最少链接调度算法(Locality-Based Least Connections, LBLC)

该算法主要用于Cache集群系统,根据请求的目标IP找出最近使用的服务器,如果该服务器可用且未超载则分配请求。

6.带复制的基于局部性最少链接调度算法(Locality-Based Least Connections with Replication, LBLCR)

该算法维护一个目标IP到一组服务器的映射,并按最小连接原则从服务器组中选择一台未超载的服务器处理请求。

7.目标地址散列调度算法(Destination Hashing, DH)

该算法使用请求的目标IP地址作为散列键,从静态分配的散列表中找到对应的服务器。

8.源地址散列调度算法(Source Hashing, SH)

该算法使用请求的源IP地址作为散列键,同样从静态分配的散列表中找到对应的服务器。

9.最短的期望延迟调度算法(Shortest Expected Delay Scheduling, SED)

该算法基于WLC算法,通过计算每个服务器的响应时间估计值来分配请求,旨在减少请求的总体响应时间。

10.无需队列调度算法(Never Queue Scheduling, NQ)

该算法直接将请求分配给当前连接数为零的服务器,从而避免排队延迟。

四、LVS实战案例

1.部署NAT模式案例

1.1实验环境
主机名ipvip模式
lvs172.25.254.100192.168.5.100NAT、仅主机
server1172.25.254.10null仅主机
server2172.25.254.20null仅主机

lvs网络配置

server1网络配置

server2网络配置

1.2实验配置
1.启用内核路由功能

2.安装ipvsadm
[root@lvs ~]# dnf install ipvsadm -y
3.添加并查看调度策略

4.保存并启动服务

5.设置web服务

6.测试

2.部署DR模式集群案例

nodeipvip角色模式
client192.168.5.200null客户端 NAT
router

192.168.5.100

172.25.254.100

null 路由器仅主机NAT
lvs

172.25.254.50

lo:172.25.254.200/32调度器仅主机
server1172.25.254.10lo:172.25.254.200/32真实服务器1仅主机
server2172.25.254.20lo:172.25.254.200/32真实服务器2仅主机

lvs配置

router配置

server配置

添加vip

ip a a 172.25.254.200/32 dev lo

配置lvs

测试

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐