高可用架构 怎么配置双机热备实现秒级切换

云雪大大_5226

云雪大大_5226

2026-09-18

162人浏览

原创

秒级切换双机热备的核心是keepalived检测节奏压缩(advert_int=1、fail_count/rise_count=2)、nginx健康接口精准反馈(/healthz联动upstream状态)、网络层arp优化与平滑重启(worker_shutdown_timeout=3s),三者协同确保1–3秒内完成业务无感切流。

高可用架构 怎么配置双机热备实现秒级切换

要实现秒级切换的双机热备,核心不是堆组件,而是让 Keepalived 的检测足够快、Nginx(或数据库/Redis等服务)的状态反馈足够准、网络层响应足够及时。主备之间不靠“猜”,而靠可验证的健康信号驱动切换。

Keepalived 必须调紧检测节奏

默认配置下,Keepalived 通常每3秒发一次 VRRP 通告,连续3次失败才切换——这已超5秒,远达不到秒级要求。必须主动压缩:

  • advert_int 设为 1:VRRP 通告间隔压到每秒1次
  • fail_count 和 rise_count 均设为 2:连续2次检测失败即降级,2次成功即升回,避免抖动误切
  • 禁用 preempt(备机侧):加 nopreempt,防止主节点恢复后抢 VIP 导致反复漂移
  • priority 差值 ≥ 50:主备优先级拉开差距,配合 nopreempt 更稳

健康检查不能只看端口通不通

用 kill -0 或 nc -z 检查 Nginx 进程或端口,只能说明“进程活着”或“端口开着”,但无法反映业务是否就绪。真实场景中,Nginx 可能卡在 reload、上游全挂、限流触发等状态,此时它仍监听6379或80端口,却无法正常服务。

Flow Studio
Flow Studio

Flow Studio是一款AI文本写作工具,FlowGPT推出的AI长视频生成工具。

下载
  • Nginx 配置暴露 /healthz:添加 location /healthz { return 200 'ok'; },确保该路径不受鉴权、限流、upstream 异常影响
  • Keepalived 调用 curl 检查该接口:脚本中用 curl -f -s http://127.0.0.1:80/healthz -o /dev/null,非200即判为异常
  • 若代理后端服务,建议 healthz 联动 upstream 状态:例如用 ngx_http_upstream_check_module 或轻量健康探针服务返回真实就绪态

服务重启必须平滑,避免切流丢请求

切换瞬间如果旧 Nginx worker 还在处理连接,而新实例尚未承接,就会丢包。这不是 Keepalived 的问题,而是服务自身未做好退出准备。

  • 永远用 nginx -s reload,不用 stop/start:保证旧 worker 继续处理已有连接
  • 配置 worker_shutdown_timeout 3s:给旧 worker 最多3秒完成存量请求再退出
  • 操作系统层面关闭 ARP 干扰:执行 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 和 echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce,让 VIP 的 ARP 响应更准确及时

验证必须实测业务流量中断时间

日志里看到 “Transition to MASTER” 不代表业务已恢复。真正关键的是客户端感知到的中断时长。

  • 用 watch + curl 持续探测:例如 watch -n 0.2 'curl -I -s -w "%{http_code}\n" -o /dev/null http://VIP/healthz 2>/dev/null'
  • 模拟主节点宕机(如 systemctl stop keepalived),观察从第一个非200到下一个200之间的时间差
  • 压测时同步抓包:确认 TCP RST 或重传是否发生在切换窗口内,排除客户端重试掩盖真实延迟

相关文章

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

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

下载

相关标签:

高可用架构

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

相关专题

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

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

2023.08.15

457

5

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

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

2023.09.08

920

5

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

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

2023.09.19

2972

5

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

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

2023.10.09

996

5

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

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

2023.10.17

889

5

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

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

2023.10.17

454

3

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

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

2023.10.18

2696

4

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

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

2023.10.20

5032

4

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

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

2023.10.20

787

5

热门下载

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

精品课程

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

共6课时 | 54.7万人学习

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

共89课时 | 133.7万人学习