Edge for Private Cloud v. 4.17.09
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 sulla posizione e sulla configurazione dei vari componenti Edge e notificano ai diversi componenti le modifiche alla 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. Per 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 nel data center.
In un'installazione di un singolo data center, questi sono gli stessi nodi specificati da ZK_HOSTS. In un ambiente con più 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 i nodi partecipano tutti 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 voter. 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 Data Center
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
Informazioni su leader, follower, votanti e osservatori
In un'installazione ZooKeeper multi-nodo, uno dei nodi viene 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, viene aggiunto un nuovo processore di messaggi a Edge. Queste informazioni vengono scritte nel leader ZooKeeper. Tutti i follower replicano quindi i dati.
Al momento dell'installazione di Edge, designi ogni nodo ZooKeeper come votante o osservatore. Il leader viene quindi eletto da tutti i nodi ZooKeeper votanti. L'unico requisito per l'elezione di un leader è che sia disponibile un quorum di nodi di voto ZooKeeper funzionanti. Un quorum significa che più della metà di tutti i nodi ZooKeeper votanti, in tutti i data center, è funzionante.
Se non è disponibile un quorum di nodi votanti, non è possibile eleggere un leader. In questo scenario, ZooKeeper non può gestire le richieste. Ciò significa che non puoi effettuare una richiesta al server di gestione Edge, elaborare richieste API di gestione o accedere alla UI Edge finché il quorum non viene ripristinato.
Ad esempio, in un'installazione di un singolo data center:
- Hai installato tre nodi ZooKeeper
- Tutti i nodi ZooKeeper sono votanti
- Il quorum è di due nodi votanti funzionanti
- Se è disponibile un solo nodo votante, 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 votanti
- Il data center 2 ha due nodi votanti e un nodo osservatore
- Il quorum si basa sui cinque votanti di entrambi i data center ed è quindi di tre nodi votanti funzionanti
- Se sono disponibili solo due o meno nodi votanti, l'ensemble ZooKeeper non può funzionare
Aggiunta di nodi come votanti o osservatori
I requisiti di sistema potrebbero richiedere l'aggiunta di ulteriori nodi ZooKeeper all'installazione di Edge. La documentazione relativa all'aggiunta di nodi ZooKeeper descrive come aggiungere altri nodi ZooKeeper a Edge. Quando aggiungi nodi ZooKeeper, devi tenere presente il tipo di nodi da aggiungere: votante o osservatore.
Assicurati di avere un numero sufficiente di nodi votanti in modo che, se uno o più nodi votanti non sono attivi, l'ensemble ZooKeeper possa comunque funzionare, ovvero che sia ancora disponibile un quorum di nodi votanti. Aggiungendo nodi votanti, aumenti le dimensioni del quorum e, di conseguenza, puoi tollerare un numero maggiore di nodi votanti non attivi.
Tuttavia, l'aggiunta di altri nodi votanti può influire negativamente sulle prestazioni di scrittura, perché le operazioni di scrittura richiedono che il quorum concordi sul leader. Il tempo necessario per determinare il leader si basa sul numero di nodi votanti, che aumenta man mano che aggiungi altri nodi votanti. Pertanto, non è consigliabile rendere tutti i nodi votanti.
Anziché aggiungere nodi votanti, puoi aggiungere nodi osservatori. L'aggiunta di nodi osservatore aumenta le prestazioni di lettura complessive del sistema senza aggiungere l'overhead dell'elezione di un leader, perché i nodi osservatore non votano e non influiscono sulle dimensioni del quorum. Pertanto, se un nodo osservatore non è disponibile, ciò non influisce sulla capacità dell'ensemble di eleggere un leader. Tuttavia, la perdita di nodi osservatori può causare un peggioramento delle prestazioni di lettura dell'ensemble ZooKeeper perché sono disponibili meno nodi per gestire le richieste di dati.
In un singolo data center, Apigee consiglia di non avere più di cinque votanti, indipendentemente dal numero di nodi 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 osservatore 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. Assicurandoti che un solo nodo ZooKeeper sia inattivo alla volta, puoi garantire che sia sempre disponibile un quorum di nodi votanti per eleggere un leader.
Manutenzione in più data center
Quando lavori con più data center, ricorda che l'ensemble ZooKeeper non distingue tra i data center. Gli assembly ZooKeeper visualizzano tutti i nodi ZooKeeper in tutti i data center come un unico insieme.
La posizione dei nodi votanti in un determinato data center non è un fattore quando ZooKeeper esegue i calcoli del quorum. I singoli nodi possono non essere disponibili nei data center, ma finché viene mantenuto un quorum nell'intero insieme, ZooKeeper rimane funzionante.
Implicazioni per la manutenzione
In vari momenti, dovrai disattivare un nodo ZooKeeper per la manutenzione, un nodo votante o un nodo osservatore. Ad esempio, potrebbe essere necessario eseguire l'upgrade della versione di Edge sul nodo, la macchina che ospita ZooKeeper potrebbe non funzionare o il nodo potrebbe non essere disponibile per qualche altro motivo, ad esempio un errore di rete.
Se il nodo che non funziona è un nodo osservatore, puoi aspettarti un leggero peggioramento delle prestazioni 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 per cui il nodo votante non è disponibile, è importante mantenere un quorum di nodi votanti disponibili.
Procedura di manutenzione
Ti consigliamo di eseguire qualsiasi procedura di manutenzione solo dopo aver verificato che un gruppo ZooKeeper sia funzionante. Ciò presuppone che i nodi osservatori siano funzionanti e che durante la manutenzione siano disponibili abbastanza nodi votanti per mantenere un quorum.
Se queste condizioni sono soddisfatte, un insieme 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 puoi eseguire la manutenzione su qualsiasi nodo dell'ensemble, purché venga eseguita su un nodo alla volta.
Nell'ambito della manutenzione, utilizza la seguente procedura per determinare il tipo di un nodo ZooKeeper (leader, votante o osservatore):
- Se non è installato sul nodo ZooKeeper, installa nc:
> sudo yum install nc - Esegui questo comando nc sul nodo:
> echo stat | nc localhost 2181
Dove 2181 è la porta ZooKeeper. Dovresti visualizzare un output nel formato:
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 visualizzare observer, leader o follower (ovvero un nodo votante che non è il leader) a seconda della configurazione del nodo.
Nota: in un'installazione autonoma di Edge con un singolo nodo ZooKeeper, la Modalità è impostata su autonoma. - Ripeti i passaggi 1 e 2 su ogni nodo ZooKeeper.
Riepilogo
Il modo migliore per eseguire la manutenzione di un ensemble ZooKeeper è eseguirla un nodo alla volta. Ricorda:
- Devi mantenere un quorum di nodi votanti durante la manutenzione per garantire che l'ensemble ZooKeeper rimanga funzionale
- La disattivazione di un nodo osservatore 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