À propos de la maintenance de ZooKeeper

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

À propos de ZooKeeper et Edge

Dans Edge, les nœuds ZooKeeper contiennent des données de configuration sur l'emplacement et la configuration de les différents composants Edge et informe les différents composants des modifications de configuration. Tout les topologies Edge compatibles avec un système de production utilisent au moins trois topologies ZooKeeper nœuds.

Utilisez les propriétés ZK_HOSTS et ZK_CLIENT_HOSTS dans la Fichier de configuration Edge pour spécifier les nœuds ZooKeeper Exemple :

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 répertoriés dans le même ordre sur tous les nœuds ZooKeeper.

    Dans un environnement comprenant plusieurs centres 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 le Centre de données uniquement. Les adresses IP doivent être répertoriées dans le même ordre sur tous les nœuds ZooKeeper dans le 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 multicentre de données, le fichier de configuration Edge de chaque centre de données ne doit contenir que Nœuds ZooKeeper pour 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 tous participent à l'élection du responsable ZooKeeper. Vous pouvez inclure le paramètre le modificateur :observer avec ZK_HOSTS pour indiquer que le nœud est un nœud d'observateur, et non un électeur. Un nœud d'observateur ne participe pas l'élection du dirigeant.

Vous spécifiez généralement le modificateur :observer lorsque vous créez plusieurs données Edge ou lorsqu'un centre de données unique dispose d'un grand nombre de nœuds ZooKeeper. Par exemple, dans un 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 le observateur:

Vous utiliserez ensuite les paramètres suivants dans le fichier de configuration du 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 2:

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

Les sections suivantes contiennent plus d'informations sur les dirigeants, les électeurs et les et décrire les éléments à prendre en compte pour ajouter des nœuds d'électeur et d'observateur.

À propos des dirigeants, des followers, les électeurs et les observateurs

Dans une installation ZooKeeper multinœud, l'un des nœuds est désigné comme leader. Tous les autres nœuds ZooKeeper sont désignés comme followers. Bien que les lectures puissent avoir lieu Nœud ZooKeeper, toutes les requêtes d'écriture sont transférées au leader. Par exemple, un nouveau message Le processeur est ajouté à Edge. Cette information est écrite pour le leader ZooKeeper. Tous les abonnés puis répliquer les données.

Au moment de l'installation d'Edge, vous désignez chaque nœud ZooKeeper comme électeur ou observateur. La responsable est ensuite élu par tous les nœuds ZooKeeper électeurs. La seule condition requise pour choisir une est qu'il doit y avoir un quorum opérationnel de votants pour ZooKeeper. A le quorum signifie que plus de la moitié des nœuds ZooKeeper votants, dans tous les centres de données, sont et fonctionnel.

S'il n'y a pas de quorum de nœuds électoraux disponible, aucun dirigeant 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 demande à la gestion Serveur, traiter les requêtes API ou se connecter à l'interface utilisateur Edge jusqu'à ce que le quorum soit restauré.

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

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

Dans une installation comprenant 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 compte trois candidatures.
  • Le centre de données 2 comporte deux nœuds électoraux et un observateur.
  • Le quorum est basé sur les cinq votants des deux centres de données. Il est donc trois nœuds électoraux fonctionnels
  • Si deux nœuds d'électeur ou moins sont disponibles, l'ensemble ZooKeeper ne peut pas fonction

Éléments à prendre en compte pour ajouter des nœuds en tant qu'électeurs ou observateurs

Votre configuration système peut nécessiter l'ajout de nœuds ZooKeeper supplémentaires à votre Edge. l'installation. La documentation Ajouter des nœuds ZooKeeper explique comment ajouter des nœuds ZooKeeper supplémentaires à Edge. Lors de l'ajout de nœuds ZooKeeper, vous devez tenir compte du type de nœuds à ajouter: électeur ou observateur.

Assurez-vous d'avoir suffisamment de nœuds de vote pour que, si un ou plusieurs électeurs ne le sont pas, l'ensemble ZooKeeper peut encore fonctionner : il reste donc un quorum de nœuds électoraux. disponibles. En ajoutant des nœuds de vote, vous augmentez la taille du quorum, ce qui vous permet tolérer une hausse du nombre de votants.

Cependant, l'ajout de nœuds de vote peut avoir un impact négatif sur les performances d'écriture, car les opérations nécessitent un quorum pour convenir de la variante optimale. Temps nécessaire pour déterminer la variante optimale est basée sur le nombre de listes de vote, qui augmente à mesure que vous en ajoutez. Par conséquent, vous ne voulez pas que tous les nœuds votent.

Au lieu d'ajouter des nœuds d'électeur, vous pouvez ajouter des nœuds d'observateur. L'ajout de nœuds d'observateur augmente les performances globales de lecture du système sans augmenter les frais généraux liés à l'élection d'un responsable, car Les nœuds d'observateur ne votent pas et n'affectent pas la taille du quorum. Par conséquent, si un nœud d'observateur à la baisse, cela n'affecte pas la capacité de l'ensemble à élire son leader. Cependant, la perte d'un observateur peut entraîner une dégradation des performances de lecture de l'ensemble ZooKeeper, car des de nœuds disponibles pour les requêtes de données de service.

Dans un seul centre de données, Apigee recommande de ne pas avoir plus de cinq votants, du nombre de nœuds d'observation. Dans deux centres de données, Apigee recommande de ne plus avoir que neuf électeurs (cinq dans un centre de données et quatre dans l'autre). Vous pouvez ensuite ajouter autant de les nœuds d'observation si nécessaire, selon la configuration système requise.

Supprimer un nœud ZooKeeper

La suppression d'un nœud Zookeeper peut s'avérer utile pour de nombreuses raisons : Par exemple, un nœud a obtenu est corrompue ou a été ajoutée au mauvais environnement.

Cette section explique comment supprimer un nœud ZooKeeper lorsque le nœud est arrêté et qu'il n'est pas accessibles.

Pour supprimer un nœud ZooKeeper, procédez comme suit:

  1. Modifiez votre fichier de configuration silencieuse et supprimez l'adresse IP du nœud ZooKeeper que vous que vous souhaitez supprimer.
  2. Exécutez à nouveau la commande setup pour que ZooKeeper reconfigure le ZooKeeper restant. nœuds:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Redémarrez tous les nœuds ZooKeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Reconfigurez le nœud du serveur de gestion:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Reconfigurez tous les routeurs:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. Reconfigurez tous les processeurs de messages:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. Reconfigurez tous les nœuds Qpid:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. Reconfigurez tous les nœuds Postgres:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

Remarques concernant la maintenance

Vous pouvez effectuer la maintenance de ZooKeeper sur un ensemble entièrement fonctionnel sans temps d'arrêt si vous l'ont effectuée sur un seul nœud à la fois. En s'assurant qu'un seul nœud ZooKeeper est en panne à tout moment, vous pouvez vous assurer qu'il y a toujours un quorum de nœuds de vote disponibles pour élire un responsable.

Maintenance pendant plusieurs centres de données

Lorsque vous travaillez avec plusieurs centres de données, rappelez-vous que l'ensemble ZooKeeper faire la distinction entre les centres de données. Les assemblages ZooKeeper permettent d'afficher tous les nœuds ZooKeeper pour l'ensemble Centres de données.

ZooKeeper ne prend pas en compte la position des nœuds électoraux dans un centre de données donné les calculs du quorum. Les nœuds individuels peuvent circuler entre les centres de données, mais tant que le quorum est préservé à l'échelle de l'ensemble, ZooKeeper reste fonctionnel.

Implications en termes de maintenance

À différents moments, vous devez arrêter un nœud ZooKeeper pour des raisons de maintenance. ou un nœud d'observateur. 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 cause, comme une erreur réseau.

Si le nœud qui tombe en panne est un nœud d'observation, vous pouvez vous attendre à une légère dégradation les performances de l'ensemble ZooKeeper jusqu'à ce que le nœud soit restauré. Si le nœud est un électeur elle 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 des responsables. Quelle que soit la raison pour laquelle le nœud électoral va il est important de maintenir un quorum de nœuds électoraux disponibles.

Procédure de maintenance

Effectuez les procédures de maintenance uniquement après vous être assuré qu'un ZooKeeper est fonctionnel. Cela suppose que les nœuds d'observation sont fonctionnels et qu'il y a suffisamment 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 la perte d'un seul nœud à tout moment, sans perte de données ni impact significatif sur les performances. Ce vous êtes libre d'effectuer la maintenance sur n'importe quel nœud de l'ensemble, tant qu'il se trouve sur un nœud à la fois.

Lors de la maintenance, utilisez la procédure suivante pour déterminer le type Nœud ZooKeeper (responsable, électeur ou observateur):

  1. Si ce n'est pas le cas sur le nœud ZooKeeper, installez nc:
    sudo yum install nc
  2. Exécutez la commande nc suivante sur le nœud, où 2181 correspond au port ZooKeeper:
    echo stat | nc localhost 2181

    Le résultat doit s'afficher sous la forme suivante:

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

    Dans la ligne Mode du résultat des nœuds, vous devriez voir observer. leader ou follower (un électeur autre que le chef) en fonction de la configuration du nœud.

  3. Répétez les étapes 1 et 2 sur chaque nœud ZooKeeper.

Résumé

La meilleure façon d'effectuer la maintenance d'un ensemble ZooKeeper est de l'effectuer nœud par nœud. en temps réel. Souvenez-vous :

  • Vous devez maintenir un quorum de nœuds d'électeur pendant la maintenance pour garantir que ZooKeeper l'ensemble reste fonctionnel.
  • La suppression d'un nœud d'observation n'a aucune incidence sur le quorum ni sur la capacité d'élection d'un responsable.
  • Le quorum est calculé pour l'ensemble des nœuds ZooKeeper de tous les centres de données.
  • Une fois que le serveur précédent est opérationnel, effectuez la maintenance sur le serveur suivant.
  • Utilisez la commande nc pour inspecter le nœud ZooKeeper.