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

Linux怎么在Keepalived脚本中通过退出状态码控制VIP主动让出

夜瑶大大_6138

夜瑶大大_6138

发布时间:2026-10-18 11:10:10

|

441人浏览过

|

来源于php中文网

原创

notify脚本中exit 0/1/2仅影响日志记录,不控制VIP切换;真正决定VIP行为的是vrrp_script的退出码:exit 0权重不变,exit 1触发降权切换,exit 2以上标记失败但不额外处理。

linux怎么在keepalived脚本中通过退出状态码控制vip主动让出

Keepalived notify 脚本里怎么用 exit 0/1/2 控制 VIP 行为

Keepalived 的 notify 脚本本身不决定 VIP 切换,它只是通知钩子;真正控制 VIP 让出的关键,在于脚本退出状态码是否被 Keepalived 主进程识别并触发状态回退。只有当脚本在 notify_stop 或 notify_fault 阶段返回非 0 状态时,Keepalived 才可能提前终止当前状态(比如从 MASTER 强制降级),但更可靠的方式是让脚本主动调用 killall -TERM keepalived 或修改配置后 reload——不过这不是靠 exit 码,而是靠副作用。

真正能被 exit 码直接影响的,是 Keepalived 启动阶段的健康检查脚本(vrrp_script 中的 script):它的退出码直接映射为权重增减依据。而 notify 脚本的 exit 码仅用于日志记录,Keepalived 不据此改变状态机。

  • exit 0:表示 notify 执行成功,Keepalived 继续当前角色(MASTER/BACKUP)
  • exit 1 或任意非 0:Keepalived 会记一条 warning 日志(如 "notify script returned error"),但不会自动切换或释放 VIP
  • 想让 VIP 主动让出,必须在 notify 脚本里显式执行 ip addr del 或触发 reload,例如:
    ip addr del 192.168.1.100/24 dev eth0 && systemctl reload keepalived

vrrp_script 的 exit 码才是 VIP 切换的实际开关

如果你的目标是“服务异常时让出 VIP”,正确做法不是依赖 notify,而是写一个 vrrp_script,用它的退出码驱动权重变化,再配合 track_script 触发状态重算。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 脚本返回 exit 0 → 检查通过,权重不变或按配置增加
  • 脚本返回 exit 1 → 检查失败,权重减少(weight -2),若导致总权重 ≤ 对端,则触发 BACKUP 切换
  • 脚本返回 exit 2 及以上 → Keepalived 会标记该 script 为 “failed” 并计入日志,但不会额外处理
  • 注意:fall 2 和 rise 1 表示连续失败 2 次才触发降权,避免瞬时抖动误判

示例脚本(检测 Nginx 是否响应):

#!/bin/bash
if curl -f http://127.0.0.1/health > /dev/null 2>&1; then
  exit 0
else
  exit 1
fi

为什么 notify_fault 里 exit 1 不会让 VIP 离开

因为 notify_fault 是在 Keepalived 已经判定自己进入 FAULT 状态后才执行的,此时 VIP 通常已被移除(取决于 preempt_delay 和 nofailback 设置)。你在里面 exit 1,只是让 Keepalived 多记一行错误日志,并不能加速或干预这个过程。

  • FAULT 状态下 VIP 是否还保留,由 interface、virtual_ipaddress 的 nopreempt 和 preempt_delay 共同决定,和 notify 返回值无关
  • 常见误解:以为在 notify_master 里 exit 1 就能强制切走 VIP —— 实际上 Keepalived 不会因此回滚状态机
  • 真要“紧急让出”,唯一稳妥方式是在脚本中直接执行:ip addr flush dev eth0 && pkill -USR2 keepalived(触发重载并清空地址)

reload vs killall:哪个更适合主动让出 VIP

用 systemctl reload keepalived 是推荐方式,它会触发 VRRP 实例重新协商,当前 MASTER 会发送 priority 0 的通告,让对端快速接管;而 killall -TERM keepalived 会导致 VIP 瞬间消失,中间有几秒不可用窗口,且对端需等待 advert_int × 3 才判定超时。

  • reload 前确保配置已更新(例如把本机 priority 改成比对端低),否则 reload 后仍可能抢回 VIP
  • 如果只是临时让出,可在 reload 前加一句:echo "stopping VIP on $(hostname)" > /tmp/keepalived.manual.stop,然后在 vrrp_script 中检查该文件是否存在并返回 exit 1
  • 不要在 notify 脚本里 sleep 或阻塞太久(默认超时 5 秒),否则 Keepalived 会杀掉子进程并标记为 failed
Keepalived 的状态决策高度依赖配置驱动而非脚本返回值,exit 码只有在 vrrp_script 场景下才有直接控制力;notify 脚本里的 exit 值,本质上只是日志信号,别指望它能翻盘。

热门AI工具

更多
蛙蛙写作

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

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

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

UP简历
UP简历 Hot

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

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

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

WorkBuddy

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

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

4070

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3473

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2653

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

6450

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

6102

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3553

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

3045

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

3279

2023.07.25

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

20

2026.10.16

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Miniconda官方安装文档
Miniconda官方安装文档

共0课时 | 0人学习

phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 186人学习

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

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