View a markdown version of this page

Arbeiten mit Amazon EC2 Spot-Instances - FSx für Lustre

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit Amazon EC2 Spot-Instances

FSx for Lustre kann mit EC2-Spot-Instances verwendet werden, um Ihre Amazon EC2-Kosten deutlich zu senken. Eine Spot-Instance ist eine ungenutzte EC2-Instance, die für weniger als den Preis erhältlich ist. On-Demand Amazon EC2 kann Ihre Spot-Instance unterbrechen, wenn der Spot-Preis Ihren Höchstpreis überschreitet, wenn die Nachfrage nach Spot-Instances steigt oder wenn das Angebot an Spot-Instances sinkt.

Wenn Amazon EC2 eine Spot-Instance unterbricht, wird eine Benachrichtigung über die Unterbrechung der Spot-Instance bereitgestellt. Dadurch erhält die Instance zwei Minuten, bevor sie von Amazon EC2 unterbrochen wird, eine Warnmeldung. Weitere Informationen finden Sie unter Spot Instances im Amazon-EC2-Benutzerhandbuch.

Um sicherzustellen, dass Amazon FSx-Dateisysteme nicht von Unterbrechungen durch EC2-Spot-Instances betroffen sind, empfehlen wir, die Bereitstellung von Amazon FSx-Dateisystemen zu beenden, bevor Sie EC2 Spot-Instances beenden oder in den Ruhezustand versetzen. Weitere Informationen finden Sie unter Aufheben des Mountings von Dateisystemen.

Umgang mit Unterbrechungen durch Amazon EC2 Spot-Instances

FSx for Lustre ist ein verteiltes Dateisystem, bei dem Server- und Client-Instances zusammenarbeiten, um ein leistungsfähiges und zuverlässiges Dateisystem bereitzustellen. Sie sorgen für einen verteilten und kohärenten Zustand sowohl auf Client- als auch auf Serverinstanzen. FSx for Lustre-Server delegieren temporäre Zugriffsberechtigungen an Clients, während diese aktiv I/O Dateisystemdaten zwischenspeichern. Von Kunden wird erwartet, dass sie in kurzer Zeit antworten, wenn Server sie auffordern, ihre temporären Zugriffsberechtigungen zu widerrufen. Um das Dateisystem vor Fehlverhalten von Clients zu schützen, können Server Clients, die nach einigen Minuten Lustre nicht mehr antworten, aus dem System entfernen. Um zu vermeiden, dass Sie mehrere Minuten warten müssen, bis ein Client, der nicht reagiert, auf die Serveranfrage antwortet, ist es wichtig, die Bereitstellung der Lustre Clients sauber aufzuheben, insbesondere bevor EC2 Spot-Instances beendet werden. Ein sauberes Unmounten wird mit dem Befehl ohne oder initiiert. umount -f -l

Wenn Lustre Clients heruntergefahren werden, ohne das Dateisystem ordnungsgemäß auszuhängen, kommt es bei anderen Clients, die dieses Dateisystem verwenden, wahrscheinlich zu einer vorübergehend erhöhten Latenz, zu hängenden Vorgängen oder zu Fehlern. I/O

EC2 Spot sendet 2 Minuten vor dem Herunterfahren einer Instance Kündigungsbenachrichtigungen. Wir empfehlen, dass Sie den Prozess des sauberen Unmountens von Lustre Clients automatisieren, bevor Sie EC2 Spot-Instances beenden.

Beispiel— Skript zum sauberen Unmounten beim Beenden von EC2-Spot-Instances

Dieses Beispielskript hebt die Bereitstellung beim Beenden von EC2-Spot-Instances sauber auf, indem es wie folgt vorgeht:

  • Achtet auf Spot-Kündigungsmitteilungen.

  • Wenn es eine Kündigungsmitteilung erhält:

    • Beenden Sie Anwendungen, die auf das Dateisystem zugreifen.

    • Hebt das Dateisystem aus, bevor die Instanz beendet wird.

Sie können das Skript nach Bedarf anpassen, insbesondere für das reibungslose Herunterfahren Ihrer Anwendung. Weitere Informationen zu bewährten Methoden für den Umgang mit Spot-Instance-Unterbrechungen finden Sie unter Bewährte Methoden für den Umgang mit EC2-Spot-Instance-Unterbrechungen.

Anmerkung

Es kann einige Zeit dauern, bis ein Lustre Client ein Dateisystem unmountet. Wenn Sie viele Dateisysteme auf derselben Amazon EC2-Spot-Instance mounten, kann es zu lange dauern, bis alle Dateisysteme innerhalb der zweiminütigen Spot-Kündigungsfrist aufgehoben werden. Wenn Sie eine große Anzahl von Dateisystemen auf einem Host mounten müssen, empfehlen wir die Verwendung von On-Demand Instances, um Probleme mit unsauberen Unmounts aufgrund von Unterbrechungen der Amazon EC2 Spot-Instance zu vermeiden.

#!/bin/bash # TODO: Specify below the FSx mount point you are using *FSXPATH=/fsx* cd / TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") if [ "$?" -ne 0 ]; then echo "Error running 'curl' command" >&2 exit 1 fi # Periodically check for termination while sleep 5 do HTTP_CODE=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s -w %{http_code} -o /dev/null http://169.254.169.254/latest/meta-data/spot/instance-action) if [[ "$HTTP_CODE" -eq 401 ]] ; then # Refreshing Authentication Token TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") continue elif [[ "$HTTP_CODE" -ne 200 ]] ; then # If the return code is not 200, the instance is not going to be interrupted continue fi echo "Instance is getting terminated. Clean and unmount '$FSXPATH' ..." curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/spot/instance-action echo # Gracefully stop applications accessing the filesystem # # TODO*: Replace with the proper command to stop your application if possible* # Kill every process still accessing Lustre filesystem echo "Kill every process still accessing Lustre filesystem..." fuser -kMm -TERM "${FSXPATH}"; sleep 2 fuser -kMm -KILL "${FSXPATH}"; sleep 2 # Unmount FSx For Lustre filesystem if ! umount -c "${FSXPATH}"; then echo "Error unmounting '$FSXPATH'. Processes accessing it:" >&2 lsof "${FSXPATH}" echo "Retrying..." continue fi # Start a graceful shutdown of the host shutdown now done