Edge para nuvem privada v. 4.17.09
Os conjuntos do ZooKeeper são projetados para permanecer funcionais, sem perda de dados, apesar da perda de um ou mais nós do ZooKeeper. Essa resiliência pode ser usada de maneira eficaz para realizar manutenção em nós do ZooKeeper sem inatividade do sistema.
Sobre o ZooKeeper e o Edge
No Edge, os nós do ZooKeeper contêm dados de configuração sobre o local e a configuração dos vários componentes do Edge e notificam os diferentes componentes sobre as mudanças de configuração. Todas as topologias do Edge compatíveis com um sistema de produção especificam o uso de pelo menos três nós do ZooKeeper.
Use as propriedades ZK_HOSTS e ZK_CLIENT_HOSTS no arquivo de configuração do Edge para especificar os nós do ZooKeeper. Por exemplo,
ZK_HOSTS="$IP1 $IP2 $IP3" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
em que:
- ZK_HOSTS: especifica
os endereços IP dos nós do ZooKeeper. Os endereços IP precisam ser listados na mesma ordem em todos os nós do ZooKeeper.
Em um ambiente com vários data centers, liste todos os nós do ZooKeeper de todos os data centers. - ZK_CLIENT_HOSTS:
especifica os endereços IP dos nós do ZooKeeper usados apenas por este data center. Os endereços IP precisam ser listados na mesma ordem em todos os nós do ZooKeeper no data center.
Em uma única instalação do Data Center, esses são os mesmos nós especificados por ZK_HOSTS. Em um ambiente com vários data centers, o arquivo de configuração do Edge para cada data center precisa listar apenas os nós do ZooKeeper desse data center.
Por padrão, todos os nós do ZooKeeper são designados como nós voter. Isso significa que todos os nós participam da eleição do líder do ZooKeeper. É possível incluir o modificador ":observer" com ZK_HOSTS para indicar que a nota é um nó observador, e não um eleitor. Um nó observador não participa da eleição do líder.
Normalmente, você especifica o modificador ":observer" ao criar vários data centers do Edge ou quando um único data center tem um grande número de nós do ZooKeeper. Por exemplo, em uma instalação do Edge de 12 hosts com dois data centers, o ZooKeeper no nó 9 no data center 2 é o observador:

Em seguida, use as seguintes configurações no arquivo de configuração do Data Center 1:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
E para o Data Center
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
Sobre líderes, seguidores, eleitores e observadores
Em uma instalação do ZooKeeper com vários nós, um dos nós é designado como o líder. Todos os outros nós do ZooKeeper são designados como seguidores. Embora as leituras possam acontecer em qualquer nó do ZooKeeper, todas as solicitações de gravação são encaminhadas para o líder. Por exemplo, um novo processador de mensagens é adicionado ao Edge. Essas informações são gravadas no líder do ZooKeeper. Todos os seguidores replicam os dados.
No momento da instalação do Edge, você designa cada nó do ZooKeeper como um votante ou um observador. O líder é eleito por todos os nós do ZooKeeper que votam. O único requisito para a eleição de um líder é que haja um quórum de nós de votação do ZooKeeper em funcionamento disponíveis. Um quórum significa que mais da metade de todos os nós do ZooKeeper de eleitores, em todos os data centers, estão funcionando.
Se não houver um quórum de nós de votação disponíveis, nenhum líder poderá ser eleito. Nesse cenário, o Zookeeper não pode atender a solicitações. Isso significa que não é possível fazer uma solicitação ao servidor de gerenciamento do Edge, processar solicitações da API Management ou fazer login na interface do Edge até que o quórum seja restaurado.
Por exemplo, em uma única instalação do Data Center:
- Você instalou três nós do ZooKeeper
- Todos os nós do ZooKeeper são votantes
- O quórum é de dois nós de votação em funcionamento
- Se apenas um nó de votação estiver disponível, o conjunto do ZooKeeper não poderá funcionar
Em uma instalação com dois data centers:
- Você instalou três nós do ZooKeeper por data center, totalizando seis nós.
- O data center 1 tem três nós de votação
- O Data Center 2 tem dois nós de votação e um nó observador.
- O quórum é baseado nos cinco votantes nos dois data centers e, portanto, é de três nós votantes em funcionamento
- Se apenas dois ou menos nós de votação estiverem disponíveis, o conjunto do ZooKeeper não poderá funcionar.
Como adicionar nós como votantes ou observadores
Os requisitos do sistema podem exigir que você adicione mais nós do ZooKeeper à instalação do Edge. A documentação Como adicionar nós do ZooKeeper descreve como adicionar mais nós do ZooKeeper ao Edge. Ao adicionar nós do ZooKeeper, é preciso considerar o tipo de nó a ser adicionado: votante ou observador.
É preciso ter nós de votação suficientes para que, se um ou mais nós de votação estiverem inativos, o conjunto do ZooKeeper ainda possa funcionar, ou seja, ainda há um quórum de nós de votação disponíveis. Ao adicionar nós de votação, você aumenta o tamanho do quórum e, portanto, pode tolerar mais nós de votação inativos.
No entanto, adicionar mais nós de votação pode afetar negativamente o desempenho de gravação, porque as operações de gravação exigem que o quórum concorde com o líder. O tempo necessário para determinar o líder depende do número de nós de votação, que aumenta à medida que você adiciona mais nós de votação. Portanto, não é recomendável que todos os nós sejam votantes.
Em vez de adicionar nós de votação, é possível adicionar nós de observação. A adição de nós observadores aumenta o desempenho geral de leitura do sistema sem aumentar a sobrecarga de eleger um líder, porque os nós observadores não votam e não afetam o tamanho do quórum. Portanto, se um nó observador ficar inativo, isso não afetará a capacidade do conjunto de eleger um líder. No entanto, a perda de nós observadores pode causar degradação no desempenho de leitura do conjunto do ZooKeeper, porque há menos nós disponíveis para atender às solicitações de dados.
Em um único data center, a Apigee recomenda que você não tenha mais de cinco eleitores, independentemente do número de nós observadores. Em dois data centers, a Apigee recomenda que você não tenha mais de nove eleitores (cinco em um data center e quatro no outro). Em seguida, é possível adicionar quantos nós de observador forem necessários para os requisitos do sistema.
Considerações sobre manutenção
A manutenção do ZooKeeper pode ser realizada em um conjunto totalmente funcional sem inatividade se for realizada em um único nó por vez. Ao garantir que apenas um nó do ZooKeeper esteja inativo por vez, você garante que sempre haja um quórum de nós de eleitores disponíveis para eleger um líder.
Manutenção em vários data centers
Ao trabalhar com vários data centers, lembre-se de que o conjunto do ZooKeeper não faz distinção entre eles. Os conjuntos do ZooKeeper visualizam todos os nós do ZooKeeper em todos os Data Centers como um conjunto.
A localização dos nós de votação em um determinado data center não é um fator quando o ZooKeeper realiza cálculos de quórum. Os nós individuais podem ficar inativos em todos os data centers, mas, desde que um quórum seja preservado em todo o conjunto, o ZooKeeper permanece funcional.
Implicações de manutenção
Em vários momentos, será necessário desativar um nó do ZooKeeper para manutenção, seja um nó de votação ou de observação. Por exemplo, talvez seja necessário fazer upgrade da versão do Edge no nó, a máquina que hospeda o ZooKeeper pode falhar ou o nó pode ficar indisponível por algum outro motivo, como um erro de rede.
Se o nó que ficar inativo for um nó observador, poderá haver uma pequena degradação no desempenho do conjunto do ZooKeeper até que o nó seja restaurado. Se o nó for um nó de eleitor, ele poderá afetar a viabilidade do conjunto do ZooKeeper devido à perda de um nó que participa do processo de eleição do líder. Independentemente do motivo para o nó de votação ficar inativo, é importante manter um quórum de nós de votação disponíveis.
Procedimento de manutenção
Considere realizar qualquer procedimento de manutenção somente depois de garantir que um conjunto do ZooKeeper esteja funcionando. Isso pressupõe que os nós observadores estejam funcionando e que haja nós votantes suficientes disponíveis durante a manutenção para manter um quórum.
Quando essas condições são atendidas, um conjunto do ZooKeeper de tamanho arbitrário pode tolerar a perda de um único nó a qualquer momento, sem perda de dados ou impacto significativo no desempenho. Isso significa que você pode realizar manutenção em qualquer nó do conjunto, desde que seja em um nó por vez.
Como parte da manutenção, use o procedimento a seguir para determinar o tipo de um nó do ZooKeeper (líder, eleitor ou observador):
- Se ele não estiver instalado no nó do ZooKeeper, instale o nc:
> sudo yum install nc - Execute o seguinte comando nc no nó:
> echo stat | nc localhost 2181
Em que 2181 é a porta do ZooKeeper. Você verá uma saída no formulário:
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
Na linha Mode da saída dos nós, você verá observer, leader ou follower (ou seja, um eleitor que não é o líder), dependendo da configuração do nó.
Observação: em uma instalação independente do Edge com um único nó do ZooKeeper, o Modo é definido como independente. - Repita as etapas 1 e 2 em cada nó do ZooKeeper.
Resumo
A melhor maneira de realizar a manutenção em um conjunto do ZooKeeper é fazer isso em um nó por vez. Lembre-se:
- É preciso manter um quórum de nós de votação durante a manutenção para garantir que o conjunto do ZooKeeper permaneça funcional.
- A remoção de um nó observador não afeta o quórum nem a capacidade de eleger um líder.
- O quórum é calculado em todos os nós do ZooKeeper em todos os data centers.
- Prossiga com a manutenção do próximo servidor depois que o anterior estiver operacional.
- Usar o comando nc para inspecionar o nó do ZooKeeper