获取主 VRRP 路由器 Keepalived 的状态

获取主 VRRP 路由器 Keepalived 的状态

我有两个 Linux 路由器 (RHEL 7) 参与了由 keepalived 软件包版本 2.0.20 提供的冗余 VRRP 配置。这两个路由器以前运行的是 RHEL 6 和 keepalived 版本 2.0.16,但我们最近将它们升级到了上述版本。

在我们升级之前,我有一个可以在备份路由器上运行的脚本,该脚本将使路由器接管为主路由器。该脚本将收集当前主路由器的优先级值,然后将其自己的优先级增加 1,然后重新启动 keepalived 服务。这将导致备份路由器接管为主路由器。

该脚本将通过发出以下命令来收集当前主路由器的值:

kill -s $(keepalived --signum=DATA) $(cat /var/run/keepalived.pid)
vrrpPriority='more /tmp/keepalived.data | grep -m1 "Master priority" | awk '{print $4}''

现在我们已经升级了,第一个命令似乎不再起作用了。该命令似乎执行时没有错误,但我从未在 /tmp/keepalived.data 中得到生成的文件。因此,第二个命令失败了,因为该文件不存在。

有没有更好或不同的方法来获取当前主路由器的优先级值?

另一个区别是,当我们在 RHEL 6 中运行时,keepalived 作为 upstart 脚本运行,而今天 keepalived 作为 systemd 服务运行。keepalived 的所有其他方面似乎都运行正常。

答案1

我已经能够让它正常工作。在故障排除过程中,我发现 selinux 阻止 Keepalived 将其状态转储到 /tmp 目录。在解决了 selinux 问题并创建了所需的 selinux 策略后,它开始按预期工作。

相关内容