Informazioni sulla manutenzione di ZooKeeper

Edge per Private Cloud v4.19.01

Gli ensemble ZooKeeper sono progettati per rimanere funzionali, senza perdita di dati, nonostante la perdita di uno o più nodi ZooKeeper. Questa resilienza può essere utilizzata in modo efficace per eseguire la manutenzione sui nodi ZooKeeper senza tempi di inattività del sistema.

Informazioni su ZooKeeper ed Edge

In Edge, i nodi ZooKeeper contengono dati di configurazione relativi alla posizione e alla configurazione dei vari componenti Edge e avvisano i diversi componenti delle modifiche alla configurazione. Tutte le topologie Edge supportate per un sistema di produzione utilizzano almeno tre nodi ZooKeeper.

Utilizza le proprietà ZK_HOSTS e ZK_CLIENT_HOSTS nel file di configurazione Edge per specificare i nodi ZooKeeper. Ad esempio:

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

Dove:

  • ZK_HOSTS specifica gli indirizzi IP dei nodi ZooKeeper. Gli indirizzi IP devono essere elencati nello stesso ordine su tutti i nodi ZooKeeper.

    In un ambiente con più data center, elenca tutti i nodi ZooKeeper di tutti i data center.

  • ZK_CLIENT_HOSTS specifica gli indirizzi IP dei nodi ZooKeeper utilizzati solo da questo data center. Gli indirizzi IP devono essere elencati nello stesso ordine su tutti i nodi ZooKeeper nel data center.

    In una singola installazione di data center, si tratta degli stessi nodi specificati da ZK_HOSTS. In un ambiente multi-data center, il file di configurazione perimetrale per ogni data center deve elencare solo i nodi ZooKeeper per quel data center.

Per impostazione predefinita, tutti i nodi ZooKeeper sono designati come nodi voter. Ciò significa che tutti i nodi partecipano alla scelta del leader di ZooKeeper. Puoi includere il modificatore :observer con ZK_HOSTS per indicare che il nodo è un nodo osservatore e non un elettore. Un nodo osservatore non partecipa all'elezione del leader.

In genere il modificatore :observer viene specificato quando crei più data center Edge o quando un singolo data center ha un numero elevato di nodi ZooKeeper. Ad esempio, in un'installazione Edge a 12 host con due data center, ZooKeeper sul nodo 9 nel data center 2 è l'osservatore:

Successivamente, utilizza le seguenti impostazioni nel file di configurazione per il data center 1:

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

Per quanto riguarda il data center 2:

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

Le seguenti sezioni contengono ulteriori dettagli sui nodi leader, elettori e osservatore e descrivono le considerazioni relative all'aggiunta dei nodi elettori e osservatori.

Informazioni su leader, follower, elettori e osservatori

In un'installazione ZooKeeper multi-nodo, uno dei nodi è designato come leader. Tutti gli altri nodi ZooKeeper sono designati come follower. Mentre le letture possono avvenire da qualsiasi nodo ZooKeeper, tutte le richieste di scrittura vengono inoltrate al leader. Ad esempio, un nuovo processore di messaggi viene aggiunto a Edge. Queste informazioni vengono scritte al responsabile di ZooKeeper. Tutti i follower replicano quindi i dati.

Al momento dell'installazione di Edge, designi ciascun nodo ZooKeeper come elettore o come osservatore. Il leader viene quindi eletto da tutti i nodi elettori di ZooKeeper. L'unico requisito per l'elezione di un leader è che ci sia un quorum di nodi elettori di ZooKeeper funzionanti. Un quorum significa che più della metà di tutti i nodi di ZooKeeper elettori, in tutti i data center, sono funzionanti.

Se non è disponibile un quorum di nodi elettori, non può essere eletto nessun leader. In questo scenario, Zookeeper non può gestire richieste. Ciò significa che non puoi effettuare una richiesta a Edge Management Server, elaborare le richieste dell'API di gestione o accedere alla UI Edge finché il quorum non verrà ripristinato.

Ad esempio, in una singola installazione di un data center:

  • Hai installato tre nodi ZooKeeper
  • Tutti i nodi ZooKeeper sono elettori
  • Il quorum è costituito da due nodi elettori funzionanti
  • Se è disponibile un solo nodo elettori, l'ensemble ZooKeeper non può funzionare

In un'installazione con due data center:

  • Hai installato tre nodi ZooKeeper per data center, per un totale di sei nodi
  • Il data center 1 ha tre nodi elettori
  • Il data center 2 ha due nodi elettori e un nodo osservatore
  • Il quorum si basa sui cinque elettori di entrambi i data center, pertanto è costituito da tre nodi elettori funzionanti
  • Se sono disponibili solo due o meno nodi elettori, l'ensemble ZooKeeper non può funzionare

Considerazioni sull'aggiunta di nodi come elettori o osservatori

I tuoi requisiti di sistema potrebbero richiedere l'aggiunta di altri nodi ZooKeeper all'installazione Edge. La documentazione relativa all'aggiunta di nodi ZooKeeper descrive come aggiungere ulteriori nodi ZooKeeper a Edge. Quando aggiungi nodi ZooKeeper, devi prendere in considerazione il tipo di nodi da aggiungere: elettore o osservatore.

Vuoi assicurarti di avere un numero sufficiente di nodi elettori in modo che, se uno o più nodi elettori sono in basso, l'ensemble ZooKeeper possa continuare a funzionare, il che significa che è ancora disponibile un quorum di nodi elettori. Aggiungendo nodi elettori, aumenti le dimensioni del quorum e quindi puoi tollerare che più nodi elettori siano inattivi.

Tuttavia, l'aggiunta di altri nodi elettori può influire negativamente sulle prestazioni in scrittura perché le operazioni di scrittura richiedono che il quorum sia d'accordo sulla variante leader. Il tempo necessario per determinare la variante principale si basa sul numero di nodi elettori, che aumenta man mano che vengono aggiunti altri nodi elettori. Di conseguenza, non vuoi far votare tutti i nodi.

Invece di aggiungere nodi elettori, puoi aggiungerne altri. L'aggiunta di nodi osservatore aumenta le prestazioni complessive di lettura del sistema senza aumentare l'overhead associato all'elezione di un leader perché i nodi osservatore non votano e non influiscono sulle dimensioni del quorum. Pertanto, la caduta di un nodo osservatore non influisce sulla capacità dell'insieme di scegliere un leader. Tuttavia, la perdita dei nodi osservatore può causare un deterioramento delle prestazioni di lettura dell'ensemble ZooKeeper, perché è disponibile un numero inferiore di nodi per le richieste di dati di servizio.

In un singolo data center, Apigee consiglia di non avere più di cinque elettori, indipendentemente dal numero di nodi osservatore. In due data center, Apigee consiglia di non avere più di nove elettori (cinque in un data center e quattro nell'altro). Puoi quindi aggiungere tutti i nodi osservatore necessari per i tuoi requisiti di sistema.

Rimuovi un nodo Zookeeper

Sono molti i motivi per cui potresti voler rimuovere un nodo Zookeeper; ad esempio, un nodo è danneggiato o è stato aggiunto all'ambiente sbagliato.

Questa sezione descrive come rimuovere un nodo Zookeeper quando il nodo è inattivo e non raggiungibile.

Per rimuovere un nodo Zookeeper:

  1. Modifica il file di configurazione silenziosa e rimuovi l'indirizzo IP del nodo Zookeeper che vuoi rimuovere.
  2. Esegui di nuovo il comando setup per Zookeeper per riconfigurare i nodi ZooKeeper rimanenti:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Riavvia tutti i nodi Zookeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Riconfigura il nodo del server di gestione:
    /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. Riconfigura tutti i router:
    /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. Riconfigura tutti i processori di messaggi:
    /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. Riconfigura tutti i nodi 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. Riconfigura tutti i nodi 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

Considerazioni sulla manutenzione

Puoi eseguire la manutenzione di ZooKeeper su un insieme completamente funzionante senza tempi di inattività se lo hai eseguito su un singolo nodo alla volta. Se ti assicuri che un solo nodo ZooKeeper sia inattivo alla volta, puoi garantire che sia sempre disponibile un quorum di nodi elettori per eleggere un leader.

Manutenzione in più data center

Quando lavori con più data center, ricorda che l'insieme ZooKeeper non fa distinzioni tra i data center. Gli assiemi ZooKeeper visualizzano tutti i nodi ZooKeeper in tutti i data center come un unico ensemble.

La posizione dei nodi elettori in un determinato data center non viene presa in considerazione quando ZooKeeper esegue i calcoli del quorum. I singoli nodi possono perdersi nei data center, ma purché venga conservato un quorum nell'intero insieme, ZooKeeper rimane operativo.

Implicazioni per la manutenzione

In vari momenti, dovrai disattivare per la manutenzione un nodo ZooKeeper, che si tratti di un nodo elettore o di un nodo osservatore. Ad esempio, potresti dover eseguire l'upgrade della versione di Edge sul nodo, la macchina che ospita ZooKeeper potrebbe restituire un errore o il nodo potrebbe non essere più disponibile per altri motivi, ad esempio un errore di rete.

Se il nodo che risulta inattivo è un nodo osservatore, è possibile che si verifichi un leggero deterioramento delle prestazioni dell'ensemble ZooKeeper fino al ripristino del nodo. Se il nodo è un nodo elettore, può influire sulla fattibilità dell'ensemble ZooKeeper a causa della perdita di un nodo che partecipa al processo elettorale dei leader. Indipendentemente dal motivo della diminuzione, è importante mantenere un quorum di nodi elettori disponibili.

Procedura di manutenzione

Esegui le procedure di manutenzione solo dopo aver verificato che un ensemble ZooKeeper funzioni correttamente. Questo presuppone che i nodi di osservazione siano funzionali e che ci siano abbastanza nodi elettori disponibili durante la manutenzione per mantenere un quorum.

Quando queste condizioni sono soddisfatte, un ensemble ZooKeeper di dimensioni arbitrarie può tollerare la perdita di un singolo nodo in qualsiasi momento senza perdita di dati o impatto significativo sulle prestazioni. Ciò significa che sei libero di eseguire la manutenzione su qualsiasi nodo dell'insieme, purché si trovi su un nodo alla volta.

Durante l'esecuzione della manutenzione, utilizza la procedura seguente per determinare il tipo di nodo ZooKeeper (leader, elettore o osservatore):

  1. Se non è installato sul nodo ZooKeeper, installa nc:
    sudo yum install nc
  2. Esegui questo comando nc sul nodo, dove 2181 è la porta ZooKeeper:
    echo stat | nc localhost 2181

    Dovresti vedere l'output nel modulo:

    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

    Nella riga Mode dell'output relativo ai nodi, dovresti vedere observer, leader o follower (che significa un elettore che non è il leader) a seconda della configurazione del nodo.

  3. Ripeti i passaggi 1 e 2 su ciascun nodo ZooKeeper.

Riepilogo

Il modo migliore per eseguire la manutenzione di un ensemble ZooKeeper è eseguirlo un nodo alla volta. Ricorda:

  • Devi mantenere un quorum di nodi elettori durante la manutenzione per garantire che l'insieme ZooKeeper continui a funzionare.
  • La rimozione di un nodo osservatore non influisce sul quorum o sulla capacità di eleggere un leader.
  • Il quorum viene calcolato in tutti i nodi ZooKeeper in tutti i data center.
  • Procedi con la manutenzione del server successivo dopo che il server precedente è diventato operativo.
  • Utilizza il comando nc per ispezionare il nodo ZooKeeper.