1 Haute disponibilité
Aperçu
La haute disponibilité (HA) est généralement requise dans les infrastructures critiques qui ne peuvent se permettre pratiquement aucun temps d'arrêt. Ainsi, pour tout service susceptible d'être en erreur, une option de basculement doit être en place pour prendre le relais en cas d'échec du service actuel.
Zabbix propose une solution haute disponibilité native facile à configurer et ne nécessitant aucune expertise préalable en HA. Zabbix HA natif peut être utile pour une couche supplémentaire de protection contre les pannes logicielles/matérielles du serveur Zabbix ou pour avoir moins de temps d'arrêt en raison de la maintenance.
En mode haute disponibilité Zabbix, plusieurs serveurs Zabbix sont exécutés en tant que nœuds dans un cluster. Pendant qu'un serveur Zabbix du cluster est actif, d'autres sont en veille, prêts à prendre le relais si nécessaire.

Le passage à Zabbix HA est sans engagement. Vous pouvez revenir à un fonctionnement autonome à tout moment.
Voir aussi : Détails de la mise en œuvre
Activation du cluster HA
Démarrage du serveur Zabbix en tant que nœud de cluster
Deux paramètres sont requis dans la configuration du serveur pour démarrer un serveur Zabbix en tant que nœud de cluster :
- Le paramètre HANodeName doit être spécifié pour chaque serveur Zabbix qui sera un nœud du cluster HA.
Il s’agit d’un identifiant de nœud unique (par exemple, zabbix-node-01) auquel le serveur fera référence dans les configurations des agents
et des proxys. Si vous ne spécifiez pas HANodeName, le serveur sera
démarré en mode autonome.
- Le paramètre NodeAddress doit être spécifié pour chaque nœud.
Le paramètre NodeAddress (adresse:port) sera utilisé par le frontend Zabbix pour se connecter au nœud de serveur actif. NodeAddress doit correspondre à l’adresse IP ou au nom FQDN du serveur Zabbix concerné.
Redémarrez tous les serveurs Zabbix après avoir apporté des modifications aux fichiers de configuration. Ils seront désormais démarrés en tant que nœuds de cluster. Le nouvel état des serveurs peut être consulté dans Rapports → Informations système et également en exécutant :
zabbix_server -R ha_status
Cette commande d’exécution consignera l’état actuel du cluster HA dans le journal du serveur Zabbix (et sur stdout) :

Préparation de l’interface web
Assurez-vous que l’adresse:port du serveur Zabbix n’est pas définie dans la configuration de l’interface web (située dans conf/zabbix.conf.php du répertoire des fichiers de l’interface web).

L’interface web Zabbix détectera automatiquement le nœud actif en lisant les paramètres de la table des nœuds dans la base de données Zabbix. L’adresse du nœud actif sera utilisée comme adresse du serveur Zabbix.
Configuration du proxy
Les nœuds de cluster HA (serveurs) doivent être répertoriés dans la configuration du proxy Zabbix passif ou actif.
Pour un proxy passif, le nom des nœuds doivent être listés dans le paramètre Server du proxy, séparés par une virgule.
Server=zabbix-node-01,zabbix-node-02
Pour un proxy actif, le nom des nœud doivent être répertoriés dans le paramètre Server du proxy, séparés par un point-virgule.
Server=zabbix-node-01;zabbix-node-02
Configuration des agents
Les nœuds de cluster HA (serveurs) doivent être répertoriés dans la configuration de l'agent Zabbix ou de l'agent Zabbix 2.

Pour activer les vérifications passives, les noms de nœud doivent être répertoriés dans le paramètre du serveur, séparés par une virgule.
Serveur=zabbix-node-01,zabbix-node-02
Pour activer les vérifications actives, les noms de nœud doivent être répertoriés dans le paramètre ServerActive. Notez que pour les vérifications actives, les nœuds doivent être séparés par une virgule de tout autre serveur, tandis que les nœuds eux-mêmes doivent être séparés par un point-virgule, par exemple :
ServeurActive=zabbix-node-01;zabbix-node-02
Basculement vers le nœud de secours
Zabbix basculera automatiquement vers un autre nœud si le nœud actif s’arrête. Il doit y avoir au moins un nœud en état de secours pour que le basculement puisse avoir lieu.
À quelle vitesse le basculement se produira-t-il ? Tous les nœuds mettent à jour leur heure de dernier accès (et leur état, s’il a changé) toutes les 5 secondes. Ainsi :
-
Si le nœud actif s’arrête et parvient à signaler son état comme « arrêté », un autre nœud prendra le relais dans les 5 secondes.
-
Si le nœud actif s’arrête/devient indisponible sans pouvoir mettre à jour son état, les nœuds de secours attendront le délai de basculement + 5 secondes avant de prendre le relais.
Le délai de basculement est configurable, avec une plage prise en charge comprise entre 10 secondes et 15 minutes (une minute par défaut). Pour modifier le délai de basculement, vous pouvez exécuter :
zabbix_server -R ha_set_failover_delay=5m
Gestion du cluster HA
L'état actuel du cluster HA peut être géré à l'aide des options dédiées de contrôle d'exécution :
ha_status- consigner l'état du cluster HA dans le journal du serveur Zabbix (et sur stdout)ha_remove_node=target- supprimer un nœud HA identifié par son <target> - nom ou ID du nœud (le nom/l'ID peut être obtenu à partir de la sortie de l'exécution de ha_status), par exemple :
zabbix_server -R ha_remove_node=zabbix-node-02
Notez que les nœuds actifs/de secours ne peuvent pas être supprimés.
ha_set_failover_delay=delay- définir le délai de basculement HA (entre 10 secondes et 15 minutes ; les suffixes de temps sont pris en charge, par exemple 10s, 1m)
L'état des nœuds peut être surveillé :
- dans Rapports → Informations système
- dans le widget de tableau de bord Informations système
- à l'aide de l'option de contrôle d'exécution
ha_statusdu serveur (voir ci-dessus).
L'élément interne zabbix[cluster,discovery,nodes] peut être utilisé pour la
découverte des nœuds, car il renvoie un JSON contenant les informations sur les nœuds de haute disponibilité.
Désactivation du cluster HA
Pour désactiver un cluster de haute disponibilité :
- faites des copies de sauvegarde des fichiers de configuration
- arrêtez les nœuds de secours
- supprimez le paramètre HANodeName du serveur primaire actif
- redémarrez le serveur primaire (il démarrera en mode autonome)
Mise à niveau du cluster HA
Pour effectuer une mise à niveau de version majeure des nœuds HA :
- arrêtez tous les nœuds ;
- créez une sauvegarde complète de la base de données ;
- si la base de données utilise la réplication, assurez-vous que tous les nœuds sont synchronisés et ne présentent aucun problème. N’effectuez pas la mise à niveau si la réplication est défaillante.
- sélectionnez un seul nœud qui effectuera la mise à niveau de la base de données, modifiez sa configuration en mode autonome en commentant HANodeName et mettez-le à niveau ;
- assurez-vous que la mise à niveau de la base de données est entièrement terminée (Informations système doit indiquer que le serveur Zabbix est en cours d’exécution) ;
- redémarrez le nœud en mode HA ;
- mettez à niveau et démarrez le reste des nœuds (il n’est pas nécessaire de les passer en mode autonome, car la base de données est déjà mise à niveau à ce stade).
Pour une mise à niveau de version mineure, il suffit de mettre à niveau le premier nœud, de s’assurer qu’il a bien été mis à niveau et qu’il est en cours d’exécution, puis de lancer la mise à niveau sur le nœud suivant.
Détails de l’implémentation
Le cluster de haute disponibilité (HA) est une solution optionnelle et il est pris en charge pour le serveur Zabbix. La solution HA native est conçue pour être simple à utiliser, elle fonctionne entre plusieurs sites et n’a pas d’exigences spécifiques concernant les bases de données reconnues par Zabbix. Les utilisateurs sont libres d’utiliser la solution HA native de Zabbix ou une solution HA tierce, selon ce qui correspond le mieux aux exigences de haute disponibilité de leur environnement.
La solution se compose de plusieurs instances ou nœuds zabbix_server. Chaque nœud :
- est configuré séparément
- utilise la même base de données
- peut avoir plusieurs modes : actif, veille, indisponible, arrêté
Un seul nœud peut être actif (en fonctionnement) à la fois. Un nœud en veille exécute un seul processus : le gestionnaire HA. Un nœud en veille n’effectue aucune collecte de données, aucun traitement ni aucune autre activité régulière du serveur ; il n’écoute pas sur les ports ; il utilise un minimum de connexions à la base de données.
Les nœuds actifs et en veille mettent tous deux à jour leur heure du dernier accès toutes les 5 secondes. Chaque nœud en veille surveille l’heure du dernier accès du nœud actif. Si l’heure du dernier accès du nœud actif dépasse le nombre de secondes défini par le « failover delay », le nœud en veille bascule lui-même en nœud actif et attribue le statut « indisponible » au nœud précédemment actif.
Le nœud actif surveille sa propre connectivité à la base de données : si elle est perdue
pendant plus de failover delay-5 secondes, il doit arrêter tout traitement
et passer en mode veille. Le nœud actif surveille également le statut des
nœuds en veille : si l’heure du dernier accès d’un nœud en veille dépasse le nombre de secondes du
« failover delay », le statut « indisponible » est attribué au nœud en veille.
Les nœuds sont conçus pour être compatibles entre les versions mineures de Zabbix.