À propos de la maintenance de ZooKeeper

Edge pour Private Cloud v4.18.01

Les ensembles ZooKeeper sont conçus pour rester fonctionnels, sans perte de données, malgré la perte d'un ou de plusieurs nœuds ZooKeeper. Cette résilience peut être utilisée efficacement pour effectuer la maintenance des nœuds ZooKeeper sans temps d'arrêt du système.

À propos de ZooKeeper et d'Edge

Dans Edge, les nœuds ZooKeeper contiennent des données de configuration sur l'emplacement et la configuration des différents composants Edge, et notifient les différents composants des modifications de configuration. Toutes les topologies Edge compatibles pour un système de production spécifient l'utilisation d'au moins trois nœuds ZooKeeper.

Utilisez les propriétés ZK_HOSTS et ZK_CLIENT_HOSTS dans le fichier de configuration Edge pour spécifier les nœuds ZooKeeper. Pour l'examen

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

où :

  • ZK_HOSTS : spécifie les adresses IP des nœuds ZooKeeper. Les adresses IP doivent être listées dans le même ordre sur tous les nœuds ZooKeeper.

    Dans un environnement multi-centre de données, listez tous les nœuds ZooKeeper de tous les centres de données.
  • ZK_CLIENT_HOSTS : spécifie les adresses IP des nœuds ZooKeeper utilisés par ce centre de données uniquement. Les adresses IP doivent être listées dans le même ordre sur tous les nœuds ZooKeeper du centre de données.

    Dans une installation de centre de données unique, il s'agit des mêmes nœuds que ceux spécifiés par ZK_HOSTS. Dans un environnement multi-centre de données, le fichier de configuration Edge de chaque centre de données ne doit lister que les nœuds ZooKeeper de ce centre de données.

Par défaut, tous les nœuds ZooKeeper sont désignés comme des nœuds voter. Cela signifie que les nœuds participent tous à l'élection du leader ZooKeeper. Vous pouvez inclure le modificateur ":observer" avec ZK_HOSTS pour indiquer que la note est un nœud observateur et non un nœud votant. Un nœud observateur ne participe pas à l'élection du leader.

Vous spécifiez généralement le modificateur ":observer" lorsque vous créez plusieurs centres de données Edge ou lorsqu'un seul centre de données comporte un grand nombre de nœuds ZooKeeper. Par exemple, dans une installation Edge à 12 hôtes avec deux centres de données, ZooKeeper sur le nœud 9 du centre de données 2 est l'observateur:

Vous utilisez ensuite les paramètres suivants dans votre fichier de configuration pour le centre de données 1:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

Et pour le centre de données

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

À propos des leaders, des followers, des électeurs et des observateurs

Dans une installation ZooKeeper multi-nœuds, l'un des nœuds est désigné comme leader. Tous les autres nœuds ZooKeeper sont désignés comme followers (suiveurs). Bien que les lectures puissent se produire à partir de n'importe quel nœud ZooKeeper, toutes les requêtes d'écriture sont transférées au leader. Par exemple, un nouveau processeur de messages est ajouté à Edge. Ces informations sont écrites dans le leader ZooKeeper. Tous les abonnés répliquent ensuite les données.

Au moment de l'installation d'Edge, vous devez désigner chaque nœud ZooKeeper comme électeur ou comme observateur. Le leader est ensuite élu par tous les nœuds ZooKeeper électeurs. La seule exigence pour l'élection d'un leader est qu'un quorum de nœuds de vote ZooKeeper opérationnels doit être disponible. Un quorum signifie que plus de la moitié de tous les nœuds ZooKeeper électeurs, dans tous les centres de données, sont fonctionnels.

Si aucun quorum de nœuds de vote n'est disponible, aucun leader ne peut être élu. Dans ce scénario, Zookeeper ne peut pas traiter les requêtes. Cela signifie que vous ne pouvez pas envoyer de requête au serveur de gestion Edge, traiter les requêtes de l'API de gestion ni vous connecter à l'UI Edge tant que le quorum n'est pas rétabli.

Par exemple, dans une installation de centre de données unique:

  • Vous avez installé trois nœuds ZooKeeper
  • Tous les nœuds ZooKeeper sont des électeurs
  • Le quorum est de deux nœuds de vote opérationnels.
  • Si un seul nœud de vote est disponible, l'ensemble ZooKeeper ne peut pas fonctionner.

Dans une installation avec deux centres de données:

  • Vous avez installé trois nœuds ZooKeeper par centre de données, soit un total de six nœuds.
  • Le centre de données 1 comporte trois nœuds de vote
  • Le centre de données 2 comporte deux nœuds de vote et un nœud d'observation
  • Le quorum est basé sur les cinq électeurs des deux centres de données, et est donc de trois nœuds électeurs fonctionnels.
  • Si seulement deux nœuds de vote ou moins sont disponibles, l'ensemble ZooKeeper ne peut pas fonctionner.

Ajouter des nœuds en tant que votants ou observateurs

Vos exigences système peuvent nécessiter l'ajout de nœuds ZooKeeper supplémentaires à votre installation Edge. La documentation Ajouter des nœuds ZooKeeper explique comment ajouter des nœuds ZooKeeper supplémentaires à Edge. Lorsque vous ajoutez des nœuds ZooKeeper, vous devez tenir compte du type de nœuds à ajouter: électeurs ou observateurs.

Vous devez vous assurer d'avoir suffisamment de nœuds de vote pour que l'ensemble ZooKeeper puisse continuer à fonctionner si un ou plusieurs nœuds de vote sont en panne, ce qui signifie qu'il existe toujours un quorum de nœuds de vote disponibles. En ajoutant des nœuds de vote, vous augmentez la taille du quorum et pouvez donc tolérer un plus grand nombre de nœuds de vote en panne.

Toutefois, l'ajout de nœuds de vote supplémentaires peut avoir un impact négatif sur les performances d'écriture, car les opérations d'écriture nécessitent que le quorum soit d'accord sur le leader. Le temps nécessaire pour déterminer le leader dépend du nombre de nœuds de vote, qui augmente à mesure que vous en ajoutez. Par conséquent, vous ne souhaitez pas que tous les nœuds soient des électeurs.

Au lieu d'ajouter des nœuds de vote, vous pouvez ajouter des nœuds d'observation. L'ajout de nœuds d'observation augmente les performances de lecture globales du système sans augmenter la surcharge liée à l'élection d'un leader, car les nœuds d'observation ne votent pas et n'affectent pas la taille du quorum. Par conséquent, si un nœud observateur tombe en panne, cela n'affecte pas la capacité de l'ensemble à élire un leader. Toutefois, la perte de nœuds d'observateur peut entraîner une dégradation des performances de lecture de l'ensemble ZooKeeper, car il y a moins de nœuds disponibles pour traiter les requêtes de données.

Dans un même centre de données, Apigee vous recommande de ne pas dépasser cinq électeurs, quel que soit le nombre de nœuds d'observation. Dans deux centres de données, Apigee vous recommande de ne pas avoir plus de neuf électeurs (cinq dans un centre de données et quatre dans l'autre). Vous pouvez ensuite ajouter autant de nœuds d'observateur que nécessaire pour répondre aux exigences de votre système.

Considérations concernant la maintenance

La maintenance de ZooKeeper peut être effectuée sur un ensemble entièrement fonctionnel sans temps d'arrêt si elle est effectuée sur un seul nœud à la fois. En vous assurant qu'un seul nœud ZooKeeper est en panne à la fois, vous pouvez vous assurer qu'il y a toujours un quorum de nœuds électeurs disponibles pour élire un leader.

Maintenance dans plusieurs centres de données

Lorsque vous travaillez avec plusieurs centres de données, n'oubliez pas que l'ensemble ZooKeeper ne fait pas la distinction entre les centres de données. Les assemblages ZooKeeper affichent tous les nœuds ZooKeeper de tous les centres de données comme un ensemble.

L'emplacement des nœuds de vote dans un centre de données donné n'est pas un facteur lorsque ZooKeeper effectue des calculs de quorum. Des nœuds individuels peuvent tomber en panne dans les centres de données, mais tant qu'un quorum est préservé dans l'ensemble, ZooKeeper reste fonctionnel.

Implications pour la maintenance

Vous devrez parfois arrêter un nœud ZooKeeper pour des raisons de maintenance, qu'il s'agisse d'un nœud de vote ou d'un nœud d'observation. Par exemple, vous devrez peut-être mettre à niveau la version d'Edge sur le nœud, la machine hébergeant ZooKeeper peut échouer ou le nœud peut devenir indisponible pour une autre raison, comme une erreur réseau.

Si le nœud qui tombe en panne est un nœud observateur, vous pouvez vous attendre à une légère dégradation des performances de l'ensemble ZooKeeper jusqu'à ce que le nœud soit restauré. Si le nœud est un nœud votant, il peut avoir un impact sur la viabilité de l'ensemble ZooKeeper en raison de la perte d'un nœud qui participe au processus d'élection du leader. Quelle que soit la raison de l'arrêt du nœud de vote, il est important de maintenir un quorum de nœuds de vote disponibles.

Procédure de maintenance

Vous ne devez effectuer une procédure de maintenance que lorsque vous vous êtes assuré qu'un ensemble ZooKeeper est fonctionnel. Cela suppose que les nœuds d'observation sont fonctionnels et qu'il y a suffisamment de nœuds de vote disponibles pendant la maintenance pour conserver un quorum.

Lorsque ces conditions sont remplies, un ensemble ZooKeeper de taille arbitraire peut tolérer la perte d'un seul nœud à tout moment, sans perte de données ni impact significatif sur les performances. Cela signifie que vous pouvez effectuer la maintenance sur n'importe quel nœud de l'ensemble, à condition qu'il ne s'agisse que d'un seul nœud à la fois.

Lors de la maintenance, utilisez la procédure suivante pour déterminer le type d'un nœud ZooKeeper (leader, votant ou observateur):

  1. Si nc n'est pas installé sur le nœud ZooKeeper, installez-le:
    > sudo yum install nc
  2. Exécutez la commande nc suivante sur le nœud:
    > echo stat | nc localhost 2181

    où 2181 est le port ZooKeeper. Le résultat doit s'afficher au format suivant:
    Version Zookeeper: 3.4.5-1392090, compilation le 30/09/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latence min/moyenne/max: 0/0/0
    Réçu: 1
    Envoyée: 0
    Connexions: 1
    En attente: 0
    Zxid: 0xc00000044
    Mode: follower
    Nombre de nœuds: 653


    Dans la ligne Mode de la sortie pour les nœuds, vous devriez voir observer, leader ou follower (signifiant un votant qui n'est pas le leader), en fonction de la configuration du nœud.

    Remarque: Dans une installation autonome d'Edge avec un seul nœud ZooKeeper, le mode est défini sur standalone (autonome).
  3. Répétez les étapes 1 et 2 sur chaque nœud ZooKeeper.

Résumé

Le meilleur moyen d'effectuer la maintenance d'un ensemble ZooKeeper est de le faire un nœud à la fois. À noter :

  • Vous devez maintenir un quorum de nœuds de vote pendant la maintenance pour vous assurer que l'ensemble ZooKeeper reste fonctionnel.
  • La mise hors service d'un nœud observateur n'a aucune incidence sur le quorum ni sur la possibilité d'élire un leader.
  • Le quorum est calculé pour tous les nœuds ZooKeeper de tous les centres de données.
  • Procédez à la maintenance du serveur suivant une fois que le serveur précédent est opérationnel
  • Utiliser la commande nc pour inspecter le nœud ZooKeeper