У меня есть несколько веб-серверов под двумя серверами keepalived, и для проверки работоспособности реального веб-сервера я использую этот фрагмент конфигурации keepalived

      TCP_CHECK                 # healthchecker : HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
      {
         connect_timeout 3              # Timeout connection, sec
         nb_get_retry 3         # number of get retry
         delay_before_retry 3
         connect_port 80
         }

Но кроме apache мне также нужно проверить, работает ли mongos на этом сервере, и если одно из приложений не подходит, мне нужно вытащить сервер из списка реальных серверов? Итак, как я могу добавить логические выражения в конфигурации keepalived.

1 ответ1

1

Используйте MISC_CHECK:

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

Где /etc/keepalived/servicecheck.sh - это сценарий оболочки, который выполняет всю полезную проверку за вас:

#!/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 выведет сервер из строя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .