Sobre a manutenção do ZooKeeper

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 com suporte para um sistema de produção usem pelo menos três ZooKeeper nós.

Use as propriedades ZK_HOSTS e ZK_CLIENT_HOSTS no Arquivo de configuração de borda 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 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 por este Apenas data center. Os endereços IP devem estar 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 o nó é um nó de observador, não um eleitor. Um nó de observador não participa a eleição do líder.

Normalmente, você especifica o modificador :observer 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 em 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 o data center 2:

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

As seções a seguir contêm mais detalhes sobre líder, eleitor e nós observadores e descrever as considerações para adicionar nós de eleitor e observador.

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 servidor, processar solicitações de API 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 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

Considerações para 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 o ensemble ZooKeeper ainda pode 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.

Remover um nó do Zookeeper

Há muitas razões pelas quais você pode querer remover um nó Zookeeper; por exemplo, um nó recebeu corrompido ou adicionado ao ambiente errado.

Esta seção descreve como remover um nó Zookeeper quando ele está inativo acessíveis.

Para remover um nó do Zookeeper:

  1. Edite seu arquivo de configuração silenciosa e remova o endereço IP do nó do Zookeeper que você que quiser remover.
  2. Execute novamente o comando setup do Zookeeper para reconfigurar o ZooKeeper restante. nós:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Reinicie todos os nós do Zookeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Reconfigure o nó do Management Server:
    /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. Reconfigure todos os roteadores:
    /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. Reconfigure todos os processadores de mensagens:
    /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. Reconfigure todos os nós 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. Reconfigure todos os nós do 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

Considerações sobre a manutenção

Você pode realizar a manutenção do ZooKeeper em um conjunto em perfeito funcionamento sem tempo de inatividade se você 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 preservado em todo o conjunto, o ZooKeeper continua funcional.

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 no 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

Executar procedimentos de manutenção somente após 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 ele não estiver instalado no nó do ZooKeeper, instale nc:
    sudo yum install nc
  2. Execute o seguinte comando nc no nó, em que 2181 é a porta ZooKeeper:
    echo stat | nc localhost 2181

    Você vai ver a 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 (significando um eleitor que não é o líder) dependendo da configuração do nó.

  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 que o conjunto permaneça 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.
  • Prosseguir com a manutenção no próximo servidor depois que o anterior estiver operacional.
  • Use o comando nc para inspecionar o nó ZooKeeper.