在CentOS系统中构建企业级负载均衡集群,LVS(Linux Virtual Server)凭借其高性能和基于内核层的转发能力,成为了众多架构师的首选方案,要在生产环境中实现高可用与高扩展性,核心上文归纳是:采用LVS与Keepalived相结合的架构,利用Keepalived的健康检查和VRRP热备机制,不仅能自动管理LVS规则,还能解决Director Server的单点故障问题,从而构建一套稳定、高效的四层负载均衡系统。
LVS工作模式与架构选型
在实施安装前,必须明确LVS的三种工作模式及其适用场景,这是架构设计的基石,NAT模式(网络地址转换)配置简单,但所有流量都经过调度器,容易成为性能瓶颈,仅适用于小规模集群,TUN模式(IP隧道)要求后端服务器支持IP隧道协议,网络环境较为复杂,而DR模式(直接路由)是目前应用最广泛、性能最优的模式,在DR模式下,调度器仅处理入站请求的调度,后端服务器直接将响应数据包返回给客户端,极大减轻了调度器的负载,本文将以DR模式为核心,结合Keepalived进行详细部署。
环境准备与基础配置
为了保证部署的顺利进行,建议准备三台CentOS服务器,两台作为Director Server(主备调度器),配置双网卡,一个网卡连接外网,另一个连接内网(VIP所在网段),一台或多台作为Real Server(后端真实服务器),仅配置内网网卡,需要在所有服务器上关闭SELinux或配置为Permissive模式,并关闭Firewalld防火墙(或配置相应的iptables规则放行VIP流量),避免因安全策略阻断ARP广播或数据包转发。
在内核参数优化方面,必须在Director Server上开启IP转发功能,修改/etc/sysctl.conf文件,添加net.ipv4.ip_forward = 1并执行sysctl p使其生效,这是LVS作为网关进行数据包转发的必要条件。
安装与配置Keepalived及ipvsadm
虽然可以直接使用ipvsadm命令编写脚本管理LVS规则,但在生产环境中,Keepalived提供了更优雅的解决方案,在两台Director Server上,通过yum install keepalived ipvsadm y安装所需软件,ipvsadm是LVS的管理工具,Keepalived负责调用它。
配置Keepalived是核心环节,编辑/etc/keepalived/keepalived.conf文件,主要包含vrrp_instance和virtual_server两个部分,在vrrp_instance中,定义主备状态(MASTER/BACKUP)、优先级、网卡接口及认证密码,在virtual_server中,定义VIP地址、端口、轮询算法(如wrr加权轮询)以及后端Real Server的健康检查策略。
关键配置示例如下:
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
} 这里lb_kind DR指定了工作模式,persistence_timeout解决了会话保持问题,防止同一用户的请求分发到不同的后端服务器。
后端Real Server的配置细节
LVS DR模式的一个常见陷阱在于ARP问题,由于VIP同时配置在Director Server和所有Real Server上,若不处理,Real Server可能会响应针对VIP的ARP请求,导致流量被错误拦截,必须在Real Server上进行特殊处理。
在Real Server的lo接口(回环接口)上绑定VIP地址,并设置子网掩码为255.255.255.255,这是为了限制该IP仅在本地有效,不对外进行ARP广播,可以使用ip addr add命令临时添加,或编写/etc/sysconfig/networkscripts/ifcfglo:0文件永久生效。
必须调整内核参数以抑制ARP响应,在/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 arp_ignore=1表示只响应目的IP为本机入站接口IP的ARP请求;arp_announce=2表示使用IP地址最合适的网卡来发送ARP通告,执行sysctl p后,Real Server将不再抢占VIP的流量,保证数据包正确由Director Server进入,再由Real Server处理。
验证与故障排查
部署完成后,验证步骤至关重要,在Director Server上使用ipvsadm Ln查看LVS规则表,确认VIP和后端RS的权重是否正确,通过tail f /var/log/messages观察Keepalived的日志,检查VRRP选举状态和健康检查结果。
进行压力测试时,可以使用curl命令访问VIP,观察返回结果是否轮询分发,如果发现无法访问,首先检查物理网络连通性,其次确认Real Server的Web服务(如Nginx或Apache)是否正常开启,最后检查ARP抑制参数是否生效,一个专业的排查技巧是在Real Server上使用tcpdump i lo host VIP抓包,确认数据包是否到达了回环接口。
相关问答
Q1:LVS的DR模式和NAT模式在实际应用中最大的区别是什么? A:最大的区别在于数据包的流向和性能瓶颈,NAT模式下,请求和响应都必须经过调度器,调度器需要修改源目IP地址,这会消耗大量的CPU和带宽资源,容易成为瓶颈,而DR模式下,调度器仅处理请求的调度,响应数据包由后端服务器直接绕过调度器返回给客户端,调度器处理的数据量大幅减少,因此DR模式具有极高的吞吐量,适合构建大规模集群。
Q2:为什么在LVS DR模式中,Real Server不需要配置默认网关指向Director Server? A:因为在DR模式下,Real Server接收到的数据包的目的IP是VIP(虽然是在lo接口上),但源IP是客户端的真实IP,Real Server处理完请求后,会根据自身的路由表直接查找客户端IP的网关进行回包,而不是将回包发给Director Server,如果回包经过Director Server,就会破坏DR模式的架构优势,Real Server的默认网关通常指向其所在局域网的出口路由器,确保回包路径最短。
希望这份详细的部署指南能帮助您顺利搭建LVS环境,如果您在配置过程中遇到关于ARP冲突或Keepalived脑裂的问题,欢迎在评论区留言,我们一起探讨解决方案。

