Edge para nuvem privada v. 4.17.01
Os conjuntos do ZooKeeper foram 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 forma eficaz para realizar a manutenção nos nós do ZooKeeper sem tempo de 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 das mudanças de configuração. Todas as topologias do Edge com suporte para 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. 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 estar 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 de 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 deve listar apenas os nós do ZooKeeper para esse data center.
Por padrão, todos os nós do ZooKeeper são designados como votantes. Isso significa que todos os nós participam da eleição do líder do ZooKeeper. Você pode incluir o modificador ":observer" com ZK_HOSTS para indicar que a anotação é um nó de observador, não um eleitor. Um nó de observador não participa da eleição do líder.
Normalmente, você especifica o modificador :observer ao criar vários data centers de borda ou quando um único data center tem um grande número de nós ZooKeeper. Por exemplo, em uma instalação de 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 deles é designado como 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. Essa informação é gravada para o líder do ZooKeeper. Todos os seguidores replicam os dados.
Na instalação do Edge, você designa cada nó do ZooKeeper como um eleitor ou observador. O líder é eleito por todos os nós do ZooKeeper. O único requisito para a eleição de um líder é que haja um quorum de nós de votação do ZooKeeper 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 funcionais.
Se não houver um quórum de nós de votação disponível, nenhum líder poderá ser eleito. Nesse cenário, o Zookeeper não pode atender às solicitações. Isso significa que não é possível fazer uma solicitação ao Servidor de gerenciamento de borda, processar solicitações da API Management ou fazer login na interface do Edge até o quórum ser restaurado.
Por exemplo, em uma única instalação de 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 votantes
- O data center 2 tem dois nós de votação e um nó de observação
- O quórum é baseado nos cinco eleitores nos dois data centers e, portanto, são três nós de eleitores em funcionamento
- Se apenas dois ou menos nós de votação estiverem disponíveis, o conjunto do ZooKeeper não vai funcionar.
Adicionar nós como eleitores ou observadores
Os requisitos do sistema podem exigir que você adicione outros nós do ZooKeeper à instalação do Edge. A documentação Como adicionar nós do ZooKeeper descreve como adicionar outros nós do ZooKeeper ao Edge. Ao adicionar nós do ZooKeeper, é necessário considerar o tipo de nó a ser adicionado: eleitor ou observador.
Você quer ter certeza de que tem nós votantes suficientes para que, se um ou mais nós votantes estiverem desativados, o conjunto ZooKeeper ainda possa funcionar, o que significa que ainda haja um quórum de nós eleitores disponível. Ao adicionar nós de eleitores, você aumenta o tamanho do quórum e, portanto, pode tolerar a inatividade de mais nós.
No entanto, a adição de outros nós de votação pode afetar negativamente a performance 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 é baseado no 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 fazer com que todos os nós sejam votantes.
Em vez de adicionar nós de eleitor, é possível adicionar nós de observação. A adição de nós de observador aumenta o desempenho geral de leitura do sistema sem aumentar a sobrecarga de eleger um líder, porque os nós de observador não votam e não afetam o tamanho do quórum. Portanto, se um nó de observador cair, ele não afeta a capacidade do conjunto de eleger um líder. No entanto, a perda de nós de observador pode causar degradação no desempenho de leitura do conjunto do ZooKeeper, porque há menos nós disponíveis para atender solicitações de dados.
Em um único data center, a Apigee recomenda que você não tenha mais de cinco eleitores, independente do número de nós de observador. Em dois data centers, a Apigee recomenda que você tenha no máximo nove eleitores (cinco em um data center e quatro no outro). Em seguida, adicione 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 tempo de inatividade se for realizada em um único nó por vez. Ao garantir que apenas um nó do ZooKeeper esteja inativo por vez, você pode garantir que sempre haverá um quórum de nós de votação 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 distingue entre data centers. Os assemblies do ZooKeeper consideram todos os nós do ZooKeeper em todos os data centers como um conjunto.
O local dos nós de votação em um determinado data center não é um fator quando o ZooKeeper executa cálculos de quórum. Nós individuais podem cair em data centers, mas, desde que um quórum seja preservado em todo o conjunto, o ZooKeeper permanece funcional.
Implicações da manutenção
Em vários momentos, será necessário desativar um nó ZooKeeper para manutenção, seja um nó de eleitor ou um nó de observador. 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 falhar for um nó de observação, haverá uma ligeira degradação no desempenho do conjunto do ZooKeeper até que o nó seja restaurado. Se o nó for um nó de votação, ele poderá afetar a viabilidade do conjunto do ZooKeeper devido à perda de um nó que participa do processo de eleição de líder. Independentemente do motivo da queda do nó de votação, é importante manter um quórum de nós de votação disponíveis.
Procedimento de manutenção
Só realize qualquer procedimento de manutenção depois de garantir que um conjunto do ZooKeeper esteja funcional. Isso pressupõe que os nós do observador estejam funcionais e que haja nós eleitores 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 a 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ê vai ver a saída no formulário:
Versão do Zookeeper: 3.4.5-1392090, criada em 30/09/2012 17:52 GMT
Clientes: /a.b.c.d:xxxx[0](enfilei=0,recebido=1,enviado=0)
Tempo de resposta mínimo/médio/máximo: 0/0/0
Recebido: 1
Enviado: 0
Conexões: 1
Pendente: 0
Zxid: 0xc00000044
Modo: seguidor
Número de nós: 653
Na linha Mode da saída para os nós, você vai encontrar observer, leader ou follower (um eleitor que não é o líder), dependendo da configuração do nó.
Observação: em uma instalação autônoma 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 fazer a manutenção em um conjunto do ZooKeeper é fazer isso um nó por vez. Lembre-se:
- É necessário manter um quórum de nós de votação durante a manutenção para garantir que o conjunto do ZooKeeper continue funcional.
- A remoção de um nó de 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
- A manutenção do próximo servidor foi iniciada depois que o anterior ficou operacional
- Use o comando nc para inspecionar o nó do ZooKeeper