Lehren aus dem jüngsten Ausfall von AWS S3

Amazon S3 unterstützt viele AWS-Services, darunter AWS Lambda, Elastic BeanStalk und das Amazon Service Health Dashboard. Es dient auch als Objekt- und Medienspeicher für viele andere Internetdienste, die täglich darauf angewiesen sind.

Am 28. Februar 2017 hatte AWS einen stundenlangen Ausfall des Amazon S3-Dienstes in der Region US-EAST-1. Dies führte zu einem Kaskadeneffekt von Ausfällen in einem guten Teil des Internets, einschließlich Diensten wie Dockerhub.

Ein menschlicher Fehler stellte sich als Grundursache heraus:

Um 9:37 Uhr PST führte ein autorisiertes S3-Teammitglied, das ein etabliertes Playbook verwendete, einen Befehl aus, mit dem eine kleine Anzahl von Servern für eines der S3-Subsysteme entfernt werden sollte, die vom S3-Abrechnungsprozess verwendet werden. Leider wurde eine der Eingaben in den Befehl falsch eingegeben und ein größerer Satz von Servern wurde entfernt als beabsichtigt.

Wie sich herausstellt, gibt es ein weit verbreitetes Missverständnis über den Unterschied zwischen Haltbarkeit und Verfügbarkeit. Die Haltbarkeit misst, wie zuverlässig der Speicher ist, und beantwortet die Frage: "Werde ich meine Daten verlieren?" Die Verfügbarkeit misst andererseits, wie zugänglich die Daten sind, dh "Kann ich meine Daten abrufen?"

AWS S3 bietet eine Haltbarkeit von 99,999999999% in einer einzelnen Region. Wenn wir das Beispiel von Amazon untersuchen, bedeutet dies, dass beim Speichern von 10.000 Objekten in S3 durchschnittlich alle 10 Millionen Jahre ein einzelnes Objekt verloren gehen kann. Amazon S3 erreicht dies, indem die Daten über mehrere Einrichtungen innerhalb einer Region hinweg repliziert werden.

Die Standard-S3-Verfügbarkeit von Objekten liegt dagegen innerhalb einer Region bei 99,99% pro Jahr. Dies bedeutet, dass Sie in einem bestimmten Zeitraum von 12 Monaten insgesamt 52 Minuten und 33 Sekunden damit rechnen sollten, nicht auf Ihre Daten zugreifen zu können.

AWS bietet sowohl IaaS- als auch PaaS-Services an. Auf IaaS-Ebene haben die AWS-Kunden die volle Kontrolle über die virtuellen Server und Netzwerke. Sie können jede gewünschte Software und jeden gewünschten Dienst konfigurieren und selbst verwalten. Jeder Ausfall liegt in der Verantwortung des Kunden.

Auf PaaS-Ebene bietet AWS vollständig verwaltete Plattformdienste wie Objektspeicher, Datenbanken, Warteschlangen usw. an. Der Client delegiert die Verantwortung für die Verfügbarkeit und Dauerhaftigkeit dieser Services an den Managed Service Provider - in diesem Fall AWS. AWS-Plattformdienste, die über ihre proprietäre API verwendet werden, sind aufgrund eines menschlichen Fehlers bei AWS besonders anfällig für regionale Ausfälle.

Menschliches Versagen kann überall zu einem Ausfall führen - vor Ort, in der Cloud, verwaltet oder selbst gehostet. Betrachten Sie den jüngsten Ausfall des Delta-Computers als Beispiel für den Ausfall eines gesamten selbst gehosteten Systems. Das Delegieren der Verantwortung für die Verwaltung eines Plattformdienstes an einen Cloud-Anbieter ändert nichts an der Tatsache, dass menschliches Versagen ihn verringern kann - aber es verstärkt die Auswirkungen. Während sich der Delta-Ausfall nur auf Delta auswirkte, wirkte sich ein AWS S3-Ausfall auf einen guten Teil des Internets aus.

Glücklicherweise bietet AWS S3 zahlreiche Tools, um die Auswirkungen eines Ausfalls zu reduzieren. Betrachten wir nur einige.

Regionübergreifende S3-Replikation

In einer bestimmten S3-Region gespeicherte Daten werden in allen Verfügbarkeitszonen repliziert und können in jeder Zone einen Ausfall verursachen. Es kann jedoch einen Ausfall in einer ganzen Region, wie dem am 28. Februar, nicht überleben. Das Replizieren von S3-Objekten über geografische Regionen hinweg trägt dazu bei, die erhöhten Redundanzanforderungen zu erfüllen.

Backups

Die regionübergreifende Replikation kann zur Erhöhung der Verfügbarkeit beitragen. Backups zum AWS Glacier können zu einer längeren Lebensdauer beitragen. Praktischerweise bietet AWS einen automatischen Mechanismus zum Sichern von Objekten in S3 auf Glacier.

Erwägen Sie die Verteilung von Inhalten mit CloudFront

Wenn häufig auf Ihre S3-Objekte zugegriffen wird, kann es sinnvoll sein, AWS CloudFront so zu konfigurieren, dass Objekte aus S3 bereitgestellt werden. CloudFront repliziert die Daten dort, wo die Benutzer sie am dringendsten benötigen, und kann in einigen Anwendungsfällen dazu beitragen, die Auswirkungen eines S3-Ausfalls zu verringern.

Abschließende Gedanken

Managed Platform Services sind der Eckpfeiler von Cloud Services. Die Verwendung eines solchen wie S3 kann die DevOps-Kosten senken und dazu beitragen, Anwendungen schneller auf den Markt zu bringen. Während AWS über die Jahre äußerst zuverlässig war, hat Amazon in der Vergangenheit selbstverschuldete Ausfälle erlebt. Der jüngste S3-Ausfall ist keine Ausnahme. Eine Kombination aus regionaler Replikation, Sicherungen und Verteilung von Inhalten sollte die Auswirkungen solcher Ausfälle verringern.