Was ist eine gute Strategie, um meine Website online zu halten, wenn S3 offline geschaltet wird?
Wenn S3 US East 1 offline geschaltet wird, wie sollte ich meine App konfigurieren / strukturieren, um zu verhindern, dass meine gesamte Site offline geschaltet wird?
Was sind die besten Strategien, um sich in einer solchen Situation zu diversifizieren?
amazon-web-services
amazon-s3
Jcolebrand
quelle
quelle
Antworten:
Im März 2015 gab Amazon AWS bekannt, dass sie die regionale S3-Replikation unterstützen. Wenn eine bestimmte Region in S3 offline geschaltet wird, können Sie Dateien von Ihrem Mirror in einer anderen Region bereitstellen.
Quelle: https://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/
Die Praxis, Ihre Infrastruktur online zu halten, indem Sie in eine andere Region wechseln, ist komplex, aber S3 ist eine relativ kleine und einfache Komponente. Netflix hat einen großartigen Artikel über ihre Erfahrungen mit Chaos Gorilla.
Dies gilt auch für Serviceeinbußen wie eine erhöhte Latenz. Nicht nur, wenn ein Dienst, von dem Sie abhängig sind, vollständig offline ist. Netflix hat auch dazu einen Artikel: Chaos Engineering Upgraded .
quelle
Was Sie verlangen, ist im Grunde eine hohe Verfügbarkeit. Um ein System hoch verfügbar zu machen, benötigen Sie drei Dinge:
Beseitigen Sie einzelne Fehlerstellen
Im Fall von S3 wird der Punkt # 1, wie Evgeny hervorhob, durch S3-Cross-Region-Replikation adressiert .
Die Replikation erfolgt jedoch nicht sofort, und Sie möchten überprüfen, ob die Anwendungsreplikation aktiviert werden soll oder nicht. Im Falle eines Ausfalls ist es möglich, dass etwas, das in Ihren Quell-Bucket geschrieben wurde, noch nicht in den Ziel-Bucket kopiert wurde (nicht repliziert wurde). Sie müssen sich überlegen, wie die Anwendung mit einem solchen Szenario umgehen würde. Das hängt wirklich von der Art der Daten ab, was damit gemacht wird und (möglicherweise) von den Endbenutzern oder den Erwartungen des Managements.
Ein Mechanismus zum Wechseln von einem Endpunkt zu einem anderen
Für S3 bedeutet dies, dass die Anwendung im Falle eines Ausfalls das Lesen und Schreiben von / zu Bucket A beenden und stattdessen Bucket B verwenden soll.
Wie dies erreicht wird, liegt meines Wissens vorerst bei Ihnen. Einige andere AWS-Services bieten vollständig transparente Failover-Funktionen, aber mir ist dies für S3 derzeit nicht bekannt.
Es gibt verschiedene Möglichkeiten, dies zu erreichen. Ein Beispiel ist die Verwendung eines Proxys, der den Datenverkehr an den entsprechenden Bucket weiterleitet. Während eines Ausfalls würden Sie den Proxy aktualisieren / ändern, um den Datenverkehr an einen von dem Ausfall nicht betroffenen Bucket weiterzuleiten. Ein weiteres Beispiel wäre, die Anwendungskonfiguration dynamisch zu gestalten und in einem Schlüsselwertspeicher zu speichern. Wenn die Anwendung den KV-Speicher häufig genug nach aktualisierten Eigenschaften durchsucht, können Sie den Speicherort für das Lesen und Schreiben wechseln (Spring Cloud unterstützt beispielsweise einen Listener "EnvironmentChange").
Eine Möglichkeit, Fehler zu erkennen
Nun, das ist einfach, denke ich. Richten Sie einfach eine Write + Read-Schleife ein und alarmieren Sie, sobald etwas nicht stimmt :)
Notizen schließen
quelle