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 EC2-Kosten deutlich zu senken. Eine Spot-Instance ist eine ungenutzte EC2-Instance, die für weniger als den On-Demand-Preis erhältlich ist. 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 EC2-Spot-Instance-Unterbrechungen betroffen sind, empfehlen wir, die Bereitstellung von Amazon FSx-Dateisystemen aufzuheben, bevor EC2-Spot-Instances beendet oder in den Ruhezustand versetzt werden. Weitere Informationen finden Sie unter Aufheben des Mountings von Dateisystemen.

Umgang mit Amazon EC2-Spot-Instance-Unterbrechungen

FSx for Lustre ist ein verteiltes Dateisystem, in dem Server- und Client-Instances zusammenarbeiten, um ein leistungsstarkes und zuverlässiges Dateisystem bereitzustellen. Sie sorgen für einen verteilten und kohärenten Zustand auf Client- und Serverinstanzen. FSx für Lustre delegieren Server temporäre Zugriffsberechtigungen an Clients, während sie aktiv Dateisystemdaten I/O bearbeiten und zwischenspeichern. Von Clients wird erwartet, dass sie innerhalb kurzer Zeit antworten, wenn Server sie auffordern, ihre temporären Zugriffsberechtigungen zu widerrufen. Um das Dateisystem vor fehlerhaften Clients zu schützen, können Server Clients, die nach einigen Minuten Lustre nicht antworten, vom Server 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 Lustre Clients sauber auszuhängen, insbesondere bevor Sie EC2-Spot-Instances beenden.

EC2 Spot sendet Kündigungsmitteilungen 2 Minuten im Voraus, bevor eine Instance heruntergefahren wird. Wir empfehlen Ihnen, vor dem Beenden der EC2-Spot-Instances den Vorgang des ordnungsgemäßen Aushängens der Lustre Clients zu automatisieren.

Beispiel— Skript zum sauberen Aushängen terminierter EC2-Spot-Instances

Dieses Beispielskript macht die Bereitstellung terminierter EC2-Spot-Instances sauber rückgängig, indem es wie folgt vorgeht:

  • Sucht nach Kündigungsmitteilungen von Spot.

  • Wenn es eine Kündigungsmitteilung erhält:

    • Beenden Sie Anwendungen, die auf das Dateisystem zugreifen.

    • Hängt das Dateisystem aus, bevor die Instanz beendet wird.

Sie können das Skript nach Bedarf anpassen, insbesondere um Ihre Anwendung ordnungsgemäß herunterzufahren. 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.

#!/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