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

0

Meine Website wird derzeit auf EC2 mit EBS-Volumen gehostet. Aber sehr oft starte ich ein Java-Programm auf derselben Instanz (die auf EBS ausgegeben wird), um Dateien für die Website zu generieren / zu aktualisieren. CPU und Arbeitsspeicher erreichen zur Laufzeit einen Spitzenwert von 100%, was dazu führt, dass meine Website entweder sehr langsam oder überhaupt nicht geöffnet wird, bis der Prozess endet. Außerdem bezahle ich für eine große Instanz den ganzen Monat, nur um dieses Java-Programm einige Male im Monat auszuführen.

Warum wird das Java-Programm nicht in lokalen & Update-Ausgabedateien auf EBS ausgeführt? Internetgeschwindigkeiten in meiner Gegend sind lächerlich.

Warum nicht in S3 ausgeben? Meine Dateien sind klein und groß im Volumen. Inakzeptable Übertragungsgeschwindigkeit zwischen EC2 und S3. Ich habe sogar versucht, s4cmd, aber die Übertragungsgeschwindigkeit ist inakzeptabel.

Warum wird dasselbe EBS-Volume nicht an zwei EC2-Instanzen angehängt? Ich denke, es ist ein Hack.

Ich möchte also zu EFS wechseln und zwei EC2-Instanzen verbinden. Eine speziell für den Betrieb der Website. 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 mit EBS an EFS ausgeben? 2) Amazon berechnet keine zusätzlichen Gebühren für die ausgehende EFS-Bandbreite. Ist es begrenzt?

Avinash
quelle
Der von EFS verfügbare Durchsatz hängt davon ab, wie viele Daten Sie mit einem kreditbasierten Baseline + Burst-Algorithmus gespeichert haben. Um Ihnen eine aussagekräftige Antwort zu geben, geben Sie bitte an, wie viele Daten in GiB gespeichert werden sollen.
Michael - Sqlbot
Ich möchte nur etwa 2 GB - 5 GB speichern. Aber
Avinash
Danke, ich habe das gerade überprüft und wenn ich es richtig verstanden habe, kann EFS nur 0,5 MBit / s liefern, wenn ich weniger als 10 GB Daten speichere. Ich möchte nur etwa 2 bis 5 GB Daten speichern, benötige aber einen sehr hohen Ausgangsdurchsatz. Ich denke, dass EFS nicht für meine Anforderung geeignet ist. Es ist seltsam, dass Amazon die Datenmenge mit dem Datenverkehr verknüpft. Ich speichere möglicherweise nur wenige Daten, aber das bedeutet nicht, dass auch mein ausgehender Datenverkehr sehr gering ist.
Avinash
Ihre Interpretation ist etwas unvollständig. Ich werde versuchen, dies in Kürze mit einer Antwort zu klären.
Michael - sqlbot
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. Die Dateien auf Ihrer Instanz mit NFS verfügbar zu machen, scheint ziemlich praktisch. Ich habe gelesen, dass EFS zu Beginn eines Lesevorgangs eine hohe Latenz aufweist. Daher ist dies nicht für kleine Dateien gedacht, sondern für große Dateien.
Tim

Antworten:

1

Wichtiger Hinweis: Ab dem 12. Juli 2018 können Sie mit EFS einen bereitgestellten Durchsatz erwerben . Die Antwort unten gibt das Verhalten des Dienstes wieder, bevor diese Funktion verfügbar war. Zuvor waren kleine EFS-Dateisysteme leicht mit dem Datenverkehr überlastet, da die Leistung linear mit der Größe der gespeicherten Daten anstieg. Mit nur wenigen GB war die effektive Grenze für einige Anwendungsfälle, die dies nicht in Kauf nahmen, zu gering berücksichtigen.


Warum wird dasselbe EBS-Volume nicht an zwei EC2-Instanzen angehängt? Ich denke, es ist ein Hack.

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

Für ausgehende EFS-Bandbreite erhebt Amazon keine zusätzlichen Gebühren. Ist es begrenzt?

"Outbound bandwith" ist bei EFS kein genau gültiges Konzept, da der Datenverkehr ausschließlich zwischen EFS und der Instanz stattfindet , die darauf zugreift. Wenn Sie es ordnungsgemäß über den Verfügbarkeitszonen-spezifischen Endpunkt bereitstellen, verlässt der Datenverkehr zwischen EFS und den 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 tatsächlich EC2-ausgehend, nicht EFS-ausgehend.

Der verfügbare Durchsatz ("Bandbreite") zwischen EFS und EC2 skaliert 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 erhält im Laufe der Zeit Credits mit einer Basisrate, die von der Größe des Dateisystems bestimmt wird, und verwendet Credits, wenn Daten gelesen oder geschrieben werden. Die Basisrate beträgt 50 MiB / s pro TiB Speicher (entsprechend 50 KiB / s pro GiB Speicher).

Kumulierte Burst-Credits geben dem Dateisystem die Berechtigung, den Durchsatz über die Basisrate hinaus zu steigern. Ein Dateisystem kann den Durchsatz kontinuierlich mit seiner Basisrate steigern. Wenn es inaktiv ist oder den Durchsatz unter seiner Basisrate senkt, sammelt das Dateisystem Burst-Credits.

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

Es gibt jedoch eine Burst-Fähigkeit von 100 MB / s, wie klein das Dateisystem auch sein mag. Für ein 10-GB-Dateisystem können Sie 7,2 Minuten pro Tag auf 100 MB / s oder 28,8 Minuten pro Tag auf 25 MB / s stapeln.

Die Sache, die Sie mit Ihrer Schlussfolgerung übersehen, dass dies nicht ausreicht, ist der Betriebssystem-Cache. Auf Ihrem Webserver verbleiben die von EFS gelesenen Dateien möglicherweise im Cache des Betriebssystems auf diesem Computer. Dies bedeutet, dass der Webserver nach der Übermittlung einer Datei an einen Browser die Datei möglicherweise beim nächsten Download nicht mehr von EFS lesen muss, sondern kann stattdessen nur überprüfen, ob es sich nicht geändert hat und es dann aus dem Speicher an den Browser liefern. Dieses Verhalten sollte automatisch sein, sofern Sie es nicht deaktivieren.

Es ist seltsam, dass Amazon die Datenmenge mit dem Datenverkehr verknüpft. Ich speichere möglicherweise nur wenige Daten, aber das bedeutet nicht, dass auch mein ausgehender 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.

Bei kleineren Instanzen sind die Merkmale der Instanz eher der begrenzende Faktor. Beispielsweise verfügt eine t2.small-Instanz nur über eine Bandbreite von 31,25 MiB / s (250 MBit / s, 0,25 Gigabit / s), sodass die obere Leistungsgrenze nicht das Dateisystem ist.

Testen Sie Ihre Anwendung mit EFS und beobachten Sie die CloudWatch-Metriken für das Dateisystem. Jede Arbeitslast ist anders und das ist wirklich der einzige Weg, um zu wissen, ob es wie erwartet funktioniert.

Michael - sqlbot
quelle
Vielen Dank. Es macht jetzt völlig Sinn. Ich habe jetzt festgestellt, dass die Instanz nur eine einzige Anforderung an den EFS-Server sendet, selbst wenn 1000 gleichzeitige Anforderungen für eine Datei in EFS vorliegen. Außerdem habe ich verstanden, dass der Durchsatz eher von der durchschnittlichen E / A-Größe als von der Dateigröße abhängt. Dies geht aus dem folgenden Satz auf einer Seite hervor: "Der Gesamtdurchsatz steigt im Allgemeinen mit zunehmender durchschnittlicher E / A-Größe, da der Overhead über eine größere Datenmenge amortisiert wird." Die Installation in derselben Verfügbarkeitszone (oder sogar in derselben Region) ist für mich jedoch nicht möglich, da fast der gesamte Datenverkehr aus der Region Asien-Pazifik stammt, während EFS hier nicht verfügbar ist.
Avinash
Offiziell wird EFS nur dann unterstützt, wenn sich das EFS-Dateisystem und die darauf installierten Instanzen in derselben Region befinden. Hierfür habe ich eine Problemumgehung entwickelt , die hervorragend funktioniert. Aufgrund der begrenzten Lichtgeschwindigkeit ist sie jedoch für viele Anwendungen ungeeignet, da die Latenz und die Gebühren für die Datenübertragung beim Senden von Daten über Regionen hinweg zunehmen.
Michael - sqlbot