Engenharia do Caos com Litmus: Um Projeto Incubado pela CNCF

Declaração do problema: Garantir 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 escalabilidade, a fim de manter os serviços operacionais e oferecer excelência de desempenho aos usuários. Desenvolvemos uma plataforma de arquitetura de microserviços que enfrenta falhas esporádicas do sistema quando confrontada com 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 na 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 disparar situações reais de falhas, como eventos de término de pods e atrasos na 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 à total confiabilidade 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 maior observabilidade, o que nos permite desenvolver métodos de recuperação automatizados que melhoram a resiliência de e-commerce da nossa plataforma em todas as condições operacionais.

Configure o Ambiente do Experimento de Caos

Instale o LitmusChaos em seu cluster Kubernetes:

Shell

 

Verifique a instalação:

Shell

 

Nota: Certifique-se de que 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 ServiceAccount para conceder as permissões necessárias.

Injete Caos na Aplicação Alvo

Rotule o namespace da aplicação para caos:

Shell

 

Implante um ChaosEngine para acionar o experimento:

Exemplo (chaosengine.yaml):

YAML

 

Aplicar o ChaosEngine:

Shell

 

Monitore o Experimento

Veja o progresso:

Shell

 

Verifique o status dos pods de caos:

Shell

 

Analise os Resultados

Após o 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 levado 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 um tráfego maior
  • Configuradas solicitações e limites de recursos adequados para CPU e memória na especificação do pod
  • Implementado um Autoscaler Horizontal de Pods (HPA) para lidar dinamicamente com picos de tráfego

Conclusão

Ao usar o LitmusChaos para simular falhas de pods, 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 a endurecimento proativo do sistema, resultando em melhor tempo de atividade e satisfação do cliente.

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