Table des matières
Check oco
oco (Ovh Check Out) est un petit serveur en perl “made in ovh”, qui sert à sortir ou rentrer une machine d'une ip load balancing.
Installation
(cf. http://guides.ovh.net/Oco)
cd /root wget ftp://ftp.ovh.net/made-in-ovh/oco/oco-ded.tar.gz -O oco-ded.tar.gz tar xf oco-ded.tar.gz cd oco-ded-1.15 ./install.sh # on vérifie telnet localhost 79 # normalement, ça répond KO (pas de http sur le host) mais ça répond cd /usr/local/oco/ # on vire le test par defaut mv bin/60sec/http bin/examples/ # et on met le notre touch bin/60sec/http chmod +x bin/60sec/http
Ensuite, pour sortir une machine du cluster
# sortie cluster, depuis le host echo 305 > /usr/local/oco/result/KOvolontaire # remise dans le cluster rm /usr/local/oco/result/KOvolontaire
Personnalisation
Par rapport au script “de base” livré avec oco, on peut personnaliser ses tests, par exemple :
cd /usr/local/oco/ # on vire le test par defaut mv bin/60sec/http bin/examples/ # et on met le notre touch bin/60sec/http chmod +x bin/60sec/http
Ce fichier bin/60sec/http contient par ex
#!/bin/bash TMP=/tmp/http.oco # on met la liste des résultats considérés comme bon (on peux en mettre un seul) EXPECTED_RESULTS='truc1_OK truc2_OK truc3_OK' IPLB=<notre ip lb> OUT_VALUE=302 OUT_FILE=/usr/local/oco/result/$(basename $0) echo KO > $TMP wget http://${IPLB}/ -O $TMP > /dev/null 2>&1 for r in $EXPECTED_RESULTS do [ $r = $(<$TMP) ] && OUT_VALUE=200 # On a trouvé une valeur correcte done echo $OUT_VALUE > $OUT_FILE
Il reste à coder ce que vous voulez tester (dans le langage que vous voulez) dans le script appellé par défaut sur http:${IPLB}/ ===== Monitoring ===== Pour vérifier le résultat d'oco, et remonter un mail d'alerte <code bash> #!/bin/sh LOG=/tmp/$(basename $0).$(date '+%Y-%m-%d_%H') LOGOLD=/tmp/$(basename $0).$(date –date '1 hours ago' '+%Y-%m-%d_%H') DATE=$(date '+%Y-%m-%d_%H%M') # Les binaires TELNET=/usr/bin/telnet SED=/bin/sed MAIL=/usr/bin/mail MV=/bin/mv res=$(TELNET 127.0.0.1 79 2>/dev/null|$SED -nre '4 s/[0-9]+ ([OK]+).*/\1/p') if [ “$res” != “OK” ] then # Ce script est appelé fréquemment, on envoie un mail par heure max if [ ! -f $LOG ] then echo “Résultat d'un appel oco ($TELNET 127.0.0.1 79) :” > $LOG $TELNET 127.0.0.1 79 » $LOG 2>&1 $MAIL -a “Content-Type: text/plain; charset=UTF-8” -s “$DATE OCO HS sur $(hostname)” root < $LOG else if [ -f $LOGOLD ] then echo -e “$DATE Le raid est rétabli sur $(hostname)” » $LOGOLD $TWC info c0 » $LOGOLD $MAIL -a “Content-Type: text/plain; charset=UTF-8” -s “$DATE RAID OK sur $(hostname)” root < $LOGOLD $MV $LOGOLD $LOGOLD.ok fi fi fi </code>