Reddit-Ausfall: Nicht nur Systeme, sondern auch die Menschen aktuell halten
In der pointierten Kurzform klingen die Ursachen für den jüngsten Ausfall der Plattform „Reddit“ wie der Albtraum jedes Betreibers von historisch gewachsenen Systemlandschaften: Die Routing-Regeln, die der Ursprung für einen Ausfall waren, wurden vor sehr langer Zeit geschrieben – und jeder aus dem ursprünglichen Team war inzwischen entweder in einer anderen Rolle im Unternehmen oder ganz woanders unterwegs.
Für mehr Details empfiehlt sich der sehr lange, aber auch schön zu lesende Post des Reddit-Engineering-Teams. Er schildert sehr anschaulich das Auf und Ab zwischen gewählten Lösungsansätzen und dann plötzlich querschlagenden Komplikationen, für die wieder neue Lösungen gesucht werden müssen. Auch die schwierige Entscheidung zwischen dem Weiterdebuggen im laufenden Restbetrieb und dem aktiven Abschalten zum Einspielen der Back-ups ist ein gutes Beispiel für die Entscheidungen in einer Krise, wie sie unsere Krisencoaches auch bei unseren Kunden begleiten.
Neben dem Problem, dass es für das ursächliche Teilsystem keine Experten mehr gab und dieses ganz anders verwaltet wurde als die neueren Teile, so dass sich die Mitarbeiter erst tiefer einarbeiten mussten, war auch ein weiteres organisatorisches Problem, dass die Wiederherstellung aus dem Back-up in der Form nicht geübt worden war. Damit fehlten Erfahrungswerte für die Dauer der Wiederherstellung, und man liest aus dem Beitrag auch heraus, dass dieser Lösungsweg aus Furcht vor Fehlern anfangs vermieden werden sollte.
Aber auch unser Monatsthema Patchmanagement kommt in dem Bericht nicht zu kurz: Die Back-up-Wiederherstellungsskripte wurden nicht an die Änderungen im produktiven Cluster angepasst. Daher passten sie nicht zu architektonischen Änderungen des Reddit-Teams, enthielten aber auch Kommandos für eine inzwischen End-of-Life-Version von Kubernetes. Der ursächliche Fehler mit den „Route Reflectors“ basierte auf einer Umbenennung, die bereits mit Kubernetes 1.20 im Jahr 2020 eingeführt wurde. In den folgenden Versionen waren dann noch übergangsweise die alten Bezeichner gültig, bis sie in der beim Vorfall installierten Version 1.24 ganz entfernt wurden.