Keepalived 配置双机热备怎么保证服务连续性

酷明酱_7523

酷明酱_7523

2026-07-09

575人浏览

原创

keepalived双机热备核心依赖vrrp vip漂移、健康检查、网络对齐三重机制协同:virtual_router_id、interface、子网需严格一致,防火墙放行vrrp协议;健康检查须真实探测服务状态;主备state、priority、authentication须匹配;验证需模拟故障并观测全链路响应。

keepalived 配置双机热备怎么保证服务连续性

Keepalived 实现双机热备,服务连续性的核心不是“装完就自动可用”,而是靠三重机制协同生效:VRRP 协议驱动的 VIP 漂移、精准绑定的健康检查、以及网络层严丝合缝的对齐。任一环节出错,VIP 就卡住不动,用户请求直接 502 或超时。

VIP 必须能真实漂移,不能只靠配置“看起来对”

VIP 漂移是服务连续的前提,但前提是它真能动起来:

  • virtual_router_id 必须完全一致(1–255 范围内),且同一局域网中不可重复;哪怕只配一个实例,ID 不同也会导致两台都抢 VIP 或全退为 BACKUP
  • interface 值必须和 ip -br a 输出的网卡名完全匹配(如 ens33、enp0s3、eth0),CentOS 7/8/9 默认命名差异大,写错就无法绑定 VIP
  • VIP 和物理 IP 必须在同一子网,且不能与任何物理 IP、网关、广播地址冲突;例如物理 IP 是 192.168.100.11/24,VIP 就只能设为 192.168.100.x/32
  • 防火墙必须放行 VRRP 协议(协议号 112,非端口),命令为:firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept'

健康检查必须感知真实服务状态,不能只看网络通不通

默认 Keepalived 只检测本机网络层存活,Nginx 进程挂了、配置崩了、worker 全卡死,VIP 仍留在主节点——这才是 502 的真正来源:

悟空
悟空

一款AI办公效率工具,主要用于阿里巴巴旗下钉钉推出的AI原生智能体工作台,适合需要提升相关任务效率的用户。

下载
  • 写一个简单脚本(如 /etc/keepalived/check_nginx.sh),用 killall -0 nginx 或 curl -s http://127.0.0.1/health | grep "ok" 判断服务真实可用性
  • 脚本权限设为 755,属主 root,末尾明确用 exit 0 表示健康、exit 1 表示异常(其他非 0 返回值会被忽略)
  • 在 keepalived.conf 中通过 vrrp_script 引入,并在 vrrp_instance 里用 track_script 绑定;不绑定等于没写
  • 避免用 systemctl is-active nginx,keepalived 子进程通常没加载 systemd 环境变量,容易误判

主备角色与切换逻辑必须无歧义

state、priority、virtual_router_id 是识别主备的铁三角,三者必须成对校验:

  • state MASTER 只能出现在主节点,备节点必须写 state BACKUP;写反了不报错,但 VIP 死活不漂移
  • priority 主节点建议设 100,备节点设 90 或更低,差值 ≥10 更稳妥,避免因短暂网络抖动触发误切换
  • authentication 密码必须一致,类型选 PASS 即可,密码明文传输但仅限内网,安全风险可控
  • 主备节点的 router_id 应不同(如 NGINX_MASTER / NGINX_BACKUP),虽不影响漂移,但便于日志排查

验证连续性不能只看“VIP 是否在备机”

真正验证服务连续性,要模拟真实故障并观察全链路响应:

  • 手动停掉主节点 Nginx:systemctl stop nginx,等 2–3 秒后执行 ip a 确认 VIP 已漂到备机
  • 立刻从客户端 curl VIP 地址(如 curl http://192.168.100.107),确认返回正常页面且内容与备机一致
  • 再 kill 主节点 keepalived 进程:pkill keepalived,观察备机是否立即升为 MASTER 并持续提供服务
  • 恢复主节点后,观察其是否自动降为 BACKUP(priority 较低),VIP 是否仍留在备机——这是“非抢占”设计的关键体现

相关文章

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

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

下载

相关标签:

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

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

120

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

100

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

80

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

280

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

180

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

140

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

80

12

热门下载

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

精品课程

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