部署 LVS-DR 群集
前言
LVS-DR(Linux Virtual Server - Direct Routing)是一种高效的负载均衡技术,广泛应用于企业网站和高并发的网络环境中。它通过将流量分配到多个服务器节点,提供高可用性和扩展性,保障应用的稳定运行。
本章结构
理解 LVS-DR 工作原理
掌握 LVS-DR 部署过程
LVS-DR 数据包流向分析
为便于理解 LVS-DR 的工作原理,假设 Client 与群集服务器位于同一网络中,数据包的流向如下:
1. 客户端发送请求到 VIP
步骤 1:客户端发起请求,目标是虚拟 IP(VIP)地址,这个 VIP 地址是负载均衡器(Director)和后端服务器共享的 IP 地址。
步骤 2:客户端使用 VIP 地址作为目标 IP 发送数据包,目标 IP 即为负载均衡器和后端服务器的共享地址。
2. 负载均衡器(Director)接收请求
步骤 3:LVS 负载均衡器接收到来自客户端的请求,查看数据包头部信息,尤其是目标 IP(VIP)。
步骤 4:负载均衡器根据负载均衡算法(如轮询、加权轮询或最少连接等)选择一个后端服务器(RealServer)来处理请求。例如,选择
RealServer_1
。
3. 负载均衡器修改 MAC 地址并转发请求
步骤 5:LVS 负载均衡器不会修改 IP 地址,它只会修改数据帧的 MAC 地址,将其修改为被选择的后端服务器的 MAC 地址。
步骤 6:负载均衡器将数据帧发送到局域网中的目标服务器(例如
RealServer_1
)。这时,数据包的目标地址已经是RealServer_1
的 MAC 地址。
4. 后端服务器(RealServer_1)接收请求
步骤 7:
RealServer_1
收到数据包后,解封装数据帧,并发现目标 IP 与服务器本身的 VIP 地址相匹配。步骤 8:
RealServer_1
处理这个请求,并生成响应数据包。
5. 后端服务器封装并发送响应
步骤 9:这一步是 LVS-DR 的核心区别。
RealServer_1
不通过负载均衡器返回响应,而是直接通过其 本地网卡 将响应数据包发送回客户端。步骤 10:
RealServer_1
使用 自身的网卡 和 本地网络 直接与客户端通信,源 IP 仍然是 VIP 地址(这是为了确保客户端无法区分请求来自哪个后端服务器)。
6. 客户端接收响应
步骤 11:客户端收到来自 VIP 的响应数据,认为它是由 VIP 返回的,实际上响应是由选择的后端服务器(如
RealServer_1
)提供的。
LVS-DR 中的 ARP 问题
在 LVS-DR 群集模式中,负载均衡器和后端服务器都使用相同的 VIP 地址,这会导致 ARP(地址解析协议)冲突和通信问题。为了避免这些问题,需要进行如下处理:
配置节点服务器不响应 ARP 请求:使用虚拟接口
lo:0
来绑定 VIP 地址,并修改内核参数arp_ignore=1
来禁止节点响应 ARP 请求。ARP 表更新问题:当 RealServer 发送响应报文时,路由器需要更新 ARP 表项,但默认情况下,它会将 VIP 对应的 MAC 地址更新为服务器的 MAC 地址,从而导致 VIP 的失效。为了解决这一问题,需要修改内核参数
arp_announce=2
,确保 ARP 请求使用发送接口的 IP 地址。
修改 /etc/sysctl.conf
文件中的相关配置:
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
构建 LVS-DR 群集的步骤
需求描述
环境配置:
一台 LVS 调度器,四台节点服务器。
每台节点服务器配置双网卡:
ens33
连接至外网,ens37
连接至内网。NFS 共享存储:将
/var/www/html
目录发布为 NFS 可写共享,供所有节点服务器访问。
LVS 调度器配置:
配置
ens33
和ens37
网络接口 IP 地址,并为ens33:0
配置 VIP 地址。安装
ipvsadm
软件包,使用轮询(RR)算法为虚拟服务器创建负载均衡规则。
节点服务器配置:
在每台节点服务器上绑定 VIP 地址,并配置虚拟接口
lo:0
来承载 VIP。设置内核参数,禁止节点服务器响应 VIP 的 ARP 请求。
共享存储配置:
在内网中配置 NFS 共享存储,为
/var/www/html
提供可写共享。在每台节点服务器上挂载 NFS 共享目录,并确保 Web 服务器(如 Apache)能够读取和写入共享目录。
测试网站配置:
在四台节点服务器上安装并启用 HTTP 服务器,创建不同的测试网页以区分各节点服务器。
集群访问测试
通过访问 http://192.168.10.72/
来确认 LVS 群集的工作状态。不同的客户端访问将显示不同的页面内容,表明流量成功分配到不同的节点。
本章总结
LVS-DR 工作原理:理解 LVS-DR 的数据包流向和负载均衡机制。
ARP 问题解决方案:解决 LVS-DR 中可能出现的 ARP 响应和 MAC 地址冲突问题。
LVS 配置步骤:学习 LVS 调度器和节点服务器的配置方法,确保群集能够稳定运行。
群集访问测试:通过实际测试,验证 LVS-DR 群集的负载均衡和高可用性。