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
Deux paramètres sont requis dans la configuration du serveur pour démarrer un serveur Zabbix en tant que nœud du cluster :
Il s'agit d'un identifiant de nœud unique (par exemple, zabbix-node-01
) auquel le serveur sera référencé dans les configurations d'agent et de proxy. Si vous ne spécifiez pas HANodeName, le serveur sera démarré en mode autonome.
Le paramètre NodeAddress (adresse:port) sera utilisé par l'interface Zabbix pour se connecter au nœud de serveur actif. NodeAddress doit correspondre au nom IP ou FQDN du serveur Zabbix respectif.
Redémarrer 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 nouveau statut des serveurs peut être vu dans Rapports → Informations système et également en exécutant :
zabbix_server -R ha_status
Cette commande d'exécution enregistrera l'état actuel du cluster HA dans le journal du serveur Zabbix (et dans stdout) :
Assurez-vous que address:port du serveur Zabbix n'est pas défini dans la configuration de l'interface (situé 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 de nœud du nœud actif sera utilisée comme adresse de serveur Zabbix.
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
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
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 veille pour que le basculement se produise.
À quelle vitesse le basculement se fera-t-il ? Tous les nœuds mettent à jour leur heure de dernier accès (et leur état, s'il est modifié) toutes les 5 secondes. Alors:
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 pour 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
L'état actuel du cluster HA peut être géré à l'aide des options dédiées du contrôle d'exécution :
ha_status
- enregistre l'état du cluster HA dans le journal du serveur Zabbix (et vers stdout)ha_remove_node=target
- supprime un nœud HA identifié par son <target> - numéro du nœud dans la liste (le numéro peut être obtenu à partir de la sortie de l'exécution de ha_status), par exemple :zabbix_server -R ha_remove_node=2
Notez que les nœuds 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 du nœud peut être surveillé :
ha_status
du serveur (voir ci-dessus).L'élément interne zabbix[cluster,discovery,nodes]
peut être utilisé pour la découverte de nœuds, car il renvoie un JSON avec les informations de nœud à haute disponibilité.
Pour désactiver un cluster haute disponibilité :
To perform a major version upgrade for the HA nodes:
In a minor version upgrade it is sufficient to upgrade the first node, make sure it has upgraded and running, and then start upgrade on the next node.
Le cluster haute disponibilité (HA) est une solution opt-in et il est pris en charge pour le serveur Zabbix. La solution HA native est conçue pour être simple à utiliser, elle fonctionnera sur tous les sites et n'a pas d'exigences spécifiques pour les bases de données reconnues par Zabbix. Les utilisateurs sont libres d'utiliser la solution HA native Zabbix ou une solution HA tierce, selon ce qui convient le mieux aux exigences de haute disponibilité de leur environnement.
La solution consiste en 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 : active, standby, unavailable, stopped
Un seul nœud peut être actif à la fois. Un nœud standby n'exécute qu'un seul processus : le gestionnaire HA. Un nœud standby n'effectue pas de collecte de données, de traitement ou d'autres activités habituelles du serveur ; ils n'écoutent pas sur les ports ; ils ont un minimum de connexions à la base de données.
Les nœuds actifs et standby mettent à jour leur heure de dernier accès toutes les 5 secondes. Chaque nœud standby surveille l'heure du dernier accès du nœud actif. Si le dernier temps d'accès du nœud actif est supérieur à « délai de basculement » secondes, le nœud standby devient le nœud actif et attribue l'état 'unavailable' au nœud précédemment actif.
Le nœud actif surveille sa propre connectivité à la base de données - s'il est perdu pendant plus de délai de basculement-5
secondes, il doit arrêter tout traitement et passer en mode standby. Le nœud actif surveille également l'état des nœuds standby - si le dernier temps d'accès d'un nœud standby dépasse le « délai de basculement » secondes, le nœud standby se voit attribuer l'état 'unavailable'.
Les nœuds sont conçus pour être compatibles entre les versions mineures de Zabbix.