Engenharia do Caos com Litmus: Um Projeto Incubado pela CNCF

Declaração do problema: Garantindo a resiliência de uma plataforma de e-commerce baseada em microserviços.

A resiliência do sistema é o requisito chave para plataformas de e-commerce durante operações de escalonamento, a fim de manter os serviços operacionais e entregar excelência de desempenho aos usuários. Desenvolvemos uma plataforma de arquitetura de microserviços que enfrenta falhas esporádicas do sistema quando submetida a eventos de tráfego intenso. Os problemas com a disponibilidade degradada do serviço, juntamente com o impacto na receita, ocorrem principalmente devido a falhas de pods do Kubernetes, além do esgotamento de recursos e interrupções de rede que acontecem durante as temporadas de compras de pico.

A organização planeja utilizar o projeto Litmus, incubado pela CNCF, para realizar avaliações e melhorias de resiliência da plataforma. Nossos pontos fracos do sistema tornam-se mais claros quando realizamos testes de falhas simuladas usando o Litmus, que nos permite acionar situações de falha do mundo real, como eventos de término de pods, atrasos de rede e limites de uso de recursos. Os experimentos nos permitem validar sistemas de automação de escalabilidade enquanto testamos procedimentos de recuperação de desastres e maximizamos as configurações do Kubernetes em direção à confiabilidade total do sistema.

O sistema cria uma base sólida para suportar situações de falha e distribuir períodos de tráfego intenso de forma segura, sem deteriorar a qualidade da experiência do usuário. A engenharia do caos aplicada proativamente à nossa infraestrutura permite uma melhor redução de riscos e aumento da observabilidade, o que nos permite desenvolver métodos de recuperação automatizados que aprimoram a resiliência de e-commerce da nossa plataforma em todas as condições operacionais.

Configurar o Ambiente de Experimento de Caos

Instale o LitmusChaos em seu cluster Kubernetes:

Shell

 

Verifique a instalação:

Shell

 

Nota: Verifique se o seu cluster está pronto para experimentos de caos.

Defina o Experimento de Caos

Crie um arquivo YAML de ChaosExperiment para simular um cenário de exclusão de Pod.

Exemplo (pod-delete.yaml):

YAML

 

Instale o ChaosOperator e Configure a Conta de Serviço

Implante o ChaosOperator para gerenciar experimentos:

Shell

 

Nota: Crie uma Conta de Serviço para conceder as permissões necessárias.

Injecte Caos na Aplicação Alvo

Rotule o namespace da aplicação para o caos:

Shell

 

Implante um ChaosEngine para acionar o experimento:

Exemplo (chaosengine.yaml):

YAML

 

Aplique o ChaosEngine:

Shell

 

Monitore o Experimento

Veja o progresso:

Shell

 

Verifique o status dos pods de caos:

Shell

 

Analise os Resultados

Pós-experimento, revise logs e métricas para determinar se a aplicação se recuperou automaticamente ou falhou sob estresse.

Aqui estão algumas métricas para monitorar:

  • Tempo de resposta da aplicação
  • Taxas de erro durante e após o experimento
  • Tempo necessário para os pods se recuperarem

Solução

Causa raiz identificada: Durante o tráfego intenso, os pods falharam devido a um número insuficiente de réplicas na implantação e limites de recursos inadequados.

Correções aplicadas:

  • Aumentou o número de réplicas na implantação para lidar com o tráfego mais intenso.
  • Configurou solicitações e limites adequados de recursos para CPU e memória na especificação do pod
  • Implementou um Dimensionador Automático de Pod Horizontal (HPA) para lidar dinamicamente com picos de tráfego

Conclusão

Ao usar o LitmusChaos para simular falhas de pod, identificamos fraquezas-chave na implantação do Kubernetes da plataforma de e-commerce. O experimento de caos demonstrou que a resiliência pode ser significativamente melhorada com ajustes de escalonamento e alocação de recursos. A engenharia do caos possibilitou o fortalecimento proativo do sistema, resultando em maior tempo de atividade e satisfação do cliente.

Source:
https://dzone.com/articles/chaos-engineering-litmus-cncf-incubating-project