首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >keepalived检查哪个是主节点

keepalived检查哪个是主节点
EN

Stack Overflow用户
提问于 2013-08-23 12:04:08
回答 2查看 15.1K关注 0票数 6

我有2个应用程序服务器,都配置为运行php cron作业,但只有1个可以在任何时候运行作业。因为我已经将keepalived用于其他目的,所以我在考虑在cron作业中使用一些逻辑来检查节点是否具有虚拟ip,然后执行作业。因此,从理论上讲,即使两台服务器同时运行cron作业,也只有一台服务器会执行“真正的”作业。

但我的问题是如何检查节点是否有vip?有人能在这方面给我一些建议吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-02-15 05:43:27

我不得不这么做。如果你只是想检查你所在的盒子是否浮动了公网ip,并且ip是,比如说a.b.c.d,那么运行一下就足够了:

代码语言:javascript
复制
ip a | grep a.b.c.d

我非常确定,在bash中,您可以将该命令的输出用作条件本身。如果机器没有浮动公共ip,则输出应为空,因此计算结果为false,如果ip匹配,则输出结果应为true。

票数 6
EN

Stack Overflow用户

发布于 2019-03-20 05:24:15

以下是我建议调用is_primary来执行此操作的通用脚本:

代码语言:javascript
复制
#!/bin/bash
#
# Tells you if this node is the primary or secondary with keepalived

conf=/etc/keepalived/keepalived.conf
# Not sure why I can't do this in 1 step, but this works:
vip=$(expr "$(cat $conf)" : '.*\bvirtual_ipaddress\s*{\s*\(.*\)/*}')
vip=`expr "$vip" : '\([^ ]*\)' | sed 's/\./\\\\./g'`
if ip addr | grep -q "$vip"
then    echo Primary ; exit 0
else    echo Secondary ; exit 1
fi
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18394496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档