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:
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 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.
|
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.
|
Selon votre infrastructure, vous devez ajuster les propriétés timeout, data_timeout, max_check_attempts et check_interval, pour permettre à votre architecture Haute disponibilité d'être la plus efficace possible.
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)
#======== Daemon connection timeout and down state limit =========
# The arbiter connection timeout and down state limit are useful for another arbiter to
# know when to consider this arbiter as DEAD so the spare can take the lead.
# timeout: how many second to consider a node don't answer
timeout 3
# max_check_attempts: how many fail check to consider this daemon as DEAD
max_check_attempts 3
# Check this daemon every X seconds
check_interval 60
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. |