Tutorial: Testen Sie Spot-Instance-Unterbrechungen mit AWS FIS - AWS Fehlerinjektionsservice

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.

Tutorial: Testen Sie Spot-Instance-Unterbrechungen mit AWS FIS

Spot-Instances nutzen verfügbare EC2 Reservekapazitäten und bieten einen discount von bis zu 90% im Vergleich zu On-Demand-Preisen. Amazon EC2 kann Ihre Spot-Instances jedoch unterbrechen, wenn die Kapazität wieder benötigt wird. Wenn Sie Spot-Instances verwenden, müssen Sie auf mögliche Unterbrechungen vorbereitet sein. Weitere Informationen finden Sie unter Spot-Instance-Unterbrechungen im EC2Amazon-Benutzerhandbuch.

Sie können Folgendes verwenden … AWS Fehlerinjektionsdienst (AWS FIS), um zu testen, wie Ihre Anwendungen mit einer Spot-Instance-Unterbrechung umgehen. Verwenden Sie dieses Tutorial, um eine Versuchsvorlage zu erstellen, die AWS FISaws:ec2:send-spot-instance-interruptionsAktion, um eine Ihrer Spot-Instances zu unterbrechen.

Alternativ können Sie das Experiment über die EC2 Amazon-Konsole starten. Weitere Informationen finden Sie unter Initiieren einer Spot-Instance-Unterbrechung im EC2Amazon-Benutzerhandbuch.

Voraussetzungen

Bevor Sie es verwenden können AWS FISum eine Spot-Instance zu unterbrechen, müssen Sie die folgenden Voraussetzungen erfüllen.

1. Erstellen Sie eine IAM-Rolle

Erstellen Sie eine Rolle und fügen Sie eine Richtlinie hinzu, die Folgendes ermöglicht AWS FISum die aws:ec2:send-spot-instance-interruptions Aktion in Ihrem Namen durchzuführen. Weitere Informationen finden Sie unter IAM-Rollen für AWS FIS-Experimente.

2. Überprüfen Sie den Zugriff auf AWS FIS

Stellen Sie sicher, dass Sie Zugriff auf haben AWS FIS. Weitere Informationen finden Sie unter AWS FISBeispiele für politische Maßnahmen.

3. (Optional) Erstellen Sie eine Spot-Instance-Anfrage

Wenn Sie eine neue Spot-Instance für dieses Experiment verwenden möchten, verwenden Sie den Befehl run-instances, um eine Spot-Instance anzufordern. Standardmäßig werden Spot-Instances, die unterbrochen wurden, beendet. Wenn Sie das Unterbrechungsverhalten auf einstellenstop, müssen Sie auch den Typ auf einstellenpersistent. Stellen Sie für dieses Tutorial das Unterbrechungsverhalten nicht auf einhibernate, da der Ruhezustand sofort beginnt.

aws ec2 run-instances \ --image-id ami-0ab193018fEXAMPLE \ --instance-type "t2.micro" \ --count 1 \ --subnet-id subnet-1234567890abcdef0 \ --security-group-ids sg-111222333444aaab \ --instance-market-options file://spot-options.json \ --query Instances[*].InstanceId

Das folgende Beispiel zeigt eine spot-options.json-Datei.

{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent", "InstanceInterruptionBehavior": "stop" } }

Die --query Option im Beispielbefehl sorgt dafür, dass der Befehl nur die Instance-ID der Spot-Instance zurückgibt. Es folgt eine Beispielausgabe.

[ "i-0abcdef1234567890" ]
4. Fügen Sie ein Tag hinzu, sodass AWS FISkann die Ziel-Spot-Instance identifizieren

Verwenden Sie den Befehl create-tags, um das Tag hinzuzufügen Name=interruptMe zu Ihrer Ziel-Spot-Instance.

aws ec2 create-tags \ --resources i-0abcdef1234567890 \ --tags Key=Name,Value=interruptMe

Schritt 1: Erstellen Sie eine Experimentvorlage

Erstellen Sie die Experimentvorlage mit dem AWS FISKonsole. In der Vorlage geben Sie die Aktion an, die ausgeführt werden soll. Die Aktion unterbricht die Spot-Instance mit dem angegebenen Tag. Wenn es mehr als eine Spot-Instance mit dem Tag gibt, AWS FISwählt nach dem Zufallsprinzip eine davon aus.

Um eine Versuchsvorlage zu erstellen
  1. Öffnen Sie AWS FISKonsole bei https://console.aws.amazon.com/fis/.

  2. Wählen Sie im Navigationsbereich Experimentvorlagen aus.

  3. Wählen Sie Experimentvorlage erstellen aus.

  4. Geben Sie unter Beschreibung und Name eine Beschreibung und einen Namen für die Vorlage ein.

  5. Nehmen Sie bei Aktionen die folgenden Einstellungen vor:

    1. Wählen Sie Aktion hinzufügen aus.

    2. Geben Sie einen Namen für die Aktion ein. Geben Sie z. B. ei interruptSpotInstance.

    3. Wählen Sie als Aktionstyp aws:ec2: aus. send-spot-instance-interruptions

    4. Behalten Sie für Target das Ziel bei, das AWS FISkreiert für dich.

    5. Geben Sie für Aktionsparameter, Dauer vor der Unterbrechung, den Wert 2 Minuten (PT2M) ein.

    6. Wählen Sie Save (Speichern) aus.

  6. Führen Sie für Targets (Ziele) Folgendes aus:

    1. Wählen Sie Bearbeiten für das Ziel, das AWS FISwurde im vorherigen Schritt automatisch für Sie erstellt.

    2. Ersetzen Sie den Standardnamen durch einen aussagekräftigeren Namen. Geben Sie z. B. ei oneSpotInstance.

    3. Stellen Sie sicher, dass der Ressourcentyp aws:ec2:spot-instance lautet.

    4. Wählen Sie für Target-Methode die Option Ressourcen-Tags, Filter und Parameter aus.

    5. Wählen Sie für Ressourcen-Tags die Option Neues Tag hinzufügen aus und geben Sie den Tag-Schlüssel und den Tag-Wert ein. Verwenden Sie das Tag, das Sie der Spot-Instance hinzugefügt haben, um zu unterbrechen, wie in den Voraussetzungen für dieses Tutorial beschrieben.

    6. Wählen Sie für Ressourcenfilter die Option Neuen Filter hinzufügen und geben Sie State.Name als Pfad und running als Wert ein.

    7. Wählen Sie für den Auswahlmodus die Option Anzahl. Geben Sie für Anzahl der Ressourcen den Wert ein1.

    8. Wählen Sie Save (Speichern) aus.

  7. Wählen Sie für Service Access die Option Bestehende IAM Rolle verwenden und wählen Sie dann die IAM Rolle aus, die Sie wie in den Voraussetzungen für dieses Tutorial beschrieben erstellt haben. Wenn Ihre Rolle nicht angezeigt wird, stellen Sie sicher, dass sie über die erforderliche Vertrauensstellung verfügt. Weitere Informationen finden Sie unter IAM-Rollen für AWS FIS-Experimente.

  8. (Optional) Wählen Sie für Tags die Option Neues Tag hinzufügen aus und geben Sie einen Tag-Schlüssel und einen Tag-Wert an. Die von Ihnen hinzugefügten Tags werden auf Ihre Experimentvorlage angewendet, nicht auf die Experimente, die mit der Vorlage ausgeführt werden.

  9. Wählen Sie Experimentvorlage erstellen. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie die create Taste ein und wählen Sie dann Experimentvorlage erstellen.

(Optional) Um die Experimentvorlage anzuzeigen JSON

Wählen Sie die Registerkarte Exportieren. Das Folgende ist ein Beispiel für das mit der vorherigen Konsole JSON erstellte Verfahren.

{ "description": "Test Spot Instance interruptions", "targets": { "oneSpotInstance": { "resourceType": "aws:ec2:spot-instance", "resourceTags": { "Name": "interruptMe" }, "filters": [ { "path": "State.Name", "values": [ "running" ] } ], "selectionMode": "COUNT(1)" } }, "actions": { "interruptSpotInstance": { "actionId": "aws:ec2:send-spot-instance-interruptions", "parameters": { "durationBeforeInterruption": "PT2M" }, "targets": { "SpotInstances": "oneSpotInstance" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::123456789012:role/AllowFISSpotInterruptionActions", "tags": { "Name": "my-template" } }

Schritt 2: Starten Sie das Experiment

Wenn Sie mit der Erstellung Ihrer Experimentvorlage fertig sind, können Sie sie verwenden, um ein Experiment zu starten.

Um ein Experiment zu starten
  1. Sie sollten sich auf der Detailseite der Experimentvorlage befinden, die Sie gerade erstellt haben. Andernfalls wählen Sie Experimentvorlagen und dann die ID der Experimentvorlage aus, um die Detailseite zu öffnen.

  2. Wählen Sie Start Experiment (Experiment starten) aus.

  3. (Optional) Um Ihrem Experiment ein Tag hinzuzufügen, wählen Sie Neues Tag hinzufügen und geben Sie einen Tag-Schlüssel und einen Tag-Wert ein.

  4. Wählen Sie Start Experiment (Experiment starten) aus. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den start Text ein und wählen Sie Experiment starten.

Schritt 3: Verfolgen Sie den Fortschritt des Experiments

Sie können den Fortschritt eines laufenden Experiments verfolgen, bis das Experiment abgeschlossen, gestoppt oder fehlgeschlagen ist.

Um den Fortschritt eines Experiments zu verfolgen
  1. Sie sollten sich auf der Detailseite für das Experiment befinden, das Sie gerade gestartet haben. Andernfalls wählen Sie Experimente und dann die ID des Experiments aus, um die Detailseite zu öffnen.

  2. Um den Status des Experiments einzusehen, aktivieren Sie im Detailbereich die Option Status. Weitere Informationen finden Sie unter Versuchsstatus.

  3. Wenn der Status des Experiments „Wird ausgeführt“ lautet, fahren Sie mit dem nächsten Schritt fort.

Schritt 4: Überprüfen Sie das Versuchsergebnis

Wenn die Aktion für dieses Experiment abgeschlossen ist, passiert Folgendes:

Um zu überprüfen, ob die Instanz durch das Experiment unterbrochen wurde
  1. Öffnen Sie die EC2 Amazon-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Öffnen Sie im Navigationsbereich Spot Requests (Spot-Anforderungen) und Instances in separaten Browser-Registerkarten oder -Fenstern.

  3. Wählen Sie unter Spot Requests (Spot-Anforderungen) die Spot-Instance-Anforderung aus. Der ursprüngliche Status ist fulfilled. Nach Abschluss des Experiments ändert sich der Status wie folgt:

    • terminate- Der Status ändert sich zuinstance-terminated-by-experiment.

    • stop- Der Status ändert sich zu marked-for-stop-by-experiment und danninstance-stopped-by-experiment.

  4. Wählen Sie unter Instances die Spot Instance aus. Der ursprüngliche Status ist Running. Zwei Minuten, nachdem Sie die Benachrichtigung über die Unterbrechung der Spot-Instance erhalten haben, ändert sich der Status wie folgt:

    • stop— Der Status ändert sich zu Stopping und dannStopped.

    • terminate- Der Status ändert sich zu Shutting-down und dannTerminated.

Schritt 5: Bereinigen

Wenn Sie die Test-Spot-Instance für dieses Experiment mit einem Unterbrechungsverhalten von erstellt haben stop und Sie sie nicht mehr benötigen, können Sie die Spot-Instance-Anfrage stornieren und die Spot-Instance beenden.

Um die Anfrage zu stornieren und die Instance zu beenden, verwenden Sie AWS CLI
  1. Verwenden Sie den cancel-spot-instance-requestsBefehl, um die Spot-Instance-Anfrage zu stornieren.

    aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-ksie869j
  2. Verwenden Sie den Befehl terminate-instances, um die Instance zu beenden.

    aws ec2 terminate-instances --instance-ids i-0abcdef1234567890

Wenn Sie die Experimentvorlage nicht mehr benötigen, können Sie sie löschen.

Um eine Experimentvorlage zu löschen, verwenden Sie den AWS FISKonsole
  1. Öffnen Sie AWS FISKonsole bei https://console.aws.amazon.com/fis/.

  2. Wählen Sie im Navigationsbereich Experimentvorlagen aus.

  3. Wählen Sie die Experimentvorlage aus und klicken Sie dann auf Aktionen, Experimentvorlage löschen.

  4. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie die Eingabe ein delete und wählen Sie dann Experimentvorlage löschen.