Freigegebene Dateisysteme zwischen mehreren AWS EC2-Instanzen


7

Ich habe einige Windows Server-Instanzen, die unter Amazon EC2 ausgeführt werden, und möchte sie durch Ausführen einer doppelten Instanz mit Load Balancern etwas fehlertoleranter machen.

Das Problem sind die spezifischen Daten. Beispielsweise ist ein Failover von einem Webserver auf einen anderen Webserver nicht sinnvoll, wenn der Inhalt des Dokumentstamms, dh C: / htdocs / (Apache) oder C: / Repositories (VisualSvn Server), vorhanden ist. sind nicht identisch.

Gibt es eine Möglichkeit, ein Volume für zwei oder mehr Instanzen freizugeben?

Meine Idee ist, Ordner zwischen EC2-Listen zu teilen:

Geben Sie hier die Bildbeschreibung ein

Lesen Sie, dass es nicht möglich ist, dasselbe EBS-Volume an mehrere Instanzen anzuhängen. Ich glaube auch, dass AWS nicht NFS-freundlich ist, falls ich sie über NFS bereitstellen möchte.

Und schließlich habe ich auch den mit s3fs montierten S3-Bucket überprüft, aber ich habe herausgefunden, dass dies auch keine gute Option ist.

Kann mir jemand helfen, in die richtige Richtung zu weisen?


Haben Sie über ZFS nachgedacht, das für diese Art von Situation ausgelegt zu sein scheint?
Barrycarter

Antworten:


4

Es ist nicht möglich, ein einzelnes EBS-Volume für mehrere EC2-Instanzen freizugeben.

Ihr Diagramm verlagert die Daten auf einen gemeinsam genutzten Server. Dieser gemeinsam genutzte Server ist jedoch lediglich ein weiterer Single-Point-of-Failure-Server. Sie sparen sich also nichts: Wenn die AZ dieses Servers ausfällt, haben Sie die Daten verloren, auch wenn der Webserver / VisualSVN-Server in einer anderen AZ noch ausgeführt wird.

Sie sollten Ihren Server auf zwei separate Funktionen in zwei separate Server / Cluster aufteilen, damit diese unabhängig voneinander behandelt werden können:

  1. Webserver und
  2. VisualSVN-Server

Müssen Sie für den Webserver das Volume wirklich in einem Szenario mit mehreren Instanzen spiegeln, oder können Sie Ihre Instanzen jederzeit ohne Datenverlust kündbar halten? Im Idealfall würden Sie keine Daten lokal in der Instanz speichern. Stattdessen würden Sie alle Daten außerhalb des Servers in einer Datenbank oder in Amazon S3 speichern. Auf diese Weise stehen die Daten jederzeit allen Instanzen zur Verfügung. Wenn der Server verloren geht, ist keine der Daten. Erstellen Sie Ihr "Master" -AMI und erstellen Sie alle Instanzen in einer automatisch skalierenden Gruppe aus diesem Master-AMI. Wenn sich der Code Ihres Webservers ändert, stellen Sie eine neue AMI bereit, beenden Sie die alten Instanzen und erstellen Sie neue Instanzen aus der neuen AMI.

Für den VisualSVN-Server stellt sich die Frage, ob VisualSVN die Änderung von Volumendaten verarbeiten kann, ohne dass sich der laufende Prozess darum kümmert. Wenn der laufende Prozess beispielsweise einige Daten im RAM zwischenspeichert, was passiert, wenn ein Festplatten-Synchronisierungsprozess hinter seiner Rückseite erfolgt und die darauf befindliche Festplatte ändert? Es kann sein, dass der VisualSVN-Server ein Szenario mit mehreren Instanzen einfach nicht verarbeiten kann. Abhängig von der Antwort darauf können Sie den VisualSVN-Server möglicherweise nicht gruppieren. Möglicherweise verfügt der VisualSVN-Server über eine eigene Clustering-Funktion. Wenn ja, sollten Sie das untersuchen.


Erhielt die folgende Antwort vom VisualSVN-Support:Thanks to Subversion design, repositories are ready to be accessed by several server instances simultaneously. We haven't experimented a lot with such configuration, but I think it's possible.
Simone Nigro

12

Dies ist ein Anwendungsfall, der in AWS schon seit einiger Zeit gesucht wird. Wie in beschriebene diesen Thread , auf zwei Arten , dies zu erreichen war zwischen Instanzen zu Teilen Datenzugriff S3 oder NFS zu verwenden.

Am 9. April 2015 , kündigte Amazon Amazon Elastic File System (Amazon EFS) , das , was Sie in Ihrem Diagramm fragen zur Verfügung stellt.


3
Ab dem 28.06.2016 ist EFS produktionsbereit. aws.amazon.com/blogs/aws/… . Beachten Sie, dass dies auf Windows-Servern nicht funktioniert.
Brian

Und nicht alle Regionen haben EFS. Nur für den Moment des Schreibens: US-Ost (N. Virginia) US-Ost (Ohio) US-West (N. Kalifornien) US-West (Oregon) Asien-Pazifik (Sydney) EU (Frankfurt) EU (Irland)
jgomo3

2

Ich glaube, der Standardansatz von Windows Server für Ihr Architekturproblem besteht darin, den Block "Shared File Systems" in Ihrem Diagramm mit einem gemeinsam genutzten Windows Shared Storage Space zu implementieren, der die Knoten auf mindestens zwei Verfügbarkeitszonen verteilt.

Dadurch erhalten Sie theoretisch etwas, das für die Anwendungen wie eine Standard-Dateifreigabe aussieht, aber keinen einzigen Fehlerpunkt aufweist. Dies mag für Ihre Situation übertrieben sein, aber wenn Sie Fehlertoleranz anstreben, hilft dies, sich vor zusätzlichen Fehlerszenarien zu schützen.

Dieser Artikel über Windows Server-Failovercluster ist zwar nicht spezifisch für Ihr Problem, kann jedoch einen Eindruck vom Umfang der Bemühungen vermitteln: http://aws.amazon.com/microsoft/whitepapers/microsoft-wsfc-sql-alwayson/


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.