【发布时间】:2023-10-30 03:33:01
【问题描述】:
我正在运行 keepalived 来平衡虚拟 IP。
我写了一个简单的脚本来检查是否设置了变量,如果是,“绕过”节点并故障转移到“备份”节点。它退出了我可以用正确的变量判断的内容。
但显然,keepalived 没有看到那个退出代码。我哪里出错了?该脚本是从keepalived.conf 文件运行的——是的,它被设置为可执行文件。如果我“破坏”代码(出现语法错误),它会相应地失败。
#!/bin/bash
set -e
echo "$vrrpTVIPS"; #for testing purposes only
if [ "$vrrpTVIPS" != "bypass" ]; then
exit 0
else
exit 1
fi
如果vrrpTVIPS == bypass,该脚本应该以代码1 退出(当我自己运行它并检查echo $? 我得到1 时它会这样做)。为什么keepalived 脚本没有看到这一点并采取相应的行动(它记录脚本退出代码,并且没有任何退出状态的条目1)?
我也尝试过扭转这种情况,但无济于事:
#!/bin/bash
set -e
echo "$vrrpTVIPS";
if [ "$vrrpTVIPS" == "bypass" ]; then
exit 1
else
exit 0
fi
添加信息:
这是来自keepalived.conf 在/etc/keepalived/keepalived.conf 中的相关信息:
vrrp_script check_test_override {
script "/usr/sbin/chktest.sh"
internal 2
}
在文件后面的 V-Instance 配置中:
track_script {
check_test_override
}
【问题讨论】:
-
你用什么keepalived配置来调用这个脚本(例如
vrrp_script或类似的)? -
是的,我在帖子中发布了上面的复制粘贴以供审核。
标签: bash