Centos 7 HA 防火墙/路由器 systemctl ospfd

Centos 7 HA 防火墙/路由器 systemctl ospfd

我正在尝试使用 keepalived(仅 VRRP)、conntrackd 和 OSFP 在 quagga 下创建 HA 防火墙/路由器对,所有这些都作为标准 Centos 和软件包安装。这类似于解决非对称 HA 防火墙/路由器但是我使用的是 OSPF 而不是 BGP,并且我的子网都是内部的。

为了避免不对称路由和状态防火墙的问题,我正在尝试 OP 提到但后来没有再次提及的建议,“啊,在备份状态下停止 BGP 守护进程并在主状态下启动它是否可以?”我在状态更改期间由 keepalived 调用的 primary-backup.sh 脚本中添加了一些 systemctl 命令:

#!/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 仍在原始主服务器上运行,而未在原始备份服务器上运行。

我做错了什么?我应该在哪里查找有关实际发生情况的更多详细信息?欢迎提出所有建议。

答案1

当我将 primary-backup.sh 复制到我想要运行的位置时,我忘记了 SELinux。我运行

chcon -t keepalived_unconfined_script_exec_t /etc/conntrackd/primary-backup.sh

并且权限问题已修复。

相关内容