Informazioni sulla manutenzione di ZooKeeper

Edge for Private Cloud v4.18.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 topiarie Edge supportate per un sistema di produzione specificano l'utilizzo di almeno tre nodi ZooKeeper.

Utilizza le proprietà ZK_HOSTS e ZK_CLIENT_HOSTS nel file di configurazione di Edge per specificare i nodi ZooKeeper. Per l'esame

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 del data center.

    In un'unica installazione del data center, si tratta degli stessi nodi specificati da ZK_HOSTS. In un ambiente con più data center, il file di configurazione di 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 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:

Poi, 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"

E per il data center

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

Informazioni su leader, seguaci, votanti e osservatori

In un'installazione ZooKeeper multi-nodo, 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, a Edge viene aggiunto un nuovo elaboratore di messaggi. 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 di voto e un nodo di osservazione
  • 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 il leader si basa sul numero di nodi di voto, che aumenta man mano che ne aggiungi altri. Pertanto, non è consigliabile impostare tutti i nodi come votanti.

Anziché aggiungere nodi di voto, puoi aggiungere nodi di osservazione. 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). Puoi quindi aggiungere tutti i nodi osservatori necessari per i requisiti di sistema.

Considerazioni sulla manutenzione

La manutenzione di ZooKeeper può essere eseguita su un ensemble 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 su 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 disponibile per qualche altro motivo, 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 votante, può influire sulla fattibilità dell'ensemble ZooKeeper a causa della perdita di un nodo che partecipa al processo di elezione del leader. Indipendentemente dal motivo dell'arresto del nodo di voto, è importante mantenere un quorum di nodi di voto 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 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 nodi di voto durante la manutenzione per garantire il funzionamento dell'ensemble ZooKeeper
  • 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