This is a translation of the original English documentation page. Help us make it better.

1 Cluster 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 du cluster

Deux paramètres sont requis dans la configuration du serveur pour démarrer un serveur Zabbix en tant que nœud du cluster :

  • Le paramètre HANodeName doit ê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) 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 doit ê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 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 RapportsInformations 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) :

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é 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.

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

Failover to standby node

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

Gestion du cluster haute disponibilité

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é :

  • dans RapportsInformations système
  • dans le widget du tableau de bord Informations système
  • en utilisant l'option de contrôle d'exécution 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é.

Désactivation de la haute disponibilité

Pour désactiver un cluster haute disponibilité :

  • faire des copies de sauvegarde des fichiers de configuration
  • arrêter les nœuds de secours
  • supprimer le paramètre HANodeName du serveur principal actif
  • redémarrer le serveur principal (il démarrera en mode autonome)

Upgrading HA cluster

To perform a major version upgrade for the HA nodes:

  • stop all nodes;
  • create a full database backup;
  • if the database uses replication make sure that all nodes are in sync and have no issues. Do not upgrade if replication is broken.
  • select a single node that will perform database upgrade, change its configuration to standalone mode by commenting out HANodeName and upgrade it;
  • make sure that database upgrade is fully completed (System information should display that Zabbix server is running);
  • restart the node in HA mode;
  • upgrade and start the rest of nodes (it is not required to change them to standalone mode as the database is already upgraded at this point).

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.

Détails d'implémentation

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.