Definir limites seguros para a autorrecuperação
ConcluídoAutomatize 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.
Publicado por TaigaComo 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 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ção | Exemplo | Decisão necessária |
|---|---|---|
| Recuperação em execução | Substituir um worker sem estado que falhou | Uma política de recuperação previamente aprovada pode autorizar isto |
| Correção do software | Corrigir a fuga de memória que faz parar o worker | Revisão, testes, controlos de lançamento e verificação em produção |
| Alteração de política | Aumentar a frequência permitida de reinício ou o âmbito do acesso | Aprovaçã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ítica | Regra fictícia para o worker de export |
|---|---|
| Condição de ativação | O heartbeat do worker está ausente há 90 segundos e existe trabalho em fila |
| Pré-condições | Outro worker está saudável; as verificações de dependências passam; não há suspeita de comprometimento nem de falha de integridade |
| Ação permitida | Substituir um worker usando o artefacto atualmente aprovado |
| Proteção do estado | Os jobs usam armazenamento duradouro e uma chave de idempotência verificada |
| Limite | No máximo duas substituições em 15 minutos; nunca mais do que uma de cada vez |
| Intervalo de espera | Esperar cinco minutos após a substituição antes de outra tentativa |
| Sucesso | Um job sintético termina corretamente e a fila afetada começa a diminuir |
| Parar e escalar | Alguma 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)Desmarcar esta opção elimina todo o progresso guardado neste browser.
O progresso fica neste browser. Sem conta nem rastreamento.
Fontes e leituras adicionais
- Kubernetes: Self-Healing ↗
- AWS Builders’ Library: Timeouts, retries, and backoff with jitter ↗
- Google SRE: Automation at Google ↗