Kann ich eine statische Website auf Amazon EC2 in Verbindung mit EFS hosten?

745
Avinash

Meine Website wird derzeit auf EC2 mit EBS-Band gehostet. Sehr oft führe ich jedoch ein Java-Programm auf derselben Instanz aus (Welche Ausgabe an EBS), um Dateien für die Website zu generieren / zu aktualisieren. CPU & Speicher erreichen zur Laufzeit einen Höchstwert von 100%, wodurch meine Website entweder sehr langsam wird oder überhaupt nicht geöffnet wird, bis der Prozess abgeschlossen ist. Außerdem bezahle ich den ganzen Monat für eine große Instanz, nur um dieses Java-Programm einige Male im Monat auszuführen.

Warum führen Sie das Java-Programm nicht in lokalen Dateien aus und aktualisieren die Ausgabedateien in EBS? Internet-Geschwindigkeiten in meiner Umgebung sind lächerlich.

Warum wird nicht an S3 ausgegeben? Meine Dateien sind klein und haben ein großes Volumen. Unzulässige Übertragungsgeschwindigkeit zwischen EC2 und S3. Ich habe sogar s4cmd ausprobiert, aber die Übertragungsgeschwindigkeit ist immer noch inakzeptabel.

Mounten Sie dasselbe EBS-Volume nicht in 2 EC2-Instanzen? Ich denke es ist ein Hack.

Ich möchte also zu EFS wechseln und zwei EC2-Instanzen verbinden. Eine Website ist für das Laufen bestimmt. Und eine weitere On-Demand-Instanz, um den Java-Prozess nur bei Bedarf auszuführen.

Meine Fragen zu EFS: 1) Kann mein Java-Programm große Dateien mit der gleichen Geschwindigkeit wie bei EBS an EFS ausgeben? 2) Amazon berechnet keine zusätzlichen Gebühren für die ausgehende EFS-Bandbreite. Ist es begrenzt

0
Der von EFS verfügbare Durchsatz hängt von der Anzahl der gespeicherten Daten ab und verwendet einen auf Kredit basierenden Baseline + Burst-Algorithmus. Um eine aussagekräftige Antwort zu erhalten, geben Sie bitte ungefähr in der GiB an, wie viele Daten gespeichert werden sollen. Michael - sqlbot vor 7 Jahren 0
Ich möchte nur etwa 2 GB - 5 GB speichern. Aber Avinash vor 7 Jahren 0
Vielen Dank, ich habe das gerade überprüft und wenn ich es richtig verstanden habe, kann EFS nur 0,5 MBps liefern, wenn ich weniger als 10 GB an Daten speichere. Ich möchte nur etwa 2 bis 5 GB Daten speichern, benötige aber einen sehr hohen Outbound-Durchsatz. Ich denke, EFS ist für meine Anforderung nicht geeignet. Es ist seltsam, dass Amazon die Größe der Daten mit dem Datenverkehr verknüpft. Ich kann nur wenige Daten speichern, aber das bedeutet nicht, dass auch der ausgehende Datenverkehr sehr gering ist. Avinash vor 7 Jahren 0
Ihre Interpretation ist etwas unvollständig. Ich werde versuchen, dies in Kürze mit einer Antwort zu klären. Michael - sqlbot vor 7 Jahren 0
Können Sie uns mehr über Ihren Anwendungsfall erzählen? In Ihrer Situation würde ich die Instanzgröße reduzieren und etwas anderes für die Stapelverarbeitung verwenden - eine Spot-Instanz, AWS Batch (neu), Lambda usw. Das Verfügbarmachen der Dateien in Ihrer Instanz mithilfe von NFS scheint ziemlich praktisch zu sein. Ich habe gelesen, dass EFS viel Latenz hat, wenn ein Lesevorgang beginnt. Daher ist es für kleine Dateien keine Idee - bei großen Dateien ist es besser. Tim vor 7 Jahren 0

1 Antwort auf die Frage

1
Michael - sqlbot

Wichtiger Hinweis: Ab 2018-07-12 können Sie mit EFS einen bereitgestellten Durchsatz erwerben . Die Antwort unten zeigt das Verhalten des Dienstes, bevor diese Funktion verfügbar war. Zuvor waren kleine EFS-Dateisysteme mit dem Datenverkehr leicht zu überwältigen, da die Leistung linear mit der Größe der gespeicherten Daten skaliert wurde. Mit nur wenigen GB waren die effektiven Grenzwerte für einige Anwendungsfälle, die dies nicht zuließen, zu gering berücksichtigen.


Mounten Sie dasselbe EBS-Volume nicht in 2 EC2-Instanzen? Ich denke es ist ein Hack.

Sie können dasselbe EBS-Volume nicht für mehrere Instanzen bereitstellen. Sie können jedoch einen NFS-Export von der Maschine mit dem EBS-Volume erstellen und über das Netzwerk bereitstellen. NFS ist etablierte Technologie, kein Hack. Tatsächlich wäre dies fast identisch mit der Verwendung von EFS aus Ihrer Sicht, da EFS tatsächlich das gleiche Protokoll verwendet - NFS.

Amazon berechnet keine zusätzlichen Gebühren für die ausgehende EFS-Bandbreite. Ist es begrenzt

"Ausgehende Bandbreite" ist bei EFS nicht genau ein gültiges Konzept, da der Datenverkehr strikt zwischen EFS und der Instanz liegt, die darauf zugreift. Wenn Sie es korrekt mounten und den für die Verfügbarkeitszone spezifischen Endpunkt verwenden, verlässt der Datenverkehr zwischen EFS- und EC2-Instanzen niemals die Verfügbarkeitszone.

Wenn ein Webbrowser eine Datei herunterlädt, die sich in Ihrem EFS-Dateisystem befindet, muss sie unbedingt über eine Ihrer Instanzen heruntergeladen werden . Die ausgehende Bandbreite ist also EC2-Outbound, nicht EFS-Outbound.

Der verfügbare Durchsatz ("Bandbreite") zwischen EFS und EC2 erhöht sich mit der Gesamtgröße der in einem EFS-Dateisystem gespeicherten Dateien.

Amazon EFS verwendet ein Kreditsystem, um zu bestimmen, wann Dateisysteme platzen können. Jedes Dateisystem verdient im Laufe der Zeit Credits zu einer Basisrate, die durch die Größe des Dateisystems bestimmt wird, und verwendet Credits, wenn es Daten liest oder schreibt. Die Basisrate beträgt 50 MiB / s pro TiB Speicher (entspricht 50 KiB / s pro GiB Speicher).

Akkumulierte Burst-Credits geben dem Dateisystem die Erlaubnis, den Durchsatz über die Basisrate hinaus zu erhöhen. Ein Dateisystem kann den Durchsatz kontinuierlich mit seiner Baseline-Rate steuern. Immer wenn es inaktiv ist oder einen Durchsatz unterhalb seiner Baseline-Rate führt, sammelt das Dateisystem Burst-Credits.

http://docs.aws.amazon.com/efs/latest/ug/performance.html

Es gibt jedoch eine Burst-Funktion von 100 MB / s, auch wenn das Dateisystem noch so klein ist. Bei einem 10-Gigabit-Dateisystem können Sie für 7,2 Minuten pro Tag bis zu 100 MBit / s oder für 28,8 Minuten pro Tag mit 25 MBit / s usw. platzieren.

Was Sie mit Ihrer Schlussfolgerung übersehen, dass dies nicht ausreicht, ist der OS-Cache. Auf Ihrem Webserver verbleiben möglicherweise aus EFS gelesene Dateien im Betriebssystemcache dieser Maschine. Wenn also eine Datei an einen Browser geliefert wird, muss der Webserver die Datei beim nächsten Download möglicherweise nicht aus EFS lesen stattdessen kann nur überprüft werden, dass es sich nicht geändert hat, und es dann aus dem Speicher an den Browser geliefert. Dieses Verhalten sollte automatisch erfolgen, wenn Sie es nicht deaktivieren.

Es ist seltsam, dass Amazon die Größe der Daten mit dem Datenverkehr verknüpft. Ich kann nur wenige Daten speichern, aber das bedeutet nicht, dass auch der ausgehende Datenverkehr sehr gering ist.

Nicht wirklich seltsam, da die Größe der gespeicherten Daten die einzige Dimension ist, die sich auf die Preisgestaltung auswirkt. EBS-Volumes sind im Allgemeinen ähnlich - je größer das Volume, desto mehr Durchsatz in MiB / s und / oder IOPS ist von diesem Volume verfügbar.

Verwechseln Sie auch hier nicht den ausgehenden Datenverkehr Ihrer Anwendung mit dem Durchsatz des Hintergrundspeichers. Die beiden Werte sind nicht eng miteinander korreliert.

In kleineren Fällen ist es wahrscheinlicher, dass die Merkmale der Instanz der limitierende Faktor sind. In einer Instanz von t2.small steht beispielsweise nur eine Bandbreite von 31,25 MiB / s (250 MBit / s, 0,25 Gigabit / Sek) zur Verfügung, so dass die obere Leistungsgrenze nicht das Dateisystem ist.

Testen Sie Ihre Anwendung mit EFS und beobachten Sie die CloudWatch-Metriken für das Dateisystem. Jeder Arbeitsaufwand ist anders und nur so kann man feststellen, ob er wie erwartet funktioniert.

Vielen Dank. Das macht jetzt völlig Sinn. Ich habe jetzt festgestellt, dass selbst wenn 1000 gleichzeitige Anforderungen für eine Datei in EFS vorhanden sind, die Instanz nur eine einzige Anforderung an den EFS-Server sendet. Ich habe auch verstanden, dass der Durchsatz von der durchschnittlichen E / A-Größe abhängt, eher von der Dateigröße aus diesem Satz auf der aws-Seite: "Der allgemeine Durchsatz steigt im Allgemeinen mit zunehmender durchschnittlicher E / A-Größe, da der Overhead über eine größere Datenmenge amortisiert wird". Aber das Montieren in derselben Verfügbarkeitszone (oder sogar Region) ist für mich nicht möglich, da mein Verkehr fast ausschließlich aus der Region Asien / Pazifik stammt, während EFS hier nicht verfügbar ist. Avinash vor 7 Jahren 0
Offiziell wird EFS nur unterstützt, wenn sich das EFS-Dateisystem und die Instanzen, in denen es installiert ist, in derselben Region befinden. [Ich entwickelte eine Problemumgehung] (http://serverfault.com/a/799213/153161). Dies funktioniert zwar hervorragend, aber aufgrund der Lichtgeschwindigkeit sind diese aufgrund der erhöhten Lichtgeschwindigkeit aufgrund der erhöhten Latenzzeit und aufgrund der erhöhten Latenzzeit für viele Anwendungen ungeeignet die Datenübertragungsgebühren, die beim Senden von Verkehr zwischen Regionen anfallen. Michael - sqlbot vor 7 Jahren 0