Keepalived 多个条件 TCP_CHECK

Keepalived 多个条件 TCP_CHECK

我在两个 keepalived 服务器下有几个 Web 服务器,为了检查真实 Web 服务器的运行状况,我使用了以下 keepalived 配置片段

      TCP_CHECK # 健康检查器:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
      {
         connect_timeout 3 # 连接超时时间,秒
         nb_get_retry 3 # 重试次数
         重试前延迟 3
         连接端口 80
         }

但是除了 apache 之外,我还需要检查 mongos 是否在该服务器上运行,如果其中一个应用程序不正常,我需要从真实服务器列表中拉出该服务器?那么如何在 keepalived 的配置中添加逻辑表达式。

答案1

使用 MISC_CHECK:

MISC_CHECK {
   misc_path "/etc/keepalived/servicecheck.sh"
} 

/etc/keepalived/servicecheck.sh 是一个 shell 脚本,可以为您完成所有有用的检查:

#!/bin/sh

# Check if mongo is running
mongo --eval "db.stats()"
RESULT=$?   # returns 0 if mongo eval succeeds

if [ $RESULT -ne 0 ]; then
    echo "mongodb not running"
    exit 1
else
    echo "mongodb running!"
fi

# Check if apache is running
ps auxw | grep apache2 | grep -v grep > /dev/null

if [ $? != 0 ]
then
        exit 1
fi

这只是一个例子。您可以在脚本中构建任意数量的逻辑。任何返回状态 1 都会导致 keepalived 使服务器停止服务。

相关内容