讲师中心 微信公众号
AI工具推荐 视频效率加速

Nginx 中 Keepalived 状态同步机制原理及优化

冬磊酱_5753

冬磊酱_5753

发布时间:2026-08-17 12:39:31

|

831人浏览过

|

来源于php中文网

原创

Keepalived 不同步 Nginx 状态,而是通过进程、端口、HTTP 多级健康检查主动探测,并基于 VRRP 状态机驱动 VIP 漂移;配置 vrrp_script 与 track_script 实现强绑定降级,结合双 VIP、nopreempt 和单播等优化提升高可用性。

nginx 中 keepalived 状态同步机制原理及优化

Keepalived 本身不直接同步 Nginx 的运行状态,它通过独立的健康检查机制间接感知 Nginx 状态,并据此触发 VIP 漂移。所谓“状态同步”,本质是 Keepalived 主动探测 + 决策 + 切换的过程,而非进程间实时通信或状态复制。

Keepalived 如何感知 Nginx 状态

Keepalived 不依赖 Nginx 主动上报,而是主动发起多层级探测,判断其是否真正可用:

  • 进程层检查:用 kill -0 $(cat /var/run/nginx.pid) 或 pgrep nginx 验证 Nginx 主进程是否存在;但仅存在不等于可服务,需进一步验证
  • 端口层检查:用 nc -z 127.0.0.1 80 或 timeout 2 bash -c 'echo > /dev/tcp/127.0.0.1/80' && echo ok 确认监听端口已就绪且能响应连接
  • 应用层检查(推荐):发送 HTTP 请求验证真实服务能力,例如:
    curl -s --fail -o /dev/null http://127.0.0.1/healthz || exit 1
    配合 Nginx 返回 200 OK 的自定义健康接口(如 location /healthz { return 200 'OK'; }),避免仅端口通但配置错误或后端全挂的情况

VIP 漂移不是“同步”,而是 VRRP 状态机驱动

VRRP 协议决定了主备角色切换逻辑,Keepalived 是其实现载体:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
  • 主节点(Master)持续发送 VRRP 广播/组播报文(默认每秒1次),携带自身优先级和状态
  • 备节点(Backup)监听报文;若连续丢失 advert_int × 3(默认3秒)未收到,则判定 Master 失联,升为 Master 并绑定 VIP
  • 切换动作是原子性的:解绑本机 VIP → ARP 抑制 → 绑定 VIP → 发送免费 ARP(Gratuitous ARP)通知局域网更新 MAC 映射
  • 无“同步延迟”概念,只有“检测窗口”——可通过 advert_int(通告间隔)和 authentication 加密校验缩短故障发现时间

避免“假存活”:让 Keepalived 与 Nginx 生命周期强绑定

常见陷阱是 Nginx 进程崩溃但 Keepalived 仍在运行,VIP 滞留在不可用节点上。优化关键在于将健康检查失败直接导致 Keepalived 主动降级:

  • 在 vrrp_script 中定义检查脚本,返回非0即视为失败
  • 用 track_script 将该脚本关联到 vrrp_instance,并设置 fall 2 rise 2(连续2次失败才降级,2次成功才恢复)防止抖动
  • 关键配置示例:
    vrrp_script chk_nginx {<br>  script "/etc/keepalived/check_nginx.sh"<br>  interval 2<br>  weight -5<br>  fall 2<br>  rise 2<br>}

    其中 weight -5 表示脚本失败时,当前节点优先级自动减5;当低于备节点优先级,即触发切换

高可用进阶:双 VIP + 非抢占模式防脑裂

单 VIP 架构下备用机闲置,且易因网络分区引发脑裂(双 Master)。优化方向包括:

  • 双 VIP 互为主备:两台节点各自作为某个 VIP 的 Master,实现负载分担;任一节点故障,另一节点接管两个 VIP
  • 启用 nopreempt:备节点升主后不再因原主恢复而抢回 VIP,避免频繁漂移;仅当当前 Master 故障时才切换
  • 单播替代组播:在云环境或 VLAN 限制场景,VRRP 组播可能被禁用;改用 unicast_src_ip 和 unicast_peer 配置点对点心跳,提升可靠性
  • 增加仲裁机制:引入第三方节点(如 Redis、Quorum Disk)作为投票源,当两节点心跳中断时,由仲裁方决定 VIP 归属,彻底规避脑裂

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

383

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3347

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

6065

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

561

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1476

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3958

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

122

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

457

2026.01.13

C++运算符基础入门
C++运算符基础入门

本专题详细讲解了C++运算符的类型、语法与使用方法,涵盖算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符及其他特殊运算符,并通过代码示例解析优先级与结合性。

0

2026.10.09

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn