LVS+Keepalived高可用架构通过LVS实现内核级四层流量转发,Keepalived基于VRRP协议管理VIP漂移并监控后端RS健康状态,主备节点自动切换保障服务不中断。

要实现四层负载的高可用,LVS 本身只负责流量转发,不自带故障检测和主备切换能力。必须搭配 Keepalived 才能构成真正意义上的高可用架构——即当主调度器(Director)宕机时,备用节点自动接管 VIP,服务不中断。
核心组件分工
LVS(IPVS模块):内核级四层转发引擎,处理 TCP/UDP 流量分发,支持 DR/NAT/TUN 等模式,性能极高但无健康检查、无自动漂移能力。
Keepalived:提供 VRRP 协议实现虚拟 IP(VIP)主备抢占,并通过自定义脚本或内置机制监控 LVS 后端 Real Server(RS)状态,同时可联动 ipvsadm 动态更新调度规则。
关键配置步骤
以下以最常用且推荐的 DR 模式 + Keepalived 主备为例:
- 在所有 LVS 节点(主/备)上启用 IPVS 内核模块:
modprobe ip_vs,并确认已加载:lsmod | grep ip_vs - 安装 keepalived:
yum install -y keepalived(CentOS/RHEL)或apt install -y keepalived(Debian/Ubuntu) - 配置 Keepalived 的
/etc/keepalived/keepalived.conf:- 主节点设
state MASTER,优先级如priority 100 - 备节点设
state BACKUP,优先级如priority 90 - 统一配置
vrrp_instance VI_1,指定 VIP(如192.168.10.100)、绑定网卡(如eth0)、组播地址(默认224.0.0.18) - 添加健康检查脚本(可选但强烈建议),例如定期用 curl 或 telnet 检查后端 RS 的 80 端口是否存活,失败则降低本机优先级触发切换
- 主节点设
- 确保主备节点时间同步(
chronyd或ntpd),避免 VRRP 报文被误判为过期 - 后端 Real Server 需配置好 ARP 抑制(DR 模式必需),防止响应包绕过 LVS 直接回给客户端。常见做法是在 RS 上执行:
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announce
并将 VIP 绑定到 lo 接口(如ip addr add 192.168.10.100/32 dev lo)
验证与日常维护要点
启动服务后,检查 VIP 是否仅在主节点生效:ip a | grep 192.168.10.100
查看 Keepalived 日志:journalctl -u keepalived -f,确认 VRRP 状态和切换事件
手动模拟主节点宕机(如 systemctl stop keepalived),观察备节点是否在 1–3 秒内接管 VIP 并继续提供服务
使用 ipvsadm -Ln 查看当前调度规则和后端连接数,确认流量实际分发正常
为什么不用 NAT 模式做高可用?
NAT 模式下请求和响应都经过 Director,虽部署简单,但 Director 成为单点瓶颈,吞吐受限于其 CPU 和带宽;而 DR 模式仅请求入向走 LVS,响应由 RS 直接返回客户端,极大释放调度器压力,更适合生产环境的大并发场景。Keepalived 的高可用设计正是为弥补 DR 模式下 Director 单点风险而存在。

















