Informazioni sulla manutenzione di ZooKeeper

Edge for Private Cloud versione 4.17.01

Gli insiemi ZooKeeper sono progettati per rimanere funzionali, senza perdita di dati, nonostante la perdita di uno o più nodi ZooKeeper. Questa resilienza può essere utilizzata efficacemente per eseguire la manutenzione dei 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 di Edge e inviano notifiche ai diversi componenti delle modifiche di configurazione. Tutte le topologie Edge supportate per un sistema di produzione specificano di utilizzare almeno tre nodi ZooKeeper.

Utilizza le proprietà ZK_HOSTS e ZK_CLIENT_HOSTS nel file di configurazione di 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 in tutti i nodi di ZooKeeper nel data center.

    In un'unica installazione del data center, si tratta degli stessi nodi specificati da ZK_HOSTS. In un ambiente multi-data center, il file di configurazione Edge 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 all'elezione del leader di ZooKeeper. Puoi includere il modificatore ":observer" con ZK_HOSTS per indicare che la nota è un nodo observer e non un nodo di voto. Un nodo osservatore non partecipa all'elezione del leader.

In genere, specifichi il modificatore ":observer" 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 con 12 host e due data center, ZooKeeper sul nodo 9 nel data center 2 è l'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"

E per il data center

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

Informazioni su leader, follower, elettori e osservatori

In un'installazione ZooKeeper con più nodi, uno dei nodi è designato come leader. Tutti gli altri nodi ZooKeeper sono designati come follower. Sebbene le letture possano avvenire da qualsiasi nodo ZooKeeper, tutte le richieste di scrittura vengono inoltrate al leader. Ad esempio, viene aggiunto un nuovo processore di messaggi a Edge. Queste informazioni vengono scritte nel leader di ZooKeeper. Tutti i follower poi replica i dati.

Al momento dell'installazione di Edge, devi designare ogni nodo ZooKeeper come elettore o come osservatore. Il leader viene poi eletto da tutti i nodi ZooKeeper che votano. L'unico requisito per l'elezione di un leader è che sia disponibile un quorum di nodi elettori ZooKeeper funzionanti. Un quorum significa che più della metà di tutti i nodi ZooKeeper votanti, in tutti i data center, sono funzionali.

Se non è disponibile un quorum di nodi votanti, non è possibile eleggere alcun leader. In questo scenario, Zookeeper non può gestire le richieste. Ciò significa che non puoi inviare una richiesta al server di gestione di Edge, elaborare le richieste dell'API di gestione o accedere all'interfaccia utente di Edge finché il quorum non viene ripristinato.

Ad esempio, in un'unica installazione del data center:

  • Hai installato tre nodi ZooKeeper
  • Tutti i nodi ZooKeeper sono votanti
  • Il quorum è costituito da due nodi di voto funzionanti
  • Se è disponibile un solo nodo di voto, 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 di voto
  • 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 costituito da tre nodi elettorali funzionanti
  • Se sono disponibili solo due o meno nodi di voto, l'ensemble ZooKeeper non può funzionare

Aggiunta di nodi come votanti o osservatori

I requisiti di sistema potrebbero richiedere l'aggiunta di altri nodi ZooKeeper all'installazione di Edge. La documentazione relativa all'aggiunta di nodi ZooKeeper descrive come aggiungere altri nodi ZooKeeper a Edge. Quando aggiungi i nodi ZooKeeper, devi tenere conto del tipo di nodi da aggiungere: elettore o osservatore.

Assicurati di avere un numero sufficiente di nodi di voto in modo che, se uno o più nodi di voto non sono attivi, l'ensemble ZooKeeper possa comunque funzionare, ovvero che sia ancora disponibile un quorum di nodi di voto. Aggiungendo nodi di voto, aumenti le dimensioni del quorum e, di conseguenza, puoi tollerare un numero maggiore di nodi di voto inattivi.

Tuttavia, l'aggiunta di altri nodi di voto può influire negativamente sulle prestazioni di scrittura perché le operazioni di scrittura richiedono il quorum per l'accordo sul leader. Il tempo necessario per determinare la variante leader si basa sul numero di nodi degli elettori, che aumenta man mano che si aggiungono altri nodi. Pertanto, non è consigliabile impostare tutti i nodi come votanti.

Invece di aggiungere nodi elettori, puoi aggiungere nodi osservatori. L'aggiunta di nodi osservatori aumenta le prestazioni di lettura complessive del sistema senza aumentare l'overhead dell'elezione di un leader perché i nodi osservatori non votano e non influiscono sulle dimensioni del quorum. Pertanto, se un nodo di osservazione si arresta, la capacità dell'ensemble di eleggere un leader non viene influenzata. Tuttavia, la perdita di nodi osservatori può causare un degrado delle prestazioni di lettura dell'ensemble ZooKeeper perché sono disponibili meno nodi per soddisfare le richieste di dati.

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

Considerazioni di manutenzione

La manutenzione di ZooKeeper può essere eseguita su un insieme completamente funzionante senza tempi di inattività se viene eseguita su un singolo nodo alla volta. Assicurati che in un determinato momento sia inattivo solo un nodo ZooKeeper, in modo da avere sempre a disposizione un quorum di nodi elettori per eleggere un leader.

Manutenzione in più data center

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

La posizione dei nodi di voto in un determinato data center non è un fattore quando ZooKeeper esegue i calcoli del quorum. I singoli nodi possono andare in down nei data center, ma finché viene mantenuto un quorum nell'intero ensemble, ZooKeeper rimane funzionale.

Implicazioni per la manutenzione

A volte dovrai arrestare un nodo ZooKeeper per la manutenzione, che si tratti di un nodo votante o di un nodo di osservazione. Ad esempio, potresti dover eseguire l'upgrade della versione di Edge sul nodo, la macchina che ospita ZooKeeper potrebbe non riuscire o il nodo potrebbe non essere più disponibile per altri motivi, ad esempio un errore di rete.

Se il nodo che si arresta in modo anomalo è un nodo di osservazione, puoi prevedere un leggero calo del rendimento dell'ensemble ZooKeeper fino al ripristino del nodo. Se il nodo è un nodo elettore, può influire sulla sopravvivenza dell'ensemble ZooKeeper a causa della perdita di un nodo che partecipa al processo di elezione dei leader. Indipendentemente dal motivo della caduta del nodo elettori, è importante mantenere un quorum di nodi disponibili.

Procedura di manutenzione

Ti consigliamo di eseguire qualsiasi procedura di manutenzione solo dopo aver verificato che un insieme ZooKeeper sia funzionale. Si presume che i nodi di osservazione siano funzionanti e che siano disponibili un numero sufficiente di nodi di voto 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 sul rendimento. Ciò significa che puoi eseguire la manutenzione su qualsiasi nodo dell'ensemble, purché sia su un solo nodo alla volta.

Nell'ambito dell'esecuzione della manutenzione, utilizza la seguente procedura per determinare il tipo di un node ZooKeeper (leader, voter o observer):

  1. Se non è installato sul nodo ZooKeeper, installa nc:
    > sudo yum install nc
  2. Esegui il seguente comando nc sul nodo:
    > echo stat | nc localhost 2181

    Dove 2181 è la porta di ZooKeeper. Dovresti visualizzare l'output nel seguente formato:
    Versione Zookeeper: 3.4.5-1392090, compilata il 30/09/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Tempi di latenza min/media/max: 0/0/0
    Ricevuto: 1
    Inviato: 0
    Connessioni: 1
    In attesa: 0
    Zxid: 0xc00000044
    Modalità: follower
    Numero di nodi: 653


    Nella riga Modalità dell'output per i nodi, dovresti vedere observer, leader o follower (ovvero un elettore diverso dal leader) a seconda della configurazione del nodo.

    Nota: in un'installazione autonoma di Edge con un singolo nodo ZooKeeper, la modalità è impostata su autonoma.
  3. Ripeti i passaggi 1 e 2 su ogni nodo ZooKeeper.

Riepilogo

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

  • Devi mantenere un quorum di elettori durante la manutenzione per garantire che il complesso ZooKeeper rimanga funzionante
  • L'interruzione di un nodo di osservazione non influisce sul quorum o sulla possibilità di eleggere un leader
  • Il quorum viene calcolato su tutti i nodi ZooKeeper in tutti i data center
  • Procedi con la manutenzione del server successivo dopo che il server precedente è operativo
  • Utilizza il comando nc per ispezionare il nodo ZooKeeper