怎么实现 Nginx 集群节点之间的实时心跳同步

夏辰吖_3133

夏辰吖_3133

2026-06-08

892人浏览

原创

nginx本身不内置集群节点间心跳同步机制,需依赖keepalived等外部工具实现:keepalived通过vrrp协议周期性发送组播心跳包(udp 224.0.0.18),master节点广播、backup节点监听,连续丢失3秒心跳即触发vip漂移,配合nginx进程检测脚本实现服务级高可用。

怎么实现 nginx 集群节点之间的实时心跳同步

Nginx 本身不内置集群节点间的心跳同步机制,它是一个无状态的反向代理或 Web 服务器。所谓“Nginx 集群节点之间的实时心跳同步”,实际是指通过外部高可用组件(如 Keepalived 或 Heartbeat)在多台 Nginx 机器之间建立心跳检测与故障转移能力,确保任一节点宕机时流量能自动切到健康节点——这不是 Nginx 自身同步配置,而是由外围工具保障的“服务级心跳”。

核心目标不是让 Nginx 实时同步状态,而是让整个反向代理层具备感知节点存活性、自动接管 VIP 的能力。


✅ 心跳检测的本质:谁在发?谁在收?怎么判故障?

心跳不是 Nginx 进程自己发的,而是由 Keepalived(主流)或 Heartbeat(较老)这类 HA 工具周期性执行的:

  • Keepalived 默认使用 VRRP 协议广播/组播心跳包(UDP 224.0.0.18),每秒 1 次(可调)
  • 每个节点运行一个 Keepalived 实例,分 MASTER / BACKUP 角色
  • MASTER 节点持续发送 VRRP 广播;BACKUP 节点监听,若连续丢失多个包(如 advert_int 1 + dead_interval 3 → 3 秒无心跳即切换),就触发 VIP 接管

⚠️ 注意:这不是应用层 HTTP 心跳(比如 curl -I http://nginx/health),而是网络层协议级心跳,延迟低、开销小、更可靠。


✅ 实现步骤(以 Keepalived + 双 Nginx 为例)

1. 确保基础环境一致

  • 两台服务器(如 192.168.4.136 和 192.168.4.137)都已安装并启动 Nginx
  • 关闭防火墙或放行 VRRP 组播(iptables -I INPUT -d 224.0.0.18 -j ACCEPT)
  • 时间同步(chronyd 或 ntpd,误差建议

2. 安装并配置 Keepalived

在两台机器上安装:

yum install keepalived -y

主节点(MASTER)配置 /etc/keepalived/keepalived.conf:

Nginx Hosting
Nginx Hosting

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

下载
global_defs {
    router_id NGINX_MASTER
}
vrrp_script chk_nginx {
    script "/usr/bin/pgrep nginx > /dev/null || systemctl start nginx"
    interval 2
    weight 2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.4.100/24 dev eth0 label eth0:1
    }
    track_script {
        chk_nginx
    }
}

备节点(BACKUP)只需改两项:

  • state BACKUP
  • priority 90(必须低于主)

3. 添加 Nginx 存活性检查脚本(可选但推荐)

上面的 chk_nginx 脚本会定期检查 Nginx 进程,挂了就拉起;若仍不可用,Keepalived 会主动降权或停止自身,触发 VIP 切换。

你也可以换成 HTTP 健康检查:

script "curl -f http://127.0.0.1/healthz || exit 1"

前提是 Nginx 配置了该路径返回 200。

4. 启动服务

systemctl enable keepalived
systemctl start keepalived

验证 VIP 是否生效:

ip addr | grep 192.168.4.100

✅ 补充说明:为什么不用 Nginx 自己做心跳?

  • Nginx 是事件驱动模型,没有原生多节点协调模块
  • upstream 中的 max_fails / fail_timeout 是对后端服务(如 Tomcat)的探测,不是对同集群其他 Nginx 节点的心跳
  • 若真需要跨 Nginx 节点共享状态(如限流计数、缓存一致性),需引入 Redis、etcd 或专用服务发现组件(Consul + registrator),但这属于「状态同步」,不属于「心跳检测」

✅ 故障切换效果验证

  • 手动停掉主节点的 Nginx:nginx -s stop → Keepalived 检测失败 → 尝试拉起 → 若失败则触发 VIP 迁移
  • 主节点 Keepalived 进程被 kill → 备节点约 3 秒内接管 VIP,客户端请求无感知中断(TCP 连接会重连,HTTP 层基本无感)
  • 主节点恢复后,根据 nopreempt 或 preempt_delay 设置决定是否抢回 VIP(生产建议关闭抢占,避免抖动)

不复杂但容易忽略

相关文章

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

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

下载

相关标签:

nginx

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

相关专题

更多
nginx 重启
nginx 重启

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

2023.07.27

403

5

nginx 配置详解
nginx 配置详解

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

2023.08.04

3587

6

nginx配置详解
nginx配置详解

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

2023.08.04

6325

6

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

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

2024.02.23

581

5

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

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

2024.07.09

1496

5

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

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

2024.08.07

3978

3

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

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

2026.01.13

122

12

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

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

2026.01.13

477

23

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

2026.03.16

159

12

热门下载

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

精品课程

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

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习