Um registo não é um membro pronto
Imagina uma renovação fictícia de hosts de APS: três votantes estão saudáveis e a equipa prepara um substituto. O primeiro marco do exercício é registar um learner, ainda sem arrancar o seu processo. O inventário passa a ter quatro identidades, mas continuam a existir três votos configurados. Uma escrita sintética continua a ser confirmada pelos membros originais. O reporte deve dizer exatamente isso. Não marques o candidato como operacional apenas porque aparece na lista. A preparação inclui arranque, comunicação, recuperação dos dados e confirmação do papel pretendido. Cada marco precisa de evidência e de um responsável.
Preparação para alterar a composição
Na primeira execução local, endpoint health passou antes de uma tentativa de adição receber unhealthy cluster. Este resultado é útil: um teste de saúde não representa automaticamente todas as condições de uma mudança. O laboratório mantém as proteções de reconfiguração. Consulta a composição antes de tentar o registo e volta a tentar apenas perante a rejeição explícita prevista, dentro de um prazo limitado. Um resultado inesperado interrompe o exercício. Num sistema real, um timeout pode deixar o resultado incerto; reconcilia identidade e peer URLs antes de decidir outra alteração. Não confundas espera controlada com repetição ilimitada de comandos.
Arranque e dados observados
O processo novo arranca com a composição atualizada e o estado existing. No exercício, recebe uma chave escrita antes do seu arranque. A leitura serializable permite observar esse valor local e o status identifica o papel de learner. Estas observações respondem a perguntas diferentes: o papel indica participação e a leitura demonstra apenas os dados observados naquele momento. Não transformes uma chave recuperada em prova de sincronização permanente, de desempenho ou de todos os consumidores. A transferência pode consumir rede, disco e trabalho do líder, mesmo sem acrescentar um voto. Planeia a recuperação dos dados com margem para o serviço existente.
Nem todas as operações são aceites
Com etcd 3.6.15, o laboratório conseguiu ler a chave no learner usando explicitamente o modo serializable. A leitura linearizable e a escrita submetidas ao mesmo endpoint foram rejeitadas. A chave da escrita tentada foi depois procurada num votante e não existia. Regista o contrato e o resultado de cada operação, em vez de resumir tudo como endpoint disponível. Uma página de desenho pode conter descrições históricas, exceções e funcionalidades propostas; não uses uma frase isolada como garantia de outra versão. Neste percurso, a conclusão operacional fica limitada à versão executada e aos pedidos que constam da evidência.
A promoção muda a aritmética
A tentativa de promoção antes do arranque foi rejeitada. Após recuperação dos dados, a promoção foi aceite e a composição mostrou quatro votantes. O novo membro passou a aceitar a leitura linearizable e a escrita sintética ensaiadas. A maioria mudou de dois para três; a tolerância continuou a ser de uma indisponibilidade, assumindo comunicação entre os restantes. Este estado transitório exige coordenação de manutenção. Dois tickets que param membros distintos podem retirar a maioria quando executados em conjunto. Antes de cada ação, desenha a composição efetiva e conta os votos que permanecem comunicantes durante a ação.
Oficina de decisão em inglês
Em pares, usa quinze minutos para preparar um briefing de cinco linhas: estado inicial, papel do candidato, evidência de sincronização, próxima alteração e condição de paragem. Um participante representa APS e outro o gestor da mudança. Acrescenta depois o inject: outra equipa quer parar um votante durante a promoção. Em dez minutos, recalcula a composição e decide se as janelas podem sobrepor-se. Termina com dez minutos de perguntas: que resultado é local, que requisito não foi ensaiado e quem confirma o consumidor? A revisão avalia o raciocínio e a clareza; o laboratório não substitui prática acompanhada por um especialista.
python3 content/labs/ha-membership/run.py --bin-dir /path/to/etcd-3.6.15
# Own temporary loopback processes and synthetic keys only.
# Requires etcd and etcdctl 3.6.15; no existing cluster is accepted.Três votantes mais um learner exigem dois votos. Depois da promoção existem quatro votantes e são necessários três; duas paragens sobrepostas retiram a maioria.
Armadilhas comuns
Contar a identidade como voto; aceitar uma leitura local como contrato linearizable; retirar proteções para superar uma rejeição; usar uma proposta de desenho como funcionalidade ativa.
Tópicos relacionados: Domínios de falha e capacidade residual · Quorum e isolamento de escritores · Eleição, regresso e manutenção
Prepara os dados e confirma o papel. Cada transição altera as condições em que a manutenção seguinte pode preservar o serviço.
Referência: etcd learner design · DR HA 2026-09; Pacemaker 3.0, etcd 3.6, PostgreSQL 18 and selected Kubernetes/AWS behavior