Keepalived множественная проверка TCP условия

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

      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.

3
задан Edik Mkoyan
24.03.2023 9:39 Количество просмотров материала 2843
Распечатать страницу

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

1
отвечен user3063045 2023-03-25 17:27

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх