我正在运行 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
}
答案 0 :(得分:0)
vrrp_script
接受rise
和/或fall
参数,以及weight
设置OK / KO转换需要多少错误或成功,以及根据此更改给予多少优先级。
我相信默认情况下它们都是未定义的,因此您必须明确定义它们。例如,要打开一个正常/失败退出代码,请设置:
vrrp_script check_test_override {
script "/usr/sbin/chktest.sh"
interval 2
weight 2
rise 1
fall 1
}