Chaque démon dans Shinken Entreprise peut être secondé par un démon de même type configuré en tant que spare. Le principe de spares permet d'assurer une haute disponibilité en assurant un service continu même lorsqu'un démon cesse de fonctionner.
On classe alors les démons dans 2 catégories: les démons maîtres et les démons Spare.
Le cycle de vie d'un spare est le suivant:
|
Plusieurs remarques peuvent être effectuées sur le fonctionnement des spares.
L'ajout d'un démon Spare s'effectue en 4 étapes:
Pour illustrer la configuration d'un démon spare, on prend l'exemple d'un Scheduler qu'on va configurer en tant que spare.
La configuration d'un Spare, comme pour la configuration d'un démon classique, s'effectue sur la machine hébergeant le démon Arbiter. Aucune modification au niveau des fichiers de configuration n'est à effectuer sur la machine hébergeant le Scheduler spare.
define scheduler {
scheduler_name scheduler-spare
address adresse-scheduler-spare (ip ou nom dns)
port 7768
use_ssl 0
timeout 3
data_timeout 120
max_check_attempts 3
check_interval 60
modules MongodbRetention
realm All
spare 0
enabled 1
} |
define scheduler{
...
spare 1
...
} |
Activation du scheduler sur la machine distante
Enfin, sur la machine hébergeant le Scheduler spare, il faut vérifier que le Scheduler est bien activé. Cette vérification va se faire avec les commandes de Manipulation des démons Shinken.
On vérifie d'abord que le démon Scheduler est activé (sur la machine du scheduler):
$ shinken-daemons-list |
Si le Scheduler n'est pas activé sur la machine spare, on peut l'activer grâce à la commande shinken-daemons-enable:
$ shinken-daemons-enable scheduler |
Aussi, seuls les démons utilisés doivent être activés sur la machine de spare, sous peine d'avoir des comportements hasardeux en cas de mauvaise configuration. Les démons inutilisés peuvent être désactivés grâce à la commande shinken-daemons-disable:
$ shinken-daemons-disable demon1 demon2 ... |
Nous avons vu que dans Shinken Entreprise, l'ajout d'un démon spare n'était pas plus difficile que l'ajout de n'importe quel autre démon:
Deux démons échappent à cette règle de configuration pour le cas des spares: l'Arbiter et le Synchronizer
En effet, ces deux démons sont spéciaux dans le sens ou ils ne peuvent pas être répliqués facilement:
| Il ne peut y avoir qu'un seul Arbiter master et un seul Arbiter spare par infrastructure. |
Compte tenu de son rôle central, la configuration d'un Arbiter spare nécessite donc des étapes supplémentaires:
define arbiter {
arbiter_name arbiter-spare
host_name hostname_machine_spare
address adresse-arbiter-spare
port 7770
use_ssl› 0
timeout 3
data_timeout 120
max_check_attempts 3
check_interval 60
spare 0
modules synchronizer-import
enabled 1
} |
Activation du paramètre spare
Dans le fichier de configuration de l'Arbiter spare, on passe ensuite le paramètre spare à 1
define arbiter {
...
spare 1
...
} |
Mise en place du paramètre host_name sur les 2 Arbiters
Chaque Arbiter dans la configuration doit pouvoir s'identifier. Puisqu'il ne peut y avoir qu'un seul Arbiter par machine, on choisit d'identifier chaque Arbiter par le hostname de la machine sur laquelle il est installé.
Pour cela, on spécifie le nom du hostname de la machine dans le paramètre host_name de chaque Arbiter.
Par exemple, sur la machine de l'Arbiter spare, on cherche le hostname de la machine:
$ hostname hostname_machine_spare |
Sur la machine hébergeant l'Arbiter master, donc la machine centrale sur laquelle s'effectue la configuration des démons, on spécifie pour chaque Arbiter le paramètre host_name (à effectuer pour les 2 Arbiters).
define arbiter {
...
host_name hostname_machine_spare
...
} |
Activation du paramètre spare sur la machine hébergeant l'Arbiter spare
En règle générale, la configuration de tous les démons se fait sur la machine centrale de l'installation Shinken (celle qui héberge l'Arbiter maître).
Le cas de l'Arbiter spare est un cas particulier. Puisqu'il a un rôle central, lorsqu'il démarre, il agit automatiquement comme arbitre avec les autres démons. Dans le cas d'un spare, on veut par contre qu'il reste inactif et n'essaye pas d'envoyer de configuration aux autres démons.
Pour cela, il faut, sur la machine du spare, spécifier que le démon est en spare.
define arbiter {
arbiter_name arbiter-spare
...
spare 1
...
} |
Le fait qu'un démon soit en spare est une information importante lorsqu'on veut déterminer le bon fonctionnement d'une plateforme de supervision Shinken Entreprise. La propriété spare d'un démon peut être vue à 2 endroits:
Dans le Shinken-healthcheck, les démons spare sont accompagnés d'une annotation "SPARE", qui permet de déterminer facilement si un démon est un démon maître un ou démon spare.
|
Lors d'une prise de relais, une annotation "RUNNING" est rajoutée à la mention "SPARE".
|
Les checks du pack Shinken permettent de superviser les démons Shinken. Ces checks affichent une pastille spare lorsque le démon supervisé est un démon Spare.
|
Dans le cas d'une défaillance du démon maître, lorsque le Spare prend le relais, une pastille "RUNNING" est rajoutée afin de montrer que le Spare est en cours de fonctionnement :
|
Selon votre infrastructure, nous vous conseillons d'ajuster les propriétés timeout, max_check_attempts et check_interval, pour permettre à votre architecture en Haute disponibilité d'être la plus efficace possible. (Voir aussi les paramètres de configuration des Démons)
En effet, avec les valeurs par défaut, votre Arbiter vérifie vos différents démons toutes les 60 secondes (check_interval). Il considérera le nœud comme "éteint/inaccessible" s'il ne répond pas au bout de 3 secondes (timeout) après 3 tentatives de connexion (max_check_attempts).
Si vous souhaitez une forte réactivité dans le passage Maître/Spare, vous pourriez par exemple passer votre check_interval à 10 secondes et votre max_check_attempts à 1. Les délais de bascule seraient alors réduits. Par contre, attention dans un réseau subissant des coupures très régulières ou des fortes latences, car avec ce paramétrage, il se peut que vous basculiez de manière répétée de maître à spare et de spare à maître, et le système de haute disponibilité entraînera de l'instabilité au niveau des communications entres les démons (multiplication des bascules). Il en est de même sur de très grosses installations avec des Schedulers et Brokers qui peuvent être surchargés ou subir de fortes latences réseaux. Les temps de réponse de disponibilité sont alors plus longs, il faudra adapter vos valeurs.
Il s'agit donc de bien choisir les valeurs selon:
Il est possible comme pour les autres démons d'utiliser des Pollers spare. Cependant dans le cas du Poller, il serait plus efficace d'utiliser plusieurs Pollers sans utiliser de spare. En effet, les Pollers se répartissent les checks à effectuer de manière transparente. Un Poller spare inactif peut donc être substitué par un Pollers actif, ce qui est plus intéressant au niveau des performances. |