Zachowany warunek wielokrotny TCP_CHECK

0

Mam kilka serwerów internetowych pod dwoma serwerami utrzymywanymi i aby sprawdzić stan prawdziwego serwera WWW, używam tego fragmentu konfiguracji 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
         }

Ale oprócz apache muszę również sprawdzić, czy na tym serwerze działa mongos, a jeśli jedno z tych aplikacji nie jest w porządku, muszę wyciągnąć serwer z listy prawdziwych serwerów? Jak więc mogę dodać wyrażenia logiczne w konfiguracji keepalived.

Edik Mkoyan
źródło
1
Myślę, że jest bardziej prawdopodobne, że znajdziesz odpowiedź na to pytanie w usłudze ServerFault
MariusMatutiae

Odpowiedzi:

1

Użyj MISC_CHECK:

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

Gdzie /etc/keepalived/servicecheck.sh to skrypt powłoki, który sprawdza wszystkie przydatne funkcje:

#!/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

To tylko przykład. Możesz zbudować dowolną ilość logiki w swoim skrypcie. Dowolny status powrotu 1 spowoduje, że serwer pozostanie bezczynny.

user3063045
źródło