
一、为什么需要 Keepalived我们上篇讲解了LVS 负载均衡可以实现后端多台 Web 节点流量均分、提升业务并发能力但存在一个致命问题LVS 调度器是单点故障。如果仅部署单台 LVS 调度器一旦该机器宕机、系统崩溃、网卡故障整个集群所有业务会全部瘫痪用户无法访问网站。Keepalived 的核心作用就是解决单点故障实现高可用HA通过 VRRP 协议实现多台调度器故障自动切换、VIP 自动漂移保证业务 7×24 小时不间断运行。简单分工总结LVS负责四层流量分发、负载均衡解决「并发压力」问题Keepalived负责节点健康检测、故障自动切换解决「单点宕机」问题二、Keepalived 核心简介Keepalived 是一款基于 VRRP 虚拟路由冗余协议的开源高可用软件最初专为 LVS 集群设计如今广泛用于 Nginx、MySQL、Redis、LVS 等几乎所有需要高可用的服务场景。核心三大能力VRRP 心跳协商多台节点通过组播心跳通信选举主备角色服务健康检测实时监控本机服务、网卡、进程状态异常自动降级故障自动转移Failover主节点故障备节点秒级接管 VIP 和业务无感切换三、VRRP 协议核心原理必懂Keepalived 所有高可用能力全部依托VRRP 协议实现。3.1 VRRP 基础概念VRRP 可以将多台物理服务器虚拟成一台虚拟网关/虚拟服务节点对外共用同一个 VIP虚拟 IP。集群内节点分为两种角色Master主节点正常工作时唯一持有 VIP、对外承接业务默认每 1 秒发送 VRRP 心跳通告组播地址224.0.0.18Backup备节点平时静默待命不持有 VIP持续监听主节点心跳3.2 故障切换机制Master 正常运行持续发送心跳包Backup 接收正常集群状态不变Master 宕机/服务异常停止发送心跳Backup 超时未收到心跳默认 3 秒判定主节点故障备节点之间根据优先级priority重新选举优先级最高的节点成为新 Master新 Master 发送免费 ARP 广播全网更新 VIP 对应的 MAC 地址完成VIP 漂移3.3 核心参数规则virtual_router_id虚拟路由 ID同一集群所有节点必须完全一致priority 优先级数值越大优先级越高默认 100主节点建议设 110备节点 100advert_int心跳通告间隔默认 1 秒认证配置集群节点认证密码同集群必须一致防止非法节点接入四、Keepalived 两种主流架构4.1 主备模式Master/Backup——生产最常用一台主节点、一台备节点。正常情况下主节点工作、备节点待命主故障备秒级接管主恢复后抢占 VIP 恢复原位默认抢占模式。优点架构简单、稳定可靠、运维成本低适配绝大多数生产场景缺点备用节点平时闲置资源未充分利用4.2 双主模式Master/Master两台节点同时为 Master配置两个不同 VRID、两个 VIP互相作为对方备机两台机器同时承接业务实现资源复用。优点资源利用率高双机同时负载缺点配置稍复杂需规避抢占冲突五、LVSKeepalived 高可用集群实战5.1 实验环境承接上一篇 LVS DR 模式实验环境实现 LVS 调度器高可用主机角色物理IPVIP服务LVS-Master主调度器10.1.8.1010.1.8.100ipvsadm、keepalivedLVS-Backup备调度器10.1.8.2010.1.8.100ipvsadm、keepalivedWeb1RS节点10.1.8.11lo绑定10.1.8.100NginxWeb2RS节点10.1.8.12lo绑定10.1.8.100NginxWeb3RS节点10.1.8.13lo绑定10.1.8.100Nginx前提所有 RS 节点已完成lo 绑定 VIP ARP 抑制配置LVS DR 规则已提前配置好。5.2 所有调度器安装 Keepalived# 安装yuminstall-ykeepalived# 关闭防火墙、selinux实验环境必关systemctl stop firewalld setenforce0# 开机自启systemctlenablekeepalived5.3 Master 节点配置10.1.8.10备份默认配置新建专属配置文件mv/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bakcat/etc/keepalived/keepalived.confEOF global_defs { router_id LVS_MASTER # 节点标识备机需不同 } # VRRP 实例配置 vrrp_instance VI_1 { state MASTER # 角色为主节点 interface ens33 # 本机业务网卡 virtual_router_id 51 # 集群ID主备必须一致 priority 110 # 优先级高于备机 advert_int 1 # 心跳间隔1秒 authentication { # 集群认证 auth_type PASS auth_pass 123456 } virtual_ipaddress { # 漂移VIP 10.1.8.100/24 dev ens33 } } EOF5.4 Backup 节点配置10.1.8.20mv/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bakcat/etc/keepalived/keepalived.confEOF global_defs { router_id LVS_BACKUP } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 100 # 优先级低于主机 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 10.1.8.100/24 dev ens33 } } EOF5.5 启动服务并验证两台调度器依次执行systemctl start keepalived# 查看VIP只有Master会持有VIPipaddr正常现象10.1.8.10 拥有 10.1.8.100 VIP10.1.8.20 无 VIP六、故障切换模拟核心验证6.1 模拟主节点宕机# 主节点停止服务systemctl stop keepalived# 立刻在备机查看VIPipaddr现象备节点瞬间接管 VIP业务不中断客户端访问 VIP 依旧正常负载均衡。6.2 模拟主节点恢复systemctl start keepalived现象主节点优先级更高自动抢占回 VIP业务重新切回主节点。七、Keepalived 健康检测进阶必备默认 Keepalived 只检测本机进程是否存活无法检测 LVS、Nginx 服务故障。比如 Keepalived 进程正常但 LVS 规则丢失、Nginx 宕机业务依旧瘫痪。解决方案自定义脚本健康检测服务异常自动降权、切换备机。核心逻辑定时检测业务服务异常则降低本机优先级主动释放 VIP。八、高频踩坑总结实战必看坑1双机都抢到 VIP脑裂原因主备节点网络不通、防火墙拦截 224.0.0.18 组播心跳、VRID 不一致、密码不一致解决关闭防火墙、放行组播、主备严格统一 VRID 和认证密码坑2主节点恢复后不抢回 VIP原因默认抢占模式开启但服务启动延迟备机已稳定持有 VIP解决开启nopreempt非抢占模式或调整启动顺序坑3VIP 配置成功但无法访问原因LVS 规则未同步、后端 RS ARP 抑制失效、lo 网卡 VIP 丢失解决双调度器同步 LVS 规则核对 RS 所有配置坑4配置文件报错启动失败原因括号、空格、换行格式错误Keepalived 配置语法严格排查命令keepalived -t检测配置语法九、全文总结LVS 解决并发Keepalived 解决单点故障二者结合是企业最经典的四层高可用负载均衡架构。Keepalived 基于 VRRP 协议实现 VIP 漂移核心依靠优先级、心跳组播、自动选举三大机制。生产首选主备模式稳定无坑适配绝大多数业务场景。必须搭配自定义健康检测避免进程存活但业务宕机的隐形故障。排障优先排查心跳通信、配置一致性、防火墙、后端 RS 状态。