首页 > 精选问答 >

问 keepalived 高可用架构 原理部署与故障切换详解

2026-11-08 18:37:39
最佳答案

答

keepalived 高可用架构核心是基于 VRRP 协议实现多台服务器之间虚拟 IP 漂移,用来解决单台业务服务器单点故障问题,主流场景一般是主备架构或者主主架构,把对外提供服务的 VIP 绑定在主节点,当主节点宕机或者服务异常的时候,备节点自动接管虚拟 IP,客户端访问地址保持不变,不需要修改客户端配置,很多运维人员容易把 keepalived 理解成负载均衡软件,其实它本身核心功能是高可用故障转移,它可以搭配 Nginx HAProxy MySQL Redis 等业务组件使用,判断这套架构是否成立,第一步确认节点之间 VRRP 组号一致,第二步确认优先级权重抢占策略,第三步配置健康检测脚本,第四步验证故障切换动作,最终可以实现业务持续在线,降低单点故障带来的业务中断,这套架构适合中小型生产环境,优点是部署轻量资源占用低,缺点是单组 VRRP 只能维护一个 VIP,大规模集群场景会搭配其他集群管理方案。

核心工作原理

keepalived 底层依靠 VRRP 虚拟路由冗余协议,同一 VRRP 组内所有节点会互相发送组播心跳报文,主节点按照固定间隔发送 VRRP 通告报文,备节点持续监听心跳,正常状态主节点持有 VIP,对外响应请求,如果备节点在预设超时时间内收不到主节点心跳,就会判定主节点失效,按照组内优先级最高的节点升级成新主,完成 VIP 漂移,同时可以执行自定义脚本,比如重启业务进程,通知告警,这就是健康检测的作用,VRRP 报文使用组播通信,要求节点之间二层网络互通,如果跨三层网段,普通组播无法正常通信,需要做特殊规划。

常见架构模式对照表

架构模式节点角色VIP 数量特点适用场景
主备模式一个主节点 多个备节点单个 VIP同一时间只有主节点对外提供服务,备节点空闲待命大多数 Web 高可用业务
主主模式多节点同时为主多个 VIP每个节点都持有独立 VIP,节点互相作为对方备份,资源利用率更高资源紧张,需要充分利用服务器
多备模式一个主节点 多台备用节点单个 VIP多级冗余,主故障之后按优先级依次接管对可靠性要求更高业务

核心配置模块说明

第一 全局配置块,设置本机标识,邮件告警参数,故障切换之后发送邮件通知运维人员。

第二 VRRP 实例块,定义 VRRP 实例名称,虚拟 IP,组号,优先级,抢占模式,通告间隔,认证密码,这里优先级数字越大,越有机会成为主节点,默认开启抢占,也就是原主节点恢复之后,优先级更高会抢回 VIP,也可以关闭抢占,避免业务反复抖动。

第三 健康检测脚本模块,track_script 检测业务进程端口,比如检测 Nginx 进程是否存活,端口是否监听,如果业务进程挂掉,脚本返回失败,keepalived 会自动降低本机优先级,触发 VIP 漂移,这个模块非常关键,只检测服务器宕机不够,业务进程假死的时候,服务器还在线,心跳正常,单纯 VRRP 心跳检测就发现不了故障。

第四 通知脚本,在进入主节点状态,进入备节点状态,故障切换完成的时候执行自定义脚本,实现日志记录告警通知。

完整部署流程清单

1 所有节点操作系统安装 keepalived 软件包,确认防火墙放行 VRRP 组播流量,开启 ip 转发。

2 编写 keepalived 配置文件,主节点和备节点配置保持 VRRP 组号一致,认证密码相同,主节点优先级高于备节点。

3 编写业务健康检测脚本,给脚本添加执行权限,在配置文件里面关联这个检测脚本。

4 启动 keepalived 服务,设置开机自启,查看日志确认主备选举成功,主节点可以看到 VIP 绑定成功。

5 做故障演练,手动停掉主节点业务进程,或者直接关机,观察备节点是否成功接管 VIP,业务访问是否恢复。

6 测试抢占功能,恢复原主节点,确认是否按照策略抢回 VIP,记录切换耗时。

架构优缺点深度分析

优势部分,程序轻量,不需要额外复杂集群组件,配置简单,切换速度快,一般秒级完成 VIP 漂移,和 Nginx 等业务适配非常成熟,社区资料多,运维维护门槛低。

劣势部分,依赖二层组播,跨三层环境部署受限,没有自带负载均衡调度能力,只做高可用,主备架构备节点长期闲置,资源浪费,存在脑裂风险,也就是主备网络中断,两边都认为对方失效,两个节点同时持有 VIP,会造成 IP 冲突,脑裂需要额外通过脚本或者仲裁机制规避。

脑裂风险与优化方案

脑裂是 keepalived 高可用架构最经典风险,产生原因是节点之间 VRRP 心跳链路断开,主节点和备节点互相收不到心跳,双方都升级为主,VIP 同时存在两台机器,客户端访问出现异常,优化方案可以增加独立心跳专线,配置仲裁检测,在切换脚本里面增加 ARP 校验,也可以配合第三方仲裁节点,当检测到双主状态的时候自动关闭其中一台的 VIP,生产环境必须做脑裂演练,不能只做单节点宕机测试。

【常见问题】

问题 1 keepalived 高可用架构 是不是自带负载均衡

回答 1 keepalived 高可用架构本身不具备负载均衡调度能力,它核心是 VRRP VIP 漂移高可用,一般搭配 Nginx 或者 HAProxy,由负载均衡组件负责请求分发,keepalived 负责故障切换。

问题 2 keepalived 高可用架构 主备切换大概需要多久

回答 2 keepalived 高可用架构切换是秒级完成,切换耗时主要取决于 VRRP 通告间隔和超时阈值,默认参数下一般 1 到 3 秒就可以完成 VIP 漂移。

问题 3 keepalived 高可用架构 什么是脑裂

回答 3 keepalived 高可用架构里面脑裂指主备节点心跳链路中断,两个节点同时判定对方故障,同时持有 VIP,产生 IP 冲突,属于架构典型风险点。

问题 4 keepalived 高可用架构 可以跨三层网段部署吗

回答 4 keepalived 高可用架构默认 VRRP 使用组播,要求二层互通,普通跨三层网段不能直接通信,需要额外做组播路由或者特殊改造才能实现。

【免责申明】

本文内容仅作为运维技术学习参考,生产环境部署 keepalived 高可用架构需要结合实际网络业务做测试验证,架构存在脑裂切换抖动等风险,本文不替代官方手册,不构成生产上线方案承诺。