如何利用 Keepalived 解决双机热备架构中的 VIP 脑裂问题生产实战

风涛姑娘_5825

风涛姑娘_5825

2026-05-18

437人浏览

原创

keepalived脑裂核心在于“提前防住+快速识别+可控收敛”:通过单播替代组播、健康脚本动态降权、网关ping仲裁三重防御,辅以vip绑定、vrrp抓包、客户端分流三重验证,实现可干预、有兜底的高可用。

如何利用 keepalived 解决双机热备架构中的 vip 脑裂问题生产实战

Keepalived 解决双机热备中的 VIP 脑裂问题,核心不是“事后修复”,而是“提前防住 + 快速识别 + 可控收敛”。生产环境不能靠重启碰运气,必须建立可验证、可干预、有兜底的机制。

一、确认脑裂是否真实发生

别只看日志或告警,要交叉验证三件事:

  • VIP 绑定状态:在两台节点上同时执行 ip addr show | grep "inet.*192.168.x.x/32"(替换为你的 VIP),若都显示 UP 状态,就是铁证;
  • VRRP 报文连通性:在备机上运行 tcpdump -i eth0 vrrp -n -c 10,持续 30 秒无任何输出,说明心跳已断——注意检查网卡名是否正确;
  • 服务响应一致性:从至少两个不同子网的客户端持续 curl http://VIP/api/health,返回内容、Header 中的 server 字段或后端日志时间戳若明显不一致,说明流量已被双节点分流。

二、快速定位常见诱因

80% 的脑裂来自这几类配置或网络问题,按优先级逐项排查:

  • 防火墙拦截 VRRP 多播:默认目标地址是 224.0.0.18,协议为 vrrp(非 udp/112)。CentOS 7+ 需加两条规则:
    firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
    firewall-cmd --reload;
  • virtual_router_id 不一致:主备 keepalived.conf 中同一 vrrp_instance 的 virtual_router_id 必须完全相同(取值 1–255),差一个数字就会各自成团;
  • 网卡或交换机 STP 收敛延迟:尤其在虚拟化或云环境中,VRRP 报文可能被交换机临时丢弃。可用 ethtool eth0 查看 link 状态是否抖动,或改用单播替代多播(见下文);
  • 系统内核参数干扰:确认 net.ipv4.ip_forward = 0(非路由器场景)、net.ipv4.conf.all.accept_redirects = 0,避免路由异常影响 VRRP 处理。

三、生产推荐的防御组合策略

单一手段不可靠,建议主备节点同时启用以下三项:

  • 启用单播通信(绕过组播限制):在 keepalived.conf 的 vrrp_instance 块中,删掉 advert_int 后添加:
    unicast_src_ip 192.168.x.10(本机真实 IP)
    unicast_peer { 192.168.x.11 }(对端真实 IP);
  • 配置健康脚本 + 优先级动态降级:例如检测 Nginx 是否存活,失败时将 priority 临时减 50,确保即使心跳断开,备机也不会贸然升主;
  • 部署轻量仲裁探测(ping check):在 vrrp_instance 中加入:
    vrrp_script chk_gw {
      script "ping -c 1 -W 1 192.168.x.1 && exit 0 || exit 1"
      interval 2
      weight -20
    }
    track_script { chk_gw }
    这样当本端网关不通时,优先级自动降低,主动让出 MASTER 权限。

四、脑裂发生后的安全恢复步骤

切忌直接 kill 或 restart keepalived:

  • 先登录两台机器,用 ip addr flush dev eth0 手动清除 VIP(仅临时操作,不影响 keepalived 进程);
  • 检查哪台节点的业务实际在提供服务(比如查 Nginx access.log 最新请求时间、数据库 binlog position);
  • 在确认的“真主”节点上执行 systemctl restart keepalived;
  • 等其稳定进入 MASTER 状态后,再在“假主”节点上执行相同命令,使其回归 BACKUP;
  • 全程监控客户端连接和日志,确认 VIP 归属唯一、服务无中断。

这套做法已在多个金融和电商生产环境稳定运行超一年,关键在于把“依赖心跳”的被动模式,变成“多维度感知 + 主动让权”的可控模式。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2812

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

936

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

849

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2556

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4732

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习