Я пытаюсь создать пару брандмауэра / маршрутизатора HA, используя keepalived (только VRRP), conntrackd и OSFP под quagga, все они установлены как стандартные пакеты Centos и. Это похоже на установку, описанную в Решение проблемы с асимметричным межсетевым экраном / маршрутизатором высокой доступности но я использую OSPF вместо BGP, и все мои подсети внутренние.
Чтобы избежать проблемы асимметричной маршрутизации и брандмауэров с отслеживанием состояния, я пробую предложение, упомянутое OP, но не упомянутое снова: «Ах, это просто сработает, чтобы остановить демон BGP в состоянии резервного копирования и запустить его в господствующее состояние? " Я добавил несколько команд systemctl в сценарий primary-backup.sh, который вызывается keepalived во время изменения состояния:
#!/usr/bin/bash
SYSTEMCTL_BIN=/usr/bin/systemctl
OSPFD=/usr/sbin/ospfd
CONNTRACKD_BIN=/usr/sbin/conntrackd
CONNTRACKD_LOCK=/var/lock/conntrack.lock
CONNTRACKD_CONFIG=/etc/conntrackd/conntrackd.conf
case "$1" in
primary)
#
# start OSPF daemon
#
command="${SYSTEMCTL_BIN} start $OSPFD"
output=$(command)
rc=$?
if [ ${rc} -eq 0 ]
then
logger "DEBUG: keepalived successfully invoked '${command}', output <${output}>"
else
logger "ERROR: keepalived failed to invoke '${command}'; return code ${rc}, output <${output}>"
fi
...
;;
backup)
#
# stop OSPF daemon
#
command="${SYSTEMCTL_BIN} stop $OSPFD"
output=$(command)
rc=$?
if [ ${rc} -eq 0 ]
then
logger "DEBUG: keepalived successfully invoked '${command}', output <${output}>"
else
logger "ERROR: keepalived failed to invoke '${command}'; return code ${rc}, output <${output}>"
fi
...
Например, когда я принудительно изменяю состояние на главном устройстве с основного на резервное, я вижу такую запись в / var / log / messages на исходном мастере:
Apr 29 13:18:12 xxxxxx-a logger: DEBUG: keepalived successfully invoked '/usr/bin/systemctl stop /usr/sbin/ospfd', output <>
и вот так в исходной резервной копии:
Apr 29 13:18:12 xxxxxx-b logger: DEBUG: keepalived successfully invoked '/usr/bin/systemctl start /usr/sbin/ospfd', output <>
Все остальное работает должным образом (VIP-адреса перемещаются с исходного мастера на исходную резервную копию, а записи conntrack синхронизируются). Однако, несмотря на сообщения журнала DEBUG, ospfd все еще работает на исходном главном сервере и не работает в исходной резервной копии.
Что я делаю не так? Где мне искать более подробную информацию о том, что на самом деле происходит? Все предложения приветствуются.
Когда я скопировал primary-backup.sh туда, где я хотел, чтобы он запускался, я забыл о SELinux. Я побежал
chcon -t keepalived_unconfined_script_exec_t /etc/conntrackd/primary-backup.sh
и проблема с разрешениями была исправлена.