Keepalived 的 notify_master 钩子在节点升为 MASTER 后触发,需在 vrrp_instance 块内配置,通过可执行脚本调用 ip route 更新路由表,并确保幂等性与 backup 侧清理。

Keepalived 的 notify_master 是在节点升为 MASTER 状态后触发的钩子,适合用来执行路由更新、服务启停、DNS 刷新等动作。要实现“VIP 切换后自动更新路由表”,关键不是让 Keepalived 自己改路由,而是通过 notify_master 脚本调用系统命令(如 ip route)完成路由添加或替换。
下面分三步说明核心配置和操作要点:
配置 notify_master 指令位置
必须写在 vrrp_instance 块内(不能写在 global_defs 或 vrrp_sync_group 顶层),例如:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.100/24 dev eth0
}
notify_master /etc/keepalived/update_route.sh
}✅ 注意:脚本路径需可执行(
chmod +x),且 Keepalived 进程有权限执行(建议用 root 启动)。
Skill Weave Chains — 技能链路由引擎下载开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
编写 /etc/keepalived/update_route.sh 脚本
脚本接收 Keepalived 传入的三个参数:
-
$1:INSTANCE(固定值) -
$2:实例名(如VI_1) -
$3:状态(此处为MASTER)
示例脚本内容(添加一条去往业务网段的静态路由,并清除旧路由):
#!/bin/bash
VIP="192.168.10.100"
TARGET_NET="10.200.0.0/16"
GATEWAY="192.168.10.1"
case "$3" in
"MASTER")
# 删除可能存在的旧路由
ip route del $TARGET_NET 2>/dev/null
# 添加新路由,经 VIP 所在网关
ip route add $TARGET_NET via $GATEWAY dev eth0 src $VIP
;;
esac⚠️ 补充说明:
- 若需策略路由(如基于源地址选路),可用
ip rule+ip route table;- 若多网卡环境,务必确认
dev和src匹配实际绑定接口;- 建议加日志(如
echo "$(date): set route for $TARGET_NET" >> /var/log/keepalived-route.log)便于排障。
验证与注意事项
-
触发时机:脚本只在 成功升为 MASTER 后 执行,不保证 VIP 已完全生效(但
virtual_ipaddress通常已配置完成); -
幂等性:脚本应能重复执行不报错(如先
del再add); -
故障回退:
notify_backup可用于清理路由(如ip route del $TARGET_NET),避免备用节点残留错误路由; -
不要依赖
notify_fault更新路由:FAULT是异常态,此时 VIP 通常已释放,不适合做正向路由配置。
不复杂但容易忽略。



















