Informazioni sulla manutenzione di ZooKeeper

I gruppi ZooKeeper sono progettati per rimanere funzionali, senza perdita di dati, nonostante la perdita uno o più nodi ZooKeeper. Questa resilienza può essere utilizzata in modo efficace per eseguire attività di manutenzione 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 ai vari componenti Edge e avvisa i diversi componenti delle modifiche alla configurazione. Tutti topologie Edge supportate per un sistema di produzione usano almeno tre ZooKeeper nodi.

Utilizza le proprietà ZK_HOSTS e ZK_CLIENT_HOSTS nella File di configurazione perimetrale 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 di ZooKeeper.

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

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

    In una singola installazione del data center, si tratta degli stessi nodi specificati da ZK_HOSTS. In un multi-Data Center, il file di configurazione perimetrale di 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 i nodi tutti partecipano all'elezione del leader di ZooKeeper. Puoi includere Modificatore :observer con ZK_HOSTS che indica che Si tratta di un nodo osservatore, non di un elettore. Un nodo osservatore non partecipa a l'elezione del leader.

In genere specifichi il modificatore :observer quando crei più dati periferici Center o quando un singolo data center ha un grande numero di nodi ZooKeeper. Ad esempio, in una Installazione perimetrale a 12 host con due data center, ZooKeeper sul nodo 9 nel Data Center 2 è osservatore:

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

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

Per 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 su leader, elettori e nodi osservatore e descrivere le considerazioni relative all'aggiunta di nodi elettori e osservatori.

Informazioni su leader, follower elettori e osservatori

In un'installazione ZooKeeper con più nodi, uno dei nodi è designato come leader. Tutti gli altri nodi di ZooKeeper sono designati come follower. Le letture possono avvenire da qualsiasi nel nodo ZooKeeper, tutte le richieste di scrittura vengono inoltrate alla variante leader. Ad esempio, una nuova Il processore è stato aggiunto a Edge. Queste informazioni vengono scritte al leader di ZooKeeper. Tutti i follower per poi replicare i dati.

Al momento dell'installazione di Edge, designi ogni nodo ZooKeeper come elettore o come osservatore. La il leader viene quindi eletto da tutti i nodi degli elettori ZooKeeper. L'unico requisito per l'elezione di un il responsabile è che deve essere disponibile un quorum di nodi elettorali funzionanti di ZooKeeper. R quorum significa che più della metà di tutti i nodi degli elettori ZooKeeper, in tutti i data center, funzionale.

Se non è disponibile un quorum di nodi elettorali, non può essere eletto nessun leader. In questo scenario, Zookeeper non può gestire richieste. Ciò significa che non è possibile effettuare una richiesta a Edge Management Il server, elabora le richieste API o accedi alla UI Edge fino a quando non viene ripristinato il quorum.

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

  • Hai installato tre nodi ZooKeeper
  • Tutti i nodi di ZooKeeper sono elettori
  • Il quorum è costituito da due nodi elettorali funzionanti
  • Se è disponibile un solo nodo elettore, l'insieme 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 elettorali
  • Il data center 2 ha due nodi elettori e un nodo osservatore
  • Il quorum si basa sui cinque elettori di entrambi i data center ed è quindi tre nodi elettorali funzionanti
  • Se sono disponibili solo due o meno nodi elettorali, l'insieme ZooKeeper non può funzione

Considerazioni sull'aggiunta di nodi come elettori osservatori

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

È necessario assicurarsi di avere un numero sufficiente di nodi elettorali in modo che, se uno o più nodi elettori sono inattivi il gruppo ZooKeeper può ancora funzionare, il che significa che c'è ancora un quorum di elettori disponibili. Aggiungendo i nodi degli elettori, aumenti la dimensione del quorum e, di conseguenza, tollerano che più nodi elettori siano inattivi.

Tuttavia, l'aggiunta di altri nodi elettori può influire negativamente sulle prestazioni di scrittura poiché operazioni richiedono il quorum per concordare il leader. Il tempo necessario per determinare la variante principale si basa sul numero di elettori, che aumenta man mano che si aggiungono altri nodi. Pertanto, non devi rendere tutti i nodi elettori.

Invece di aggiungere nodi elettori, puoi aggiungere nodi osservatori. L'aggiunta di nodi osservatori aumenta il sistema nel suo complesso legge le prestazioni senza aumentare l'overhead associato alla scelta di un leader perché i nodi osservatori non votano e non influiscono sulla dimensione del quorum. Quindi, se un nodo osservatore passa non influisce sulla capacità dell'ensemble di eleggere un leader. Tuttavia, perdere l'osservatore di nodi possono causare un peggioramento delle prestazioni di lettura dell'insieme ZooKeeper, perché di nodi disponibili per le richieste di dati di servizio.

In un singolo data center, Apigee consiglia di avere non più di cinque elettori indipendentemente del 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). Successivamente, puoi aggiungere nodi di osservazione in base alle esigenze dei tuoi requisiti di sistema.

Rimuovere un nodo Zookeeper

Esistono molti motivi per cui potresti voler rimuovere un nodo Zookeeper; Ad esempio, un nodo ha ricevuto è 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 da rimuovere.
  2. Esegui di nuovo il comando setup per consentire a Zookeeper di riconfigurare lo ZooKeeper rimanente nodi:
    /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 eseguito su un singolo nodo alla volta. Assicurandosi che un solo nodo ZooKeeper sia inattivo in qualsiasi momento, puoi fare in modo che sia sempre disponibile un quorum di elettori per eleggere leader.

Manutenzione in più data center

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

La posizione dei nodi degli elettori in un determinato data center non è un fattore determinante per l'esecuzione di ZooKeeper i calcoli del quorum. I singoli nodi possono attraversare i data center, ma purché sia presente il quorum preservata in tutto il complesso, ZooKeeper rimane funzionale.

Implicazioni per la manutenzione

Spesso dovrai disattivare un nodo ZooKeeper per la manutenzione. Puoi o un nodo osservatore. Ad esempio, potresti dover eseguire l'upgrade della versione di Edge sul nodo, potrebbe verificarsi un errore della macchina che ospita ZooKeeper oppure il nodo potrebbe non essere più disponibile ad esempio un errore di rete.

Se il nodo che non funziona è un nodo osservatore, è possibile che si verifichi un leggero peggioramento delle le prestazioni dell'insieme ZooKeeper fino al ripristino del nodo. Se il nodo è un elettore nodo, può influire sulla fattibilità dell'ensemble ZooKeeper a causa della perdita di un nodo che partecipa al processo elettorale. A prescindere dal motivo per cui il nodo degli elettori in basso, è importante mantenere un quorum di nodi elettorali disponibili.

Procedura di manutenzione

Esegui procedure di manutenzione solo dopo aver verificato che uno ZooKeeper sia funzionale. Questo presuppone che i nodi osservatori siano funzionali e che siano presenti nodi elettori disponibili durante la manutenzione per mantenere il quorum.

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

Nell'ambito dell'esecuzione della manutenzione, utilizza la seguente procedura 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 di 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 per i nodi, dovresti vedere observer, leader oppure follower (ovvero un elettore non 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 su un insieme ZooKeeper è eseguirlo su un solo nodo nel tempo. Ricorda:

  • Devi mantenere un quorum di nodi elettorali durante la manutenzione per assicurarti che ZooKeeper rimane funzionale.
  • Abbattere 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 al server successivo quando quello precedente è operativo.
  • Utilizza il comando nc per esaminare il nodo ZooKeeper.