Várias condições de keepalive TCP_CHECK

0

Eu tenho poucos servidores web em dois servidores keepalived, e para verificar a saúde de um servidor web real eu uso este fragmento de configuração 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
         }

Mas além do apache eu também preciso verificar se o mongos está rodando nesse servidor, e se um dos aplicativos não está ok eu preciso retirar o servidor da lista de servidores reais? Então, como posso adicionar expressões lógicas na configuração do keepalived.

    
por Edik Mkoyan 28.12.2015 / 09:31

1 resposta

1

Use MISC_CHECK:

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

Onde /etc/keepalived/servicecheck.sh é um script de shell que faz toda a verificação útil para você:

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

Este é apenas um exemplo. Você pode construir qualquer quantidade de lógica no seu script. Qualquer status de retorno de 1 fará com que o keepalived deixe o servidor fora de serviço.

    
por 10.02.2016 / 21:00

Tags