Informazioni sulla manutenzione di ZooKeeper

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 dei 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 le modifiche di configurazione ai diversi componenti. 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 multi-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'installazione di un singolo data center, questi sono gli 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 ZooKeeper. Puoi includere il :observer modificatore con ZK_HOSTS per indicare che il nodo è un nodo observer e non un nodo voter. Un nodo observer non partecipa all'elezione del leader.

In genere, il modificatore :observer viene specificato quando si creano più data center Edge Data 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' observer:

Quindi 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 2:

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

Le sezioni seguenti contengono ulteriori dettagli sui nodi leader, voter e observer e descrivono le considerazioni sull'aggiunta di nodi voter e observer.

Informazioni su leader, follower, voter e observer

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, un nuovo Message Processor viene aggiunto a Edge. Queste informazioni vengono scritte nel leader ZooKeeper. Tutti i follower replicano i dati.

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

Se non è disponibile un quorum di nodi voter, non è possibile eleggere un leader. In questo scenario, ZooKeeper non può soddisfare le richieste. Ciò significa che non puoi inviare una richiesta al server di gestione Edge, elaborare le richieste API o accedere alla nuova 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 voter
  • Il quorum è di due nodi voter funzionanti
  • Se è disponibile un solo nodo voter, 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 voter
  • Il data center 2 ha due nodi voter e un nodo observer
  • Il quorum si basa sui cinque voter in entrambi i data center ed è quindi tre nodi voter funzionanti
  • Se sono disponibili solo due o meno nodi voter, l'ensemble ZooKeeper non può funzionare

Considerazioni sull'aggiunta di nodi come voter o observer

I requisiti di sistema potrebbero richiedere l'aggiunta di altri nodi ZooKeeper all'installazione di Edge. La documentazione Aggiunta di nodi ZooKeeper descrive come aggiungere altri nodi ZooKeeper a Edge. Quando aggiungi nodi ZooKeeper, devi tenere in considerazione il tipo di nodi da aggiungere: voter o observer.

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

Tuttavia, l'aggiunta di altri nodi voter può influire negativamente sulle prestazioni di scrittura perché le operazioni di scrittura richiedono che il quorum sia d'accordo sul leader. Il tempo necessario per determinare il leader si basa sul numero di nodi voter, che aumenta man mano che aggiungi altri nodi voter. Pertanto, non devi rendere tutti i nodi voter.

Anziché aggiungere nodi voter, puoi aggiungere nodi observer. L'aggiunta di nodi observer aumenta le prestazioni di lettura complessive del sistema senza aggiungere l'overhead dell'elezione di un leader perché i nodi observer non votano e non influiscono sulle dimensioni del quorum. Pertanto, se un nodo observer diventa inattivo, non influisce sulla capacità dell'ensemble di eleggere un leader. Tuttavia, la perdita di nodi observer può causare un peggioramento 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 voter, indipendentemente dal numero di nodi observer. In due data center, Apigee consiglia di non avere più di nove voter (cinque in un data center e quattro nell'altro). Puoi quindi aggiungere tutti i nodi observer necessari per i requisiti di sistema.

Rimuovi un nodo Zookeeper

Esistono molti motivi per cui potresti voler rimuovere un nodo Zookeeper, ad esempio se 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 tu 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 Message Processor:
    /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 ensemble completamente funzionante senza tempi di inattività se l'hai eseguita su un singolo nodo alla volta. Assicurandoti che sia inattivo un solo nodo ZooKeeper alla volta, puoi garantire che sia sempre disponibile un quorum di nodi voter 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 ensemble.

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

Implicazioni della manutenzione

Di tanto in tanto, dovrai disattivare un nodo ZooKeeper per la manutenzione, un nodo voter o un nodo observer. Ad esempio, potresti dover eseguire l'upgrade della versione di Edge sul nodo, la macchina che ospita ZooKeeper potrebbe non funzionare o il nodo potrebbe diventare non disponibile per qualche altro motivo, ad esempio un errore di rete.

Se il nodo che diventa inattivo è un nodo observer, puoi prevedere un leggero peggioramento delle prestazioni dell'ensemble ZooKeeper fino al ripristino del nodo. Se il nodo è un nodo voter, 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 voter diventa inattivo, è importante mantenere un quorum di nodi voter disponibili.

Procedura di manutenzione

Esegui le procedure di manutenzione solo dopo aver verificato che un ensemble ZooKeeper sia funzionale. Si presuppone che i nodi observer siano funzionali e che siano disponibili un numero sufficiente di nodi voter 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 puoi eseguire la manutenzione su qualsiasi nodo dell'ensemble, purché su un nodo alla volta.

Nell'ambito dell'esecuzione della manutenzione, utilizza la seguente procedura per determinare il tipo di nodo 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, dove 2181 è la porta ZooKeeper:
    echo stat | nc localhost 2181

    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 voter che non è il leader) a seconda della configurazione del nodo.

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

Riepilogo

Il modo migliore per eseguire la manutenzione di un ensemble ZooKeeper è eseguirla su un nodo alla volta. Remember:

  • Devi mantenere un quorum di nodi voter durante la manutenzione per garantire che l'ensemble ZooKeeper rimanga funzionale.
  • La disattivazione di un nodo observer non influisce sul quorum o sulla capacità 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.