1 Haute disponibilité
Vue d'ensemble
La haute disponibilité (HA) est généralement requise dans les infrastructures critiques qui ne peuvent pratiquement se permettre aucune interruption de service. Ainsi, pour tout service susceptible de tomber en panne, il doit exister une option de basculement permettant de prendre le relais si le service actuel échoue.
Zabbix propose une solution de haute disponibilité native, facile à mettre en place et ne nécessitant aucune expertise préalable en HA. La HA native de Zabbix peut être utile pour ajouter une couche de protection supplémentaire contre les défaillances logicielles/matérielles du serveur Zabbix ou pour réduire les temps d'arrêt liés à la maintenance.
En mode haute disponibilité de Zabbix, plusieurs serveurs Zabbix sont exécutés comme des nœuds dans un cluster. Tandis qu'un serveur Zabbix du cluster est actif, les autres sont en veille, prêts à prendre le relais si nécessaire.

Le passage à la HA de Zabbix n'est pas contraignant. Vous pouvez revenir à un fonctionnement autonome à tout moment.
Voir aussi: Détails d'implémentation
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
HANodeNamedoit être spécifié pour chaque serveur Zabbix qui sera un nœud de cluster HA.
Il s'agit d'un identifiant de nœud unique (par exemple, zabbix-node-01) sous lequel le serveur sera référencé dans les configurations de l'agent et du proxy.
Si vous ne spécifiez pas HANodeName, le serveur sera démarré en mode autonome.
- Le paramètre
NodeAddressdoit être spécifié pour chaque nœud.
Le paramètre NodeAddress (adresse:port) sera utilisé par l'interface Zabbix pour se connecter au nœud actif du serveur.
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 alors démarrés en tant que nœuds de cluster. Le nouvel état des serveurs peut être consulté dans Rapports > Informations système, ainsi qu'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 dans stdout) :

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

L'interface 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 du cluster HA (serveurs) doivent être répertoriés dans la configuration du proxy Zabbix passif ou actif.
Pour un proxy passif, les noms des nœuds doivent être répertoriés dans le paramètre Server parameter du proxy, séparés par une virgule.
Server=zabbix-node-01,zabbix-node-02
Pour un proxy actif, les noms des nœuds doivent être répertoriés dans le paramètre Server parameter du proxy, séparés par un point-virgule.
Server=zabbix-node-01;zabbix-node-02
Configuration de l'agent
Les nœuds du cluster HA (serveurs) doivent être listés dans la configuration de Zabbix agent ou Zabbix agent 2.

Pour activer les vérifications passives, les noms des nœuds doivent être listés dans le paramètre Server parameter, séparés par une virgule.
Server=zabbix-node-01,zabbix-node-02
Pour activer les vérifications actives, les noms des nœuds doivent être listés dans le paramètre ServerActive parameter. Notez que pour les vérifications actives, les nœuds doivent être séparés des autres serveurs par une virgule, tandis que les nœuds eux-mêmes doivent être séparés par un point-virgule, par exemple :
ServerActive=zabbix-node-01;zabbix-node-02
Basculement vers un noeud de secours
Zabbix effectuera automatiquement un basculement vers un autre noeud si le noeud actif s'arrête. Il doit y avoir au moins un noeud en statut de veille pour que le basculement puisse se produire.
Quelle est la rapidité du basculement ? Tous les noeuds mettent à jour leur dernière heure d'accès (et leur statut, s'il a changé) toutes les 5 secondes. Donc :
- Si le noeud actif s'arrête et parvient à signaler son statut comme "stopped", un autre noeud prendra le relais en moins de 5 secondes.
- Si le noeud actif s'arrête/devient indisponible sans pouvoir mettre à jour son statut, les noeuds de veille 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 à chaud :
ha_status- consigne l'état du cluster HA dans le journal du serveur Zabbix (et sur stdout) ;ha_remove_node=target- supprime un noeud HA identifié par son<target>- nom ou ID du noeud (le nom/ID peut être obtenu à partir de la sortie deha_status), par exemple :
zabbix_server -R ha_remove_node=zabbix-node-02
Notez que les noeuds actifs/en veille ne peuvent pas être supprimés.
ha_set_failover_delay=delay- définit 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 noeuds peut être surveillé :
- Dans Rapports > Informations système.
- Dans le widget de tableau de bord Informations système.
- En utilisant l'option de contrôle à chaud
ha_statusdu serveur (voir ci-dessus).
L'élément interne zabbix[cluster,discovery,nodes] peut être utilisé pour la découverte des noeuds, car il renvoie un JSON contenant les informations sur les noeuds à haute disponibilité.
Désactivation du cluster HA
Pour désactiver un cluster à haute disponibilité :
- Faites des copies de sauvegarde des fichiers de configuration2.
- Arrêtez les nœuds de secours.
- Supprimez le paramètre HANodeName du serveur principal actif.
- Redémarrez le serveur principal (il démarrera en mode autonome).
Mise à niveau du cluster HA
Pour effectuer une mise à niveau majeure de version pour les 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 rompue.
- Sélectionnez un seul nœud qui effectuera la mise à niveau de la base de données, passez sa configuration en mode autonome en commentant
HANodeNameet mettez-le à niveau. - Assurez-vous que la mise à niveau de la base de données est entièrement terminée (Informations système doit afficher 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).
Lors d'une mise à niveau mineure de version, il suffit de mettre à niveau le premier nœud, de vérifier qu'il a bien été mis à niveau et qu'il est en cours d'exécution, puis de lancer la mise à niveau du nœud suivant.
Détails d'implémentation
Le cluster de haute disponibilité (HA) est une solution optionnelle et elle est prise en charge pour le serveur Zabbix. La solution HA native est conçue pour être simple d'utilisation, elle fonctionne entre plusieurs sites et n'impose pas d'exigences particulières pour 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 répond 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 n'exécute qu'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 sur aucun port ; il a un nombre minimal de connexions à la base de données.
Les nœuds actifs et en veille mettent à jour leur heure de dernier accès toutes les 5 secondes.
Chaque nœud en veille surveille l'heure de dernier accès du nœud actif.
Si l'heure de dernier accès du nœud actif dépasse de plus de 'failover delay' secondes, le nœud en veille devient lui-même le nœud actif et attribue le statut unavailable 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 l'état des nœuds en veille - si l'heure de dernier accès d'un nœud en veille dépasse de plus de 'failover delay' secondes, le nœud en veille se voit attribuer le statut unavailable.
Les nœuds sont conçus pour être compatibles entre les versions mineures de Zabbix.