Behalten Sie die mehrfache Bedingung TCP_CHECK bei

1214
Edik Mkoyan

Ich habe nur wenige Webserver unter zwei Keepalived-Servern, und um den Zustand eines echten Webservers zu überprüfen, verwende ich dieses Fragment einer Keepalived-Konfiguration

 TCP_CHECK # healthchecker: HTTP_GET | SSL_GET | TCP_CHECK | SMTP_CHECK | MISC_CHECK { connect_timeout 3 # Timeout-Verbindung, sek nb_get_retry 3 # Anzahl der Wiederholversuche delay_vorfore_retry 3 Verbindungsport 80 } 

Aber neben Apache muss ich auch überprüfen, ob auf diesem Server Mongos laufen, und wenn einer dieser Anwendungen nicht in Ordnung ist, muss ich den Server aus der Liste der realen Server ziehen. Wie kann ich also logische Ausdrücke in der config von keepalived hinzufügen?

0
Ich denke, es ist wahrscheinlicher, dass Sie auf ServerFault eine Antwort auf diese Frage finden MariusMatutiae vor 8 Jahren 1

1 Antwort auf die Frage

1
user3063045

MISC_CHECK verwenden:

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

Dabei ist /etc/keepalived/servicecheck.sh ein Shell-Skript, das alle nützlichen Überprüfungen für Sie durchführt:

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

Dies ist nur ein Beispiel. Sie können eine beliebige Menge an Logik in Ihrem Skript erstellen. Jeder Rückgabestatus von 1 führt dazu, dass keepalived den Server außer Betrieb setzt.