2009-05-08 8 views
115

Wir verwenden derzeit mehrere Webserver, die auf einen MySQL Server und einen Fileserver zugreifen. Wenn ich in die Cloud wechseln möchte, kann ich das gleiche Setup verwenden und das EBS an mehrere Maschineninstanzen anhängen oder was ist eine andere Lösung?Können Sie Amazon EBS an mehrere Instanzen anhängen?

Antwort

4

Ich bin mir ziemlich sicher, dass Sie nicht können, aber Sie können ein EBS klonen und es an eine andere Instanz anhängen.

Dies ist für die festen Datenmengen nützlich oder für das Testen auf ‚echten‘ Daten, sondern auf einem einzigen Block Speicher

69

Nein, ist dies für den Betrieb nicht mehr als 1 Instanz ermöglichen, in zwei über eine Festplatte, wie unter Verwendung von Computers.

Wenn Sie gemeinsame Daten benötigen, können Sie einen Server einrichten, auf den alle Ihre Instanzen zugreifen können. Wenn Sie einen einfachen Speicherbereich für alle Instanzen benötigen, können Sie mit dem S3-Speicherdienst von Amazon Daten speichern, die verteilt und skalierbar sind.

Wenn Sie in die Cloud wechseln, können Sie das gleiche Setup verwenden, aber Sie können den Fileserver möglicherweise durch S3 ersetzen oder alle Ihre Instanzen mit Ihrem Fileserver verbinden lassen.

Sie haben viele Optionen, aber das Teilen einer Festplatte zwischen Instanzen ist wahrscheinlich nicht die beste Option.

+6

Was ist mit lesen/nur? – alexus

13

Nein, laut der EBS-Dokumentation: "Ein Volume kann immer nur an eine Instanz angehängt werden".

Wie verwenden Sie den freigegebenen Speicher derzeit? Wenn Sie nur Dateien vom Fileserver bereitstellen möchten, haben Sie in Erwägung gezogen, ein System so einzurichten, dass Sie bestimmte Anforderungen an einen Prozess auf dem Dateiserver weitergeben können, anstatt dass die Webserver diese Dateien bereitstellen?

+2

Hier ist ein Link für dieses Zitat: https://aws.amazon.com/articles/1667. Siehe FAQ am Ende des Artikels.Ich wundere mich, warum 'aws ec2 volumes beschreiben 'ein * Array * von Anhängen zurückgibt. –

110

UPDATE (April 2015): Für diesen Anwendungsfall, sollten Sie bei den neuen Amazon Elastic File System (EFS) suchen beginnen, die mehrfach in genau die Art und Weise befestigt werden sollen Sie fehlen. Der Hauptunterschied zwischen EFS und EBS besteht darin, dass sie unterschiedliche Abstraktionen bereitstellen: EFS macht das NFSv4-Protokoll verfügbar, während EBS den E/A-Zugriff auf Rohblöcke bereitstellt.

Im Folgenden finden Sie meine ursprüngliche Erklärung, warum es nicht möglich ist, ein Raw-Block-Gerät sicher auf mehreren Computern zu installieren.


ORIGINAL POST (2011):

Auch wenn Sie in der Lage waren, ein EBS-Volumen um mehr als eine Instanz gebunden zu bekommen, wäre es eine _REALLY_BAD_IDEA_ sein. Um Kekoa zu zitieren, "das ist wie eine Festplatte in zwei Computern auf einmal zu verwenden"

Warum ist das eine schlechte Idee? ... Der Grund, warum Sie ein Volume nicht an mehr als eine Instanz anhängen können, ist, dass EBS eine "Blockspeicher" -Abstraktion bietet, auf der Kunden ein Dateisystem wie ext2/ext3/etc ausführen. Die meisten dieser Dateisysteme (z. B. ext2/3, FAT, NTFS usw.) werden unter der Annahme geschrieben, dass sie exklusiven Zugriff auf das Blockgerät haben. Zwei Instanzen, die auf dasselbe Dateisystem zugreifen, würden mit ziemlicher Sicherheit in Tränen und Datenverlust enden.

Mit anderen Worten funktioniert das doppelte Mounten eines EBS-Volumes nur, wenn Sie ein Cluster-Dateisystem ausführen, das ein Blockgerät für mehrere Computer freigeben soll. Außerdem würde selbst dies nicht ausreichen. EBS müsste für dieses Szenario getestet werden und sicherstellen, dass es dieselben Konsistenzgarantien wie andere geteilte Blocklösungen bietet ...dh, diese Blöcke werden nicht auf nicht gemeinsam genutzten Zwischenebenen wie Dom0-Kernel, Xen-Layer und DomU-Kernel zwischengespeichert. Und dann gibt es die Leistungsüberlegungen beim Synchronisieren von Blöcken zwischen mehreren Clients - die meisten der Cluster-Dateisysteme sind so konzipiert, dass sie auf dedizierten Hochgeschwindigkeits-SANs arbeiten, nicht auf einem Best-Effort-Commodity-Ethernet. Es klingt so einfach, aber was Sie verlangen, ist eine sehr untriviale Sache.

Alternativ können Sie feststellen, ob Ihr Szenario für die gemeinsame Datennutzung NFS, SMB/CIFS, SimpleDB oder S3 sein kann. Diese Lösungen verwenden alle höhere Layer-Protokolle, die Dateien gemeinsam nutzen sollen, ohne ein gemeinsames Block-Device-Subsystem zu haben. Oft ist eine solche Lösung tatsächlich effizienter.

In Ihrem Fall können Sie immer noch eine einzelne MySql-Instanz/einen einzelnen Dateiserver haben, auf den mehrere Web-Frontends zugreifen. Dieser Dateiserver könnte dann seine Daten auf einem EBS-Datenträger speichern, so dass Sie nächtliche Snapshot-Sicherungen durchführen können. Wenn die Instanz, auf der der Fileserver ausgeführt wird, verloren geht, können Sie das EBS-Volume trennen und erneut an eine neue Fileserver-Instanz anfügen und in wenigen Minuten wieder betriebsbereit sein.

"Gibt es so etwas wie S3 als Dateisystem?" - ja und nein. Ja, es gibt Lösungen von Drittanbietern wie s3fs, die "ok" funktionieren, aber unter der Haube müssen sie immer noch relativ teure Webservice-Aufrufe für jedes Lesen/Schreiben machen. Für ein gemeinsames Tool-Verzeichnis funktioniert das großartig. Für die Art der geclusterten FS-Nutzung sieht man in der HPC-Welt keine Chance. Um dies zu verbessern, benötigen Sie einen neuen Dienst, der ein binär verbindungsorientiertes Protokoll wie NFS bereitstellt. Ein solches multi-mounted Dateisystem mit angemessener Leistung und Verhalten zu bieten wäre ein GROSSES Feature-Add-On für EC2. Ich bin seit langem ein Verfechter von Amazon, um so etwas aufzubauen.

+1

Das Problem mit NFS (und ähnlichen Ansätzen SMB) ist eine Maschine wird als ein Server (auf dem das Dateisystem physisch montiert wird). Das Herunterfahren des Computers führt dazu, dass das EBS-Volume (oder der Datenträger ebenfalls heruntergefahren wird). Gibt es etwas wie S3 als Dateisystem ?. – sheki

+1

Nur zur Klarstellung - Wenn ein EBS-Volume an eine Instanz angehängt ist und die Instanz katastrophal stirbt, ist das EBS-Volume in Ordnung. Es wird nur "untergehen" in dem Sinne, dass Sie es von der Down-Instanz trennen und es an eine neue Instanz anhängen müssen, um darauf zuzugreifen. –

+0

"... würde mit ziemlicher Sicherheit in Tränen und Korruption enden." Klassisch. @DaveDopson – Beachhouse

1

Es ist etwas in der IT-Welt bekannt als Clustered-Dateisystem, Redhat GVS, Oracle OCFS2, Veritas CFS ...

+0

Überprüfen Sie den Kommentar zu ddopson's Antwort – sheki

+0

@sheki Ich denke, dass Ihr Kommentar zu ddopson's Antwort für geclusterte Dateisysteme völlig irrelevant ist. Clustered Filesystems sind so konzipiert, dass sie gleichzeitig von mehreren Servern bereitgestellt werden können. Der springende Punkt eines Clusteredfs ist es, einzelne Fehlerpunkte zu vermeiden. – Ryan

1

Warum werden Sie eine Instanz mit Volumen und sshfs zu diesem Volumen in anderen Fällen nicht schaffen?

3

Mehrere Webserver, die auf MySQL Server zugreifen & Dateiserver ist in AWS normal. Einige der Best Practices für die oben genannte Architektur sind:

Punkt 1) MySQL auf EC2 kann als Master-Slave in Async/Semi-Sync-Modus in AWS eingerichtet werden. EBS-OPT + PIOPS in RAID 0 wird für Hochleistungs-DB empfohlen

Punkt 2) Alternativ können Sie Amazon RDS + Multi-AZ-Modus verwenden. Zum Lesen der Skalierung können mehrere RDS Read Replica-Dateien an MySQL RDS angehängt werden.

Punkt 3) EBS Volume kann nicht gleichzeitig an mehrere EC2 angeschlossen werden. Sie können einen Dateiserver basierend auf GlusterFS auf Amazon EC2 mit EBS erstellen. Mehrere Web Server können gleichzeitig auf AWS infra mit einem einzelnen GlusterFS kommunizieren.

Punkt 4) Falls Ihre Anwendung mit S3 als Dateispeicher integriert werden kann, wird sie wegen der Stabilität der Architektur bevorzugt. Sie können S3 auch mit Tools wie S3fuse von Ihrer Anwendung aus aufrufen.

-2

Sie können ein Laufwerk auf mehreren Servern in AWS vollständig verwenden. Ich verwende sshfs, um ein externes Laufwerk zu mounten und es mit mehreren Servern in EC2 zu teilen.

Der Grund, warum ich ein einzelnes Laufwerk mit mehreren Servern verbinden musste, ist ein einziger Ort, an dem alle meine Backups abgelegt werden können, bevor sie lokal abgelegt werden.

Verwandte Themen