Percurso 05Lição 7 / 8

Definir limites seguros para a autorrecuperação

Automatize ações conhecidas de recuperação com autoridade explícita, verificação e condições de paragem. Separe a recuperação em execução das alterações ao software.

Avançado12 minRevisto

Publicado por Como escrevemos

Verifique a sua compreensãoO controlador já reiniciou um worker duas vezes. A fila continua a crescer e a base de dados está inacessível. O que deve fazer a política?Faça o exercício
O controlador já reiniciou um worker duas vezes. A fila continua a crescer e a base de dados está inacessível. O que deve fazer a política?

O que vai aprender

  • Distinguir a autorrecuperação de uma correção permanente do software.
  • Definir uma política de recuperação limitada e verificações independentes de sucesso.
  • Reconhecer quando a automação tem de parar e escalar a situação.

Recupere uma condição conhecida

A autorrecuperação deteta automaticamente uma falha definida e tenta uma ação de recuperação autorizada. Reiniciar um processo falhado ou substituir uma instância com problemas são exemplos possíveis. A ação tem de ser adequada à falha e ao modelo de estado do serviço.

O Kubernetes pode substituir instâncias de workloads que falharam e reconciliar o estado declarado. Isto não corrige lógica defeituosa da aplicação nem todas as falhas de armazenamento. A recuperação da infraestrutura e a correção do software exigem verificações diferentes. Autorrecuperação no Kubernetes.

Defina o objetivo antes do mecanismo. Recuperar um export significa que o trabalho elegível é concluído corretamente. Um contentor em execução é apenas uma pré-condição.

Separe três tipos de alteração

AlteraçãoExemploDecisão necessária
Recuperação em execuçãoSubstituir um worker sem estado que falhouUma política de recuperação previamente aprovada pode autorizar isto
Correção do softwareCorrigir a fuga de memória que faz parar o workerRevisão, testes, controlos de lançamento e verificação em produção
Alteração de políticaAumentar a frequência permitida de reinício ou o âmbito do acessoAprovação explícita do responsável pela política

Um agente pode propor uma correção após a recuperação. Essa proposta é uma nova alteração de software. Não pode herdar autoridade ilimitada do controlador de recuperação.

O controlador também não pode editar os próprios critérios de sucesso quando uma verificação falha. Caso contrário, o sistema pode comunicar uma melhoria sem melhorar o serviço.

Escreva a política de recuperação antes de a ativar

A política seguinte é fictícia. Os números ilustram escolhas de conceção; não são valores predefinidos recomendados.

Campo da políticaRegra fictícia para o worker de export
Condição de ativaçãoO heartbeat do worker está ausente há 90 segundos e existe trabalho em fila
Pré-condiçõesOutro worker está saudável; as verificações de dependências passam; não há suspeita de comprometimento nem de falha de integridade
Ação permitidaSubstituir um worker usando o artefacto atualmente aprovado
Proteção do estadoOs jobs usam armazenamento duradouro e uma chave de idempotência verificada
LimiteNo máximo duas substituições em 15 minutos; nunca mais do que uma de cada vez
Intervalo de esperaEsperar cinco minutos após a substituição antes de outra tentativa
SucessoUm job sintético termina corretamente e a fila afetada começa a diminuir
Parar e escalarAlguma pré-condição falha, o limite é atingido ou não é possível verificar o sucesso

Use uma identidade com o mínimo de privilégios. Registe nos logs a versão da política, as evidências da ativação, a ação, o recurso e o resultado. Disponibilize uma forma independente de desativar o controlador. Defina a pessoa responsável que recebe o escalamento.

Teste as falhas e a recuperação bem-sucedida

Uma nova tentativa pode repetir um efeito secundário. Um worker pode guardar um ficheiro e parar antes de confirmar o job. Verifique a idempotência antes de permitir outra execução. Consulte o exemplo de falha cloud native.

As novas tentativas também podem agravar a sobrecarga de uma dependência. Use tentativas limitadas, timeouts e backoff adequado. Evite novas tentativas sincronizadas em todas as instâncias. A AWS explica como o backoff e o jitter ajudam a reduzir esta amplificação. Orientações sobre novas tentativas.

Teste a política fictícia com três casos. Um único worker parado deve recuperar. Uma indisponibilidade da base de dados deve impedir substituições repetidas. Uma falha de integridade incerta deve parar a automação e pedir uma decisão de resposta.

Verifique também a falta de telemetria. A ausência de heartbeat pode significar um worker falhado ou uma falha no caminho de recolha. O controlador precisa de evidências suficientes para a sua ação, não de confiança numa explicação da IA.

Meça se a política ajuda

Registe recuperações verificadas, tentativas sem sucesso, escalamentos, trabalho duplicado e tempo com impacto nos utilizadores. Compare estes dados com o método operacional anterior em condições semelhantes.

Mantenha o defeito subjacente como trabalho de engenharia. Reiniciar repetidamente um processo com fuga de memória pode reduzir o impacto imediato enquanto a fuga continua. Continue com a melhoria autónoma para ligar a observação a uma correção duradoura.

Faça o exercício

Conceba uma política de recuperação para o worker fictício de export desta lição. Especifique a condição de ativação, as exclusões, a ação permitida, o limite de tentativas, o intervalo de espera, a verificação de sucesso e o responsável pelo escalamento. Teste-a perante uma indisponibilidade da base de dados e uma falha desconhecida de integridade dos dados.

Descarregar ficha (Markdown)
Verifique a sua compreensão ↑

Continuar a aprender

Fontes e leituras adicionais

Leituras relacionadas da Taiga

← Lição anterior: Ligar a entrega ao SOC e à SIRT