Recherche


imprimer pdf
OCO

Description



OcO est un logiciel que nous utilisons sur notre infrastructure pour connaître l'état de serveurs. Chaque serveur fonctionnant dans un cluster doit se vérifier lui-même et dire aux autres s'il va bien ou ça ne va pas du tout. OcO est compatible avec les cartes de répartition de charge de Cisco type SLB/ACE (probe SMTP).

Nous utilisons le port 79 pour la communication. C'est extrêmement simple. On se connecte sur le port et le serveur dit "OK" ou "KO" puis la connexion est coupée.


Installation et configuration


Taper cette commande afin de recuperer OcO :



Cette commande vous permettra de decompresser et installer OcO :

tar xzf oco-ded.tar.gz && cd oco-ded && ./install.sh



Le système de répartitions de charge chez Ovh est compatible avec OcO. Si vous choisissez dans le manager "Sonde Software", notre infrastructure va vérifier périodiquement (tous les 60 secondes) si votre serveur (votre OcO) dit "OK" ou "KO". Si c'est "KO", automatiquement le serveur sera enlevé du cluster. Et dés que c'est "OK" à nouveau, il sera remis dans le cluster. Vous pouvez le vérifier très facilement de
manière suivante:

echo "300" > /usr/local/oco/result/test


Vous mettez ainsi l'OcO en "KO" puis vous regardez comment se passe
la répartition de charge. Puis, vous remettez en "OK" l'OcO avec

rm -f /usr/local/oco/result/test



Vérification de OCO


Vérification du status de la sonde

Si vous utilisez OCO pour gérer le fait que votre serveur reçoivent des requêtes de l'ip loadbalancing, OCO doit renvoyer le code "200 ok" , tout autre code renvoyé aura pour conséquence que le serveur ne recevra plus de requêtes de la part de l'ip loadbalancing.

Pour vérifier le status il vous suffit de faire un telnet sur le port 79 de votre serveur.

telnet nsxxxxx.ip-yyy.yyy.yyy.eu 79
Trying XXX.XXX.XXX.XXX...
Connected to XXX.XXX.XXX.XXX.
Escape character is '^]'.
200 OK XXX.XXX.XXX.XXX interface oco-1.16 302-http
Connection closed by foreign host.


maintenant coupons notre serveur web :

telnet 91.121.226.250 79
Trying XXX.XXXX.XXX.XXX...
Connected to XXX.XXX.XXX.XXX.
Escape character is '^]'.
302 KO XXX.XXX.XXX.XXX interface oco-1.16 302-http
Connection closed by foreign host.


OCO renvoi un code d'erreur 302. Le serveur ne recevra plus de requêtes


Vérification type de probes


Si vous avez décidé d'utiliser OCO assurez vous bien que le probe pour votre backend (serveur) soit bien sur oco pour ceci allez sur l'api OVH :


  • Allez sur l'api d'ovh :
https://api.ovh.com/console/#/ip/


  • Identifiez-vous en cliquant sur login en haut à droite (utilisez les codes de votre manager).

  • Utilisez la fonction :


GET /ip/loadBalancing



Exemple de retour

[ip-XXX.XXX.XXX.XXX]


/ip/loadBalancing/{serviceName}/backend/{backend}


  • Ensuite utilisez la fonction :

GET /ip/loadBalancing/{serviceName}/backend/{backend}


Avec pour paramètres :

serviceName :Le nom du vrack 1.5
backend :L'ip que vous avez définit pour le backend.


Exemple de retour :

{

mainBackendIp: null
zone: "rbx"
backend: "XXX.XXX.XXX.XXX"
weight: 8
probe: "oco"

}


Vérification des requêtes probes


Pour vérifier que vous recevez bien les requêtes de vérification sur le port 79 par le systeme d'IP loadbalancing utilisez l'API pour déterminer les adresses IPs pour cette vérification.


  • Allez sur l'api d'ovh :
https://api.ovh.com/console/#/ip/


  • Identifiez-vous en cliquant sur login en haut à droite (utilisez les codes de votre manager).

  • Utilisez la fonction :


GET /ip/loadBalancing



Exemple de retour

[ip-XXX.XXX.XXX.XXX]


  • Une fois l'ip loadblancing récupéré, nous allons récupérer ses informations avec la fonction :

GET /ip/loadBalancing/{serviceName}


serviceName :Nom du service récupéré dans la fonction précédente : ip-XXX.XXX.XXX.XXX

Exemple de retour

{
ssl: "none"
zone: [
"rbx"
]
ipLoadBalancing: "XXX.XXX.XXX.XXX"
serviceName: "ip-XXX.XXX.XXX.XXX"
state: "ok"
}



  • Ensuite utilisez la fonction :


GET /ip/loadBalancing/{serviceName}/probeIp



Avec pour argument :


serviceName :Le nom du vrack 1.5
zone :Zone dans lequel le bloc sera annoncé (récupéré dans la fonction précédente).



Exemple de retour :

[
"10.71.9.96/29"
]


  • Maintenant sur votre serveur, utilisez un utilitaire type tcpdump sous Linux/Freebsd ou wireshark sous Windows pour écouter le port 79.

exemple :

tcpdump -i eth0 -vvv -n port 79


Vous devez voir à interval régulier des paquets émis depuis les addresses IPs du bloc récupéré précédemment.


OcO est sous la licence GPL alors amusez vous bien.