Wie ein führendes Spieleunternehmen Chaos Engineering nutzt, um Tests zu verbessern
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Das NetEase Fuxi AI Lab ist Chinas erste professionelle Forschungseinrichtung für Spiele-KI. Forschende nutzen unsere Kubernetes-basierte Danlu-Plattform für Algorithmenentwicklung, Training, Optimierung und Online-Publikation. Dank der Kubernetes-Integration ist unsere Plattform deutlich effizienter. Allerdings testen und verbessern wir die Plattform kontinuierlich, um sie stabiler zu machen, da Kubernetes- und Microservice-bezogene Probleme auftreten.
In diesem Artikel stelle ich eines unserer wertvollsten Testwerkzeuge vor: Chaos Mesh. Chaos Mesh ist ein Open-Source-Chaos-Engineering-Tool, das über sein Dashboard eine breite Palette von Fehlerinjektionen und exzellente Fehlerüberwachung bietet.
Warum Chaos Mesh
2018 begannen wir die Suche nach einem Chaos-Engineering-Tool. Wir suchten nach einer Lösung mit:
-
Cloud-nativer Unterstützung. Kubernetes ist de facto Standard für Service-Orchestrierung und Scheduling, und die Anwendungslaufzeit ist vollständig standardisiert. Für komplett auf K8s laufende Anwendungen ist Cloud-nativer Support für begleitende Tools unverzichtbar.
-
Ausreichenden Fehlerinjektionstypen. Für zustandsbehaftete Dienste ist die Netzwerkfehlersimulation besonders wichtig. Die Plattform muss Fehler auf verschiedenen Ebenen simulieren können, etwa Pods, Netzwerk und I/O.
-
Guter Beobachtbarkeit. Zu wissen, wann ein Fehler injiziert wird und wann er behoben werden kann, ist entscheidend, um Anwendungsanomalien zu erkennen.
-
Aktiver Community-Unterstützung. Wir wollten ein gründlich getestetes und konsequent gewartetes Open-Source-Projekt nutzen. Daher legen wir Wert auf nachhaltigen und zeitnahen Community-Support.
-
Keiner Beeinträchtigung bestehender Anwendungen, ohne spezifisches Domänenwissen zu erfordern.
-
Praktischen Anwendungsfällen zur Evaluierung und Weiterentwicklung.
2019 fanden wir mit der Open-Source-Freigabe von Chaos Mesh, einer Chaos-Engineering-Plattform für Kubernetes, das gesuchte Tool. Es war zwar noch in der Frühphase, aber die Vielfalt der unterstützten Fehlertypen überzeugte uns sofort. Dies war ein großer Vorteil gegenüber anderen Chaos-Engineering-Tools, da es maßgeblich bestimmt, wie viele Probleme wir im System lokalisieren können. Wir erkannten sofort, dass Chaos Mesh fast alle unsere Erwartungen erfüllte.

Unser Weg mit Chaos Mesh
Chaos Mesh half uns, mehrere kritische Bugs zu finden. Beispielsweise detektierte es ein "Brain-Split"-Problem in rabbitMQ, der Open-Source-Message-Queuing-Software von Danlu. Laut Wikipedia „zeigt ein Split-Brain-Zustand Daten- oder Verfügbarkeitsinkonsistenzen an, die aus der Pflege zweier separater Datensätze mit überlappendem Geltungsbereich entstehen“. Bei einem Brain-Split-Fehler in einem RabbitMQ-Cluster kommt es zu Datenschreibkonflikten oder -fehlern, die schwerwiegendere Probleme wie Dateninkonsistenzen im Messaging-Dienst verursachen. Wie in unserer unten gezeigten Architektur zu sehen ist, funktionieren Consumer bei einem Brain-Split nicht normal und melden ständig Serverausnahmen.

Mit Chaos Mesh konnten wir dieses Problem stabil reproduzieren, indem wir pod-kill-Fehler in unsere Container-Instanzen-Cloud injizierten.
Chaos Mesh entdeckte auch weitere Probleme, darunter Startfehler, Join-Fehler bei abgestürzten Broker-Clustern, Herzschlag-Timeout und Verbindungskanal-Abbruch. Unser Entwicklungsteam behebt diese Probleme kontinuierlich und hat so die Stabilität der Danlu-Plattform erheblich verbessert.
Ein schnell wachsendes Projekt
Chaos Mesh wird kontinuierlich aktualisiert und verbessert. Als wir es erstmals einsetzten, hatte es noch nicht einmal eine stabile Version erreicht. Es fehlten Debugging- oder Log-Sammel-Tools, und die Dashboard-Komponente war nur für TiDB nutzbar. Der einzige Weg, Chaos Mesh für andere Anwendungen zu testen, bestand darin, die YAML-Konfigurationsdatei per kubectl apply auszuführen.
Chaos Mesh 1.0 behob oder verbesserte die meisten dieser Einschränkungen. Es bietet feinere und leistungsfähigere Chaos-Unterstützung, ein allgemein verfügbares Chaos Dashboard, verbesserte Beobachtbarkeit und präzisere Steuerung des Chaos-Umfangs. All dies wird von einer offenen, kollaborativen und lebendigen Community vorangetrieben.

Ausblick
Es ist beeindruckend zu sehen, wie stark Chaos Mesh gewachsen ist und wie viel Zuspruch es findet. Wir sind auch mit unseren eigenen Ergebnissen sehr zufrieden.
Doch Chaos Engineering ist ein weites Feld. Für die Zukunft wünschen wir uns folgende Funktionen:
-
Atomare Fehlerinjektion
-
Automatisierte Fehlerinjektion, die benutzerdefinierte Fehlertypen mit standardisierten Methoden zur Validierung von Testobjekten kombiniert
-
Standardisierte Testfälle für gängige Komponenten wie MySQL, Redis und Kafka
Wir haben diese Anforderungen mit den Chaos Mesh-Maintainern besprochen, und sie bestätigten, dass diese Funktionen für Chaos Mesh 2.0 geplant sind.
Falls Ihr Interesse habt, join the Chaos Mesh community über Slack (#project-chaos-mesh) oder GitHub. Wir würden uns freuen, Euch dort zu sehen!