Chaos Engineering Con Litmus: Un Progetto Incubato da CNCF

Dichiarazione del problema: Garantire la resilienza di una piattaforma di e-commerce basata su microservizi.

La resilienza del sistema si pone come requisito chiave per le piattaforme di e-commerce durante le operazioni di scalabilità per mantenere i servizi operativi e offrire un’eccellenza delle prestazioni agli utenti. Abbiamo sviluppato una piattaforma architetturale basata su microservizi che incontra fallimenti sporadici del sistema quando si trova di fronte a eventi di traffico intenso. I problemi con la disponibilità dei servizi degradati insieme all’impatto sulle entrate si verificano principalmente a causa dei crash dei pod di Kubernetes insieme all’esaurimento delle risorse e alle interruzioni di rete che si verificano durante le stagioni di acquisto di picco.

L’organizzazione prevede di utilizzare il progetto Litmus incubato da CNCF per condurre valutazioni e miglioramenti della resilienza della piattaforma. I punti deboli del nostro sistema diventano più chiari quando conduci test di fallimento simulati utilizzando Litmus, che ci consente di attivare situazioni di fallimento del mondo reale come eventi di terminazione del pod e ritardi di rete, e limiti di utilizzo delle risorse. Gli esperimenti ci consentono di convalidare i sistemi di automazione della scalabilità mentre testiamo le procedure di ripristino di emergenza e massimizziamo le impostazioni di Kubernetes verso la totale affidabilità del sistema.

Il sistema crea una solida base per resistere alle situazioni di fallimento e distribuire in modo sicuro i periodi di traffico intenso senza deteriorare la qualità dell’esperienza dell’utente. L’ingegneria del caos applicata in modo proattivo alla nostra infrastruttura consente una migliore riduzione del rischio e un aumento dell’osservabilità, che ci consente di sviluppare metodi di ripristino automatizzati che migliorano la resilienza dell’e-commerce della nostra piattaforma in ogni condizione operativa.

Configura l’ambiente sperimentale del caos

Installa LitmusChaos nel tuo cluster Kubernetes:

Shell

 

Verifica dell’installazione:

Shell

 

Nota: Assicurati che il tuo cluster sia pronto per gli esperimenti di caos.

Definire l’Esperimento di Caos

Creare un file YAML di ChaosExperiment per simulare uno scenario di eliminazione del Pod.

Esempio (pod-delete.yaml):

YAML

 

Installare ChaosOperator e Configurare l’Account del Servizio

Implementare ChaosOperator per gestire gli esperimenti:

Shell

 

Nota: Creare un ServiceAccount per concedere le autorizzazioni necessarie.

Iniettare Caos nell’Applicazione Obiettivo

Etichettare lo spazio dei nomi dell’applicazione per il caos:

Shell

 

Implementare un ChaosEngine per avviare l’esperimento:

Esempio (chaosengine.yaml):

YAML

 

Applicare il ChaosEngine:

Shell

 

Monitorare l’Esperimento

Visualizzare il progresso:

Shell

 

Controllare lo stato dei pod del caos:

Shell

 

Analizzare i Risultati

Dopo l’esperimento, controllare i log e le metriche per determinare se l’applicazione si è ripresa automaticamente o ha fallito sotto stress.

Ecco alcune metriche da monitorare:

  • Tempo di risposta dell’applicazione
  • Tassi di errore durante e dopo l’esperimento
  • Tempo impiegato per il ripristino dei pod

Soluzione

Causa radice identificata: Durante il traffico intenso, i pod sono falliti a causa di un numero insufficiente di repliche nel deployment e limiti di risorse non corretti.

Fix applicati:

  • Aumentato il numero di repliche nel deployment per gestire un traffico più elevato
  • Configurato correttamente le richieste e i limiti delle risorse per CPU e memoria nella specifica del pod
  • Implementato un Autoscaler Orizzontale dei Pod (HPA) per gestire dinamicamente picchi di traffico

Conclusione

Utilizzando LitmusChaos per simulare guasti ai pod, abbiamo individuato le principali debolezze nella distribuzione di Kubernetes della piattaforma di e-commerce. L’esperimento del caos ha dimostrato che la resilienza può essere significativamente migliorata con aggiustamenti di ridimensionamento e allocazione delle risorse. L’ingegneria del caos ha permesso un rafforzamento proattivo del sistema, portando a una maggiore disponibilità e soddisfazione del cliente.

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