Я недавно обновил свой keepalived кластер от версии 1.2.10 до 1.2.13. Я заметил, что мой сценарий отслеживания, какой basicly просто проверяет с помощью ping-запросов другую систему, больше не работает. Я использую простой сценарий удара и возвращаю 0, если все прекрасно, и получатель онлайн, и 1, если получатель не доступен.
Если Сценарий возвращает 1, кластерные изменения и другой маршрутизатор становятся активными, иначе все в порядке.
keepalived.conf:
global_defs {
router_id r_id
}
vrrp_script chk_myscript {
script "/etc/keepalived/chk_available.sh"
interval 4 # check every 4 seconds
fall 2 # require 2 failures for KO
}
vrrp_instance r_id {
state MASTER
interface enp0s3
virtual_router_id 10
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
10.0.25.3/24 dev enp0s3
}
track_script {
chk_myscript
}
}
Сценарий:
#!/bin/sh
ping_return()
{
ping -c2 8.8.8.8 > /dev/null #it's just an example ip
if [ $? -eq 0 ]
then
return 0
else
return 1
fi
}
ping_return
После стартового процесса keepalived сообщения журнала сказали мне это:
VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
ROUTER keepalived_vrrp[2800]: Using LinkWatch kernel netlink reflector...
ROUTER keepalived_vrrp[2801]: VRRP_Instance(INSTANCE) NOW in FAULT state
Я уже считал журнал изменений, потому что я думал, что мог получить некоторую полезную информацию. Но не было ничего полезного (по крайней мере, для общего новичка как я).
Мой вопрос теперь:
Почему не делает работы keepalived как в бывшей версии и что я должен сделать, чтобы позволить проверке активности сделать, это - работа снова?
SELinux запрещает выполнение пользовательского сценария.
chcon -t keepalived_unconfined_script_exec_t /etc/keepalived/chk_available.sh