Sobre a manutenção do ZooKeeper

Edge for Private Cloud v. 4.17.09

Os conjuntos do ZooKeeper são projetados para permanecerem funcionais, sem perda de dados, apesar da perda de um ou mais nós do ZooKeeper. Essa resiliência pode ser usada efetivamente na manutenção 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 dos vários componentes do Edge e notifica os diferentes componentes sobre mudanças na configuração. Todos topologias de borda compatíveis com um sistema de produção especificam o uso de pelo menos três ZooKeeper nós.

Use ZK_HOSTS e ZK_CLIENT_HOSTS no Arquivo de configuração de borda para especificar os nós do ZooKeeper. Para exame

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 devem 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 esse data center. O IP devem ser listados na mesma ordem em todos os nós do ZooKeeper no data center.

    Em uma única instalação de data center, estes são os mesmos nós especificados por ZK_HOSTS. Em um de vários data centers, o arquivo de configuração do Edge de cada data center precisa listar apenas os Nós do ZooKeeper para esse data center

Por padrão, todos os nós do ZooKeeper são designados como nós voter. Isso significa que os nós todos participam na eleição do líder do ZooKeeper. Você pode incluir o parâmetro 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 a eleição do líder.

Normalmente, o modificador ":observer" é especificado ao criar vários dados de borda ou quando um único data center tiver um grande número de nós do ZooKeeper. Por exemplo, em um Instalação do Edge com 12 hosts e dois data centers, o ZooKeeper no nó 9 do 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 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 líder. Todos os outros nós do ZooKeeper são designados como seguidores. Embora as leituras possam acontecer de qualquer ZooKeeper, todas as solicitações de gravação são encaminhadas para o líder. Por exemplo, uma nova mensagem O processador foi adicionado ao Edge. Essa informação é gravada para o líder do ZooKeeper. Todos os seguidores e replicar os dados.

No momento de instalação do Edge, você designa cada nó do ZooKeeper como eleitor ou observador. A líder é eleito por todos os nós do ZooKeeper dos eleitores. O único requisito para a eleição de líder é que precisa haver um quórum de nós de eleitores do ZooKeeper em funcionamento disponíveis. Um quórum significa que mais da metade de todos os nós do ZooKeeper eleitores, em todos os data centers, estão funcional.

Se não houver um quórum de nós de eleitores disponível, nenhum líder poderá ser eleito. Nesse cenário, O Zookeeper não pode atender às solicitações. Ou seja, não é possível fazer uma solicitação ao Edge Management Server, 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 eleitores
  • O quórum consiste em dois nós de eleitores em funcionamento
  • Se apenas um nó de eleitor estiver disponível, o conjunto 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 eleitores e um nó de observador
  • O quórum tem como base os cinco eleitores em ambos os data centers e, portanto, três pontos de votação ativos
  • Se apenas dois ou menos nós de eleitores estiverem disponíveis, o ensemble ZooKeeper não poderá função

Adicionar nós como votantes ou observadores

Os requisitos do sistema podem exigir a adição de nós do ZooKeeper ao Edge e instalação. 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, você precisa considere o tipo de nó a ser adicionado: eleitor ou observador.

Você quer garantir que haja um número suficiente de nós de eleitor para que, se um ou mais deles estiverem inativos que o conjunto do ZooKeeper ainda possa funcionar, o que significa que ainda há um quórum de nós votantes disponíveis. Ao adicionar nós de eleitores, você aumenta o tamanho do quórum e, portanto, pode toleram a inatividade de mais eleitores.

No entanto, adicionar outros nós de eleitor pode afetar negativamente o desempenho de gravação, porque operações exigem que o quórum chegue a um acordo sobre o líder. O tempo que leva para determinar o líder baseia-se no número de eleitores, que aumenta à medida que você adiciona mais eleitores. Portanto, você não quer tornar todos os nós votantes.

Em vez de adicionar nós de eleitor, é possível adicionar nós de observação. Adicionar nós de observador aumenta o desempenho geral de leitura do sistema sem aumentar a sobrecarga da escolha de um líder nós de observador não votam e não afetam o tamanho do quórum. Portanto, se um nó do observador isso não afeta a capacidade do conjunto de eleger um líder. No entanto, perder o observador nós podem causar degradação no desempenho de leitura do ensemble 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 votantes, independentemente do número de nós observadores. Em dois data centers, a Apigee recomenda que não haja mais de nove eleitores (cinco em um data center e quatro em outro). Depois, adicione quantas observadores conforme necessário para os requisitos do sistema.

Considerações sobre manutenção

A manutenção do ZooKeeper pode ser realizada em um ensemble em pleno funcionamento sem inatividade se é realizada em um nó por vez. Garantindo que apenas um nó ZooKeeper esteja inativo em qualquer vez, será possível garantir que sempre haja um quórum de nós eleitorais 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 ensemble ZooKeeper não a diferença entre os data centers. Os conjuntos do ZooKeeper visualizam todos os nós do ZooKeeper em todos Data centers como um conjunto.

A localização dos nós votantes em um determinado data center não é um fator durante o desempenho do ZooKeeper. cálculos de quórum. Nós individuais podem ficar inativos entre data centers, mas contanto que haja um quórum preservados em todo o conjunto, o ZooKeeper continua funcionando.

Implicações da manutenção

Em diversos momentos, será necessário desativar um nó ZooKeeper para manutenção, seja um eleitor nó de observação ou de observador. Por exemplo, talvez seja necessário atualizar a versão do Edge no nó a máquina que hospeda o ZooKeeper pode falhar ou o nó pode ficar indisponível para algum outro como um erro de rede.

Se o nó que fica inativo for um nó de observador, é possível esperar uma ligeira degradação o desempenho do conjunto do ZooKeeper até que o nó seja restaurado. Se o nó for um eleitor nó, isso pode 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 do eleitor é importante manter um quórum de nós eleitorais disponíveis.

Procedimento de manutenção

Você deve considerar a execução de qualquer procedimento de manutenção somente depois de garantir que um ZooKeeper ensemble seja funcional. Isso pressupõe que os nós do observador sejam funcionais e que haja nós eleitores disponíveis durante a manutenção para reter o 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 Isso significa que você tem liberdade para realizar a manutenção em qualquer nó do ensemble, contanto que esteja em um nó por vez.

Como parte da manutenção, use o procedimento a seguir para determinar o tipo de um Nó ZooKeeper (líder, eleitor ou observador):

  1. Se não estiver instalado no nó ZooKeeper, instale nc:
    > "sudo yum install nc"
  2. Execute o seguinte comando nc no nó:
    > echo stat | nc localhost 2.181

    Em que 2181 é a porta do ZooKeeper. Você verá a saída no formulário:
    Versão do Zookeeper: 3.4.5-1392090, criado em 30/09/2012 17:52 GMT
    Clientes: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latência mínima/média/máx.: 0/0/0
    Recebido: 1
    Enviadas: 0
    Conexões: 1
    Excepcional: 0
    Zxid: 0xc00000044
    Modo: seguidor
    Contagem de nós: 653


    Na linha Mode da saída para os nós, você deve 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 autônoma do Edge com um único nó do ZooKeeper, o Modo está definido como independente.
  3. 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 é realizá-lo por um nó em um tempo de resposta. Lembre-se:

  • Você precisa manter um quórum de nós votantes durante a manutenção para garantir que o ZooKeeper o conjunto permanece funcional
  • A remoção de um nó de observador não afeta o quórum ou a capacidade de eleger um líder.
  • O quórum é calculado em todos os nós do ZooKeeper em todos os data centers
  • Continuar com a manutenção no próximo servidor depois que o servidor anterior estiver operacional
  • Usar o comando nc para inspecionar o nó ZooKeeper