Postmortem zur Einstellung des Tarsnap-Dienstes
(mail.tarsnap.com)- Der zentrale Tarsnap-Server fiel in Amazon EC2 us-east-1 wegen eines
failed system status checkaus, wodurch der Dienst ab etwa 2023-07-02 13:07:58 UTC für rund 26 Stunden 16 Minuten unterbrochen war - Die Störung wurde um 13:10 UTC erkannt, aber nach einem unerwarteten Neustart griff die Betriebsrichtlinie, den Servercode nicht automatisch zu starten, sondern ihn von einer Person manuell prüfen zu lassen
- Die Wiederherstellung erfolgte, indem die Metadaten-Header des log-strukturierten Dateisystems aus Amazon S3 gelesen und die Operationen lokal der Reihe nach wiedergegeben wurden; der erste Schritt endete am 2023-07-03 01:49:49 UTC
- Bei der Rekonstruktion des Zustands traten ein nicht getesteter Fall der 2014 implementierten Behandlung von machine re-owned sowie eine fehlende Initialisierung der Resume-Logik zutage; auch die Begrenzung des Datenträgerdurchsatzes verzögerte die Wiederherstellung
- Tarsnap hat zwar kein klares SLA, gewährte aber gemäß seiner Richtlinie bei als fair eingestuften Ausfällen am 2023-07-13 allen Konten eine 50-%-Gutschrift auf die Speicherkosten eines Monats
Ausfall und erste Reaktion
- Um etwa 2023-07-02 13:07:58 UTC ging der zentrale Server von Tarsnap in der Amazon-EC2-Region us-east-1 offline
- Der EC2-Status war
failed system status check - Bei einer virtuellen Maschine kann dieser Status auf verschiedene Ursachen hindeuten, etwa Stromausfall, Hardwarefehler des physischen Servers oder eine EC2-Netzwerkstörung
- Zur selben Zeit waren keine breitflächigen Berichte über EC2-Störungen zu sehen, daher wurde ein isolierter Hardwarefehler als wahrscheinlichste Ursache angesehen
- Der EC2-Status war
- Das Monitoring erkannte die Störung am 2023-07-02 um 13:10 UTC
- Überwacht wurde, indem aus einer anderen EC2-Region alle 5 Minuten Archiv-Schreib-, Lese- und Löschvorgänge ausgeführt wurden
- Die SMS-Benachrichtigung um 13:10 UTC weckte niemanden, aber die Telefonbenachrichtigung um 13:15 UTC leitete die Reaktion ein
- Da die erste Untersuchung keinen klaren vorübergehenden Fehler zeigte, wurde von einem abgestürzten System ausgegangen und die Vorbereitung einer Ersatz-EC2-Instanz begonnen
Betriebsrichtlinie zur Vermeidung automatischer Neustarts
- Um etwa 2023-07-02 13:52 UTC startete Amazon den ausgefallenen Server auf einer neuen EC2-Instanz neu
- Das war etwa 45 Minuten nach Beginn der Störung
- Das Betriebssystem FreeBSD fuhr hoch, aber der Tarsnap-Servercode wurde nicht automatisch gestartet
- Der automatische Start war deaktiviert, damit nach einem unerwarteten Neustart der Zustand manuell geprüft werden kann, bevor wieder Traffic angenommen wird
- Nach der Betriebsrichtlinie ist es wichtiger, „bei einem Defekt Datenverlust zu verhindern“, als „die Serviceverfügbarkeit zu maximieren“
- Nach dem Neustart zeigten die Serverlogs eine Beschädigung des Dateisystems
- Es wurde angenommen, dass die Ursache entweder die Hardware außer Gefecht gesetzt oder die Verbindung zwischen dem Server und dem Elastic Block Store mit dem Dateisystem getrennt hatte
- Statt den bestehenden Server wiederherzustellen, wurde beschlossen, die Einrichtung eines neuen Servers fortzusetzen
S3-Log-Struktur und Wiederherstellungsverfahren
- Der Tarsnap-Dienst speichert Daten als log-strukturiertes Dateisystem in Amazon S3
- Jedes S3-Objekt enthält einen Header mit den Metadaten aller Log-Einträge und optional die Daten der Log-Einträge
- Der Log-Eintrag
start write transactionenthält nur einen Header zur Identifikation von Maschine und Transaktions-Nonce, aber keine Log-Daten - Der Log-Eintrag
store data blockenthält einen Header zur Identifikation von Maschine und Blocknamen sowie die Blockdaten selbst
- Im Normalzustand werden die Metadaten der Log-Einträge auf EC2 zwischengespeichert und nicht erneut aus Amazon S3 gelesen
- Lesezugriffe auf Amazon S3 erfolgen nur, wenn als Antwort auf Anfragen von Tarsnap-Clients Blockdaten gelesen werden
- Die Wiederherstellung des Zustands der EC2-Instanz ist in zwei Schritte aufgeteilt
- Zuerst werden alle Metadaten-Header aus S3 gelesen
- Danach werden alle Operationen lokal replayed
- In einem log-strukturierten Speicher werden Log-Einträge beim Löschen von Daten erneut geschrieben, um Speicherplatz freizugeben; deshalb können die beiden Schritte nicht gleichzeitig ausgeführt werden
- Die Log-Einträge haben Sequenznummern, sodass sie in der richtigen Reihenfolge wiedergegeben werden können, müssen nach dem Abruf aber zunächst sortiert werden
Während der Wiederherstellung aufgedeckte Fehler und Engpässe
- Der erste Schritt verlief ohne Probleme und wurde am 2023-07-03 um 01:49:49 UTC abgeschlossen
- Der Wiederherstellungsprozess war so konfiguriert, dass 250 gleichzeitige Anfragen an Amazon S3 gesendet wurden
- Dieser Wert war auf das abgestimmt, was Amazon S3 vor 10 Jahren bewältigen konnte; heute hätte er vermutlich deutlich höher gesetzt werden können
- Der zweite Schritt scheiterte fast sofort
- Es trat ein Fehler auf, wonach ein wiedergegebener Log-Eintrag Daten zu einer nicht existierenden Maschine schreiben würde
- Ursache war Code zur Behandlung von Kontoverschiebungen von Maschinen, der 2014 geschrieben worden war
- Wenn Tarsnap-Nutzer eine Maschine zwischen Konten verschieben mussten, wurde ein neuer Log-Eintrag
machine registrationgespeichert und der vorherige Eintrag gelöscht - Es gab Tests, aber der Fall, dass eine Maschine nach gespeicherten Daten re-owned wurde und anschließend der Serverzustand rekonstruiert werden musste, fehlte
- Da die Sequenznummer des neuen Maschinenregistrierungs-Log-Eintrags höher war, sah es beim Replay so aus, als würden Daten für eine noch nicht existierende Maschine gespeichert
- Nachdem die Ursache identifiziert war, wurde dieser „seatbelt“ deaktiviert und die Zustandsrekonstruktion fortgesetzt
- Kurz darauf trat jedoch ein Fehler auf, dass Daten in Amazon S3 nicht gefunden werden konnten
- Grund war, dass beim Fortsetzungsversuch der Schritt zum Herunterladen der S3-Daten übersprungen wurde und dadurch der Wert
maximum log entry sequence numbernicht initialisiert wurde und bei 0 blieb - Nach Behebung dieses Problems lief die Zustandsrekonstruktion normal weiter
- Die Zustandsrekonstruktion verlief langsamer als nötig
- Wäre bekannt gewesen, dass der Datenträgerdurchsatz der Engpass war, hätte der Durchsatz des betreffenden EBS-Volumes höher eingestellt werden können
- Wegen Schlafmangels konnte der Prozess nicht genau überwacht werden; andernfalls hätte sich der Engpass mit gstat(8) und Amazon CloudWatch erkennen und das EBS-Volume neu konfigurieren lassen
Wiederaufnahme des Dienstes und Gutschrift
- Um etwa 2023-07-03 15:10 UTC war der Prozess zur Zustandsrekonstruktion abgeschlossen
- Der genaue Abschlusszeitpunkt wurde nicht protokolliert
- Der Server wurde im Read-only-Modus belassen und es wurden schnelle Tests durchgeführt
- Durch Vergleich mit dem Zustand des bisherigen Servers wurde geprüft, ob Übereinstimmung bestand, abgesehen von den letzten wenigen Sekunden an Daten, die das Dateisystem des alten Servers zum Zeitpunkt des Ausfalls verloren hatte
- Der erste echte Produktions-Traffic nach dem Ausfall trat am 2023-07-03 um 15:25:58 UTC auf
- Das war etwa 26 Stunden 16 Minuten nach Beginn der Störung
- Tarsnap hat zwar kein klares SLA, wendet aber eine Richtlinie an, nach der bei als fair angesehenen Ausfällen Gutschriften gewährt werden
- Am 2023-07-13 erhielten alle Tarsnap-Konten eine Gutschrift von 50 % der Speicherkosten eines Monats
- Die Gutschrift wurde nach der Störungsbehebung und einer Ruhepause verarbeitet
1 Kommentare
Meinungen auf Hacker News
Ich hätte wirklich nicht erwartet, dass dieser Beitrag ganz oben auf HN landet. Ich würde gern Fragen beantworten, aber es ist jetzt 22 Uhr, und mein Kind ist um 17 Uhr eingeschlafen. Wenn ich Glück habe, kann ich wohl etwa 4 Stunden schlafen, bevor es aufwacht.
Ich schaue morgens wieder rein und beantworte Fragen.
Es ist gut, dass klar gesagt wird, dass es kein SLA gibt, aber es fühlt sich an, als läge ein großes Risiko zwischen mir und meinen Backups.
Ich lese https://www.amazon.com/No-Cry-Sleep-Solution-Toddlers-Presch... und sehe damit gewisse Erfolge. Man bekommt es in jeder Bibliothek, also diesem Blockbuster für Bücher.
In den letzten Wochen sind auch bei mir ein paar EC2-Instanzen ausgefallen, mit Symptomen, als wären sie von EBS getrennt worden; in meinem Fall war es eu-west.
Der Teil, dass Percival gemäß der etwas vagen Richtlinie „Tarsnap hat kein SLA, vergibt aber Gutschriften für Ausfälle, wenn es fair erscheint“ am 13.07.2023 allen Tarsnap-Konten 50 % der monatlichen Speicherkosten gutgeschrieben hat, zeigt sehr gut, was für ein Mensch er ist.
Diese Gutschrift wirkt ziemlich großzügig darin, Kunden angemessen zu entschädigen, und anders als große Cloud-Anbieter hat er nicht jeden Kunden einzeln antanzen und betteln lassen. Dazu kam eine klare, technische und detaillierte Postmortem-Analyse. Meiner Meinung nach sollte es überall so laufen.
Es ist ziemlich schön, in einer Welt zu leben, in der Tarsnap existiert und in Picodollars abgerechnet wird.
Wenn die Disaster-Recovery-Prozeduren richtig eingerichtet und getestet worden wären, hätte sich die Downtime deutlich reduzieren lassen.
Man braucht ein vollständig separates Staging-System, das man herunterfahren und neu aufbauen kann, sollte regelmäßig verschiedene Fehlermodi testen und alle Details der Systemwiederherstellung dokumentieren.
Langfristig wäre es auch überlegenswert, den Umsatz zu steigern, um Teilzeitpersonal einstellen zu können, das bei ähnlichen Vorfällen sehr hilfreich wäre.
Wir sind ebenfalls ein kleiner Anbieter von Cloud-Lösungen mit Fokus auf ML-APIs, und über die Jahre ist immer klarer geworden, dass bei Cloud-Hardware – ob dediziert oder virtuell – regelmäßig Ausfälle auftreten. RAM, HDDs oder andere Hardwarekomponenten können jederzeit kaputtgehen; beim langfristigen Betrieb hochverfügbarer Online-Dienste muss man das zu 100 % einplanen.
Respekt für die ehrliche Postmortem-Analyse und den guten Umgang mit einer schwierigen Situation. Was den Schlafmangel angeht: Wenn es nur eine Person gibt, die das Problem beheben kann, muss man sich nicht dafür schämen, etwas zusätzliche Ausfallzeit in Kauf zu nehmen, um wieder klar denken zu können.
Es fühlt sich seltsam an, sich schlafen zu legen, während Alarme laufen, aber die Kombination aus Adrenalin und zu wenig Schlaf macht es sehr leicht, die Lage noch zu verschlimmern.
Nach der Beschreibung wirkt dieser Wiederherstellungsprozess relativ leicht regelmäßig testbar; dabei könnte man verbleibende Bugs finden oder die Wiederherstellungszeit abschätzen.
Wie man so sagt: Nur ein getestetes Backup ist ein echtes Backup.
Künftig werde ich sicherstellen, dass eine jährliche Probe eine hohe Priorität hat.
Es ist immer gut, eine so professionelle, höfliche und ehrliche Postmortem-Analyse zu sehen.
Ich beziehe mich vielleicht auf veraltete Informationen über die Firma Tarsnap, aber der einzige Faktor, der mich zögern ließ, Tarsnap ernsthaft zu nutzen, war ein unerwarteter Colin-Percival-Ausfall, also das Key-Person-Risiko
Ich glaube nicht, dass ich damit allein bin
Ich persönlich würde die einfachere Lösung wählen. Meiner Erfahrung nach braucht es enorm viel zusätzliche Komplexität, um das Zuverlässigkeitsniveau einfacher Systeme zu erreichen, und der Großteil dieser Komplexität macht die Lage eher schlechter
Beim Server-Clustering wird das deutlich. Ein einzelner Server mit stabiler Stromversorgung und stabilem Netzwerk ist zuverlässiger als jeder Versuch, diesen Dienst redundant auszulegen, bis Kosten und Komplexität ungefähr um den Faktor 5 gestiegen sind. Erst etwa dann erreicht man eine mittlere Zeit zwischen Ausfällen, die mit einem einzelnen Server vergleichbar ist, und erst danach sind tatsächliche Verbesserungen möglich
Ich bin fest davon überzeugt, dass der beste Weg zu echter Zuverlässigkeit so viel Einfachheit wie möglich und gute Backups sind. Wenn 24/7-Verfügbarkeit das ganze Jahr über nötig ist, schränkt das die wählbaren Technologien ziemlich stark ein
Das ist Colins Arbeit, Colins Name steht dafür, und es ist Colin sehr wichtig
Bei BigBackupCorp ist es schwer, dieselbe Art von Service zu bekommen. Mitarbeiter sind austauschbar, das Management ist austauschbar, und ehrlich gesagt bin auch ich als Kunde austauschbar, wenn das Unternehmen beschließt, seine Richtung zu ändern und zu BigFlowerArrangementShippingCorp zu werden
Das Gute an kleinen Unternehmen ist, dass sie vollständig aus eigenem Interesse handeln. Es gibt keine Spielchen mit dem Aktienkurs und keine VC-Tricks. Wenn es ein profitables Geschäft ist, kann jemand kommen, es übernehmen und es unter seinem eigenen Namen zu seiner eigenen Sache machen. Ich glaube, das offene Internet profitiert stark von so etwas
Dieses Risiko lässt sich mit sorgfältiger Planung so klein machen, wie man möchte
Dienste wie Tarsnap sollte man besser als eine von mehreren Schichten betrachten, mehrschichtige Backups aufbauen und sie regelmäßig überprüfen
Fehler wie ein wiedergegebener Log-Eintrag, der Daten zu einer Maschine aufzeichnet, die gar nicht existiert, könnte man vermutlich mit einem TLA+-Modell finden
Mit einer Kombination wie restic+backblaze liegen die Kosten um mehrere Größenordnungen niedriger; ich frage mich daher, welchen Vorteil Tarsnap bietet. Ich weiß nicht, welche konkreten Anforderungen einen dazu motivieren würden, 3000 Dollar pro TB-Jahr zu zahlen
An die Leute, die nach dem niedrigen Bus-Faktor fragen: Ihr legt eure Backups doch nicht nur bei einem Dienst oder an einem einzigen Ort ab, oder? Ihr nutzt doch Tarsnap zusammen mit Restic+Backblaze, Rsync.net, S3 usw.? „Backups sind die Steuer, die man zahlt, um sich den Luxus der Wiederherstellung leisten zu können“
Für meine Video- und Fotobibliothek nutze ich zum Beispiel andere Dienste, aber Buchhaltungsdatenbanken und wichtige Dokumente sichere ich bei Tarsnap
Ich nutze Tarsnap seit 10 Jahren, hatte kaum Verfügbarkeitsprobleme und, soweit ich mich erinnere, praktisch keine Probleme irgendeiner Art
Es klingt so, als sei der Großteil der 26 Stunden Downtime für die Wiederherstellung aus Backups draufgegangen. Zufälligerweise ist genau das der Grund, warum ich Tarsnap nicht in der Produktionsumgebung einsetzen kann
Aus Nutzersicht ist die Wiederherstellung aus Backups schmerzhaft langsam. Wenn mein System offline ist, habe ich nicht die Geduld, wegen eines Backup-Dienstes stundenlang zu warten. Vielleicht ist es inzwischen besser, aber als ich es vor ein paar Jahren zuletzt genutzt habe, dauerte die Wiederherstellung eines Backups von ein paar GB ungefähr in der Größenordnung einer Stunde