keepalived负责lvs调度节点高可用与健康检查,lvs在内核态执行四层负载均衡;dr模式需同网段、arp抑制、回环绑定vip,并配置ip_vs规则及keepalived的vrrp与virtual_server。

Keepalived与LVS协同工作的核心逻辑
Keepalived本身不直接分发HTTP请求,它负责管理LVS的调度节点高可用——即通过VRRP协议实现主备切换,同时监控LVS内核模块(ip_vs)及真实服务器(Real Server)健康状态。LVS才是真正执行四层负载均衡的组件,工作在内核态,支持DR、NAT、TUN三种模式;生产环境普遍选用DR模式,因性能最高、延迟最低。
DR模式下LVS+Keepalived部署关键步骤
需确保所有节点在同一物理网段,且真实服务器(Apache节点)配置好ARP抑制和回环地址:
- 在每台Apache服务器上添加VIP到lo接口,并禁用其响应ARP请求:
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
ip addr add 192.168.1.100/32 dev lo - LVS调度器上启用ip_vs模块并配置DR规则:
modprobe ip_vs
ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -g - Keepalived配置中指定vrrp_instance绑定VIP,并在virtual_server块里定义健康检查方式(如TCP_CHECK或HTTP_GET)和后端RS列表
Keepalived配置要点与常见避坑项
配置文件/etc/keepalived/keepalived.conf需注意:
- router_id必须全集群唯一,避免脑裂;priority值主节点设为100以上,备节点低10以上
- advert_int建议设为1秒,过长会导致故障转移延迟;nopreempt仅在BACKUP节点启用,防止主恢复后抢占
- real_server健康检查若用HTTP_GET,需确保Apache返回200且页面内容稳定;超时参数timeout、rise、fall要合理,例如rise 3 fall 3 timeout 3
- 日志默认输出到syslog local0,可修改rsyslog配置定向到独立文件便于排障
验证与持续观测方法
上线前务必逐项验证:
- 用ipvsadm -ln确认LVS规则已加载、状态为ActiveConn/InActConn非零
- 用ip a查看VIP是否出现在MASTER节点的网卡上,BACKUP节点无该地址
- 手动停掉MASTER的keepalived进程,观察VIP是否3秒内漂移到BACKUP,且业务无中断
- 模拟某台Apache宕机(systemctl stop httpd),检查Keepalived日志是否触发real_server down,并从ipvs规则中剔除










