Tutorial: Test delle interruzioni delle istanze Spot utilizzando AWS FIS - AWS Servizio di iniezione dei guasti

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: Test delle interruzioni delle istanze Spot utilizzando AWS FIS

Le istanze Spot utilizzano la EC2 capacità inutilizzata disponibile, con uno sconto fino al 90% rispetto ai prezzi On-Demand. Tuttavia, Amazon EC2 può interrompere le tue istanze Spot quando ha bisogno di recuperare la capacità. Quando utilizzi le istanze Spot, devi essere preparato a potenziali interruzioni. Per ulteriori informazioni, consulta le interruzioni delle istanze Spot nella Amazon EC2 User Guide.

È possibile utilizzare… AWS Servizio di iniezione dei guasti (AWS FIS) per verificare in che modo le applicazioni gestiscono l'interruzione di un'istanza Spot. Usa questo tutorial per creare un modello di esperimento che utilizzi il AWS FISaws:ec2:send-spot-instance-interruptionsazione per interrompere una delle tue istanze Spot.

In alternativa, per avviare l'esperimento utilizzando la EC2 console Amazon, consulta Avviare un'interruzione di un'istanza Spot nella Amazon EC2 User Guide.

Prerequisiti

Prima di poter usare AWS FISper interrompere un'istanza Spot, completa i seguenti prerequisiti.

1. Creare un ruolo IAM.

Crea un ruolo e allega una politica che consenta AWS FISper eseguire l'aws:ec2:send-spot-instance-interruptionsazione per tuo conto. Per ulteriori informazioni, consulta Ruoli IAM per AWS esperimenti FIS.

2. Verifica l'accesso a AWS FIS

Assicurati di avere accesso a AWS FIS. Per ulteriori informazioni, consulta AWS FISesempi di politiche.

3. (Facoltativo) Crea una richiesta di istanza Spot

Se desideri utilizzare una nuova istanza Spot per questo esperimento, usa il comando run-instances per richiedere un'istanza Spot. L'impostazione predefinita prevede la chiusura delle istanze Spot interrotte. Se si imposta il comportamento di interruzione sustop, è necessario impostare anche il tipo su. persistent In questo tutorial, non impostate il comportamento di interruzione suhibernate, poiché il processo di ibernazione inizia immediatamente.

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

Di seguito è riportato un esempio del file spot-options.json.

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

L'--queryopzione del comando di esempio fa in modo che il comando restituisca solo l'ID dell'istanza Spot. Di seguito è riportato un output di esempio.

[ "i-0abcdef1234567890" ]
4. Aggiungi un tag in modo che AWS FISpuò identificare l'istanza Spot di destinazione

Usa il comando create-tags per aggiungere il tag Name=interruptMe all'istanza Spot di destinazione.

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

Fase 1: Creare un modello di esperimento

Create il modello di esperimento utilizzando il AWS FISconsole. Nel modello, si specifica l'azione che verrà eseguita. L'azione interrompe l'istanza Spot con il tag specificato. Se esiste più di un'istanza Spot con il tag, AWS FISne sceglie una a caso.

Per creare un modello di esperimento
  1. Aprire il AWS FISconsole presso https://console.aws.amazon.com/fis/.

  2. Nel riquadro di navigazione, scegli Modelli di esperimenti.

  3. Scegli Crea modello di esperimento.

  4. In Descrizione e nome, inserisci una descrizione e un nome per il modello.

  5. Alla voce Actions (Operazioni), procedere nel seguente modo:

    1. Selezionare Add action (Aggiungi operazione).

    2. Immettete un nome per l'azione. Ad esempio, specifica interruptSpotInstance.

    3. Per Tipo di azione, scegli aws:ec2:. send-spot-instance-interruptions

    4. Per Target, mantieni il bersaglio che AWS FIScrea per te.

    5. Per i parametri di azione, Durata prima dell'interruzione, specifica 2 minuti (PT2M).

    6. Seleziona Salva.

  6. Per Targets (Target) esegui queste operazioni:

    1. Scegliete Modifica per l'obiettivo che AWS FIScreato automaticamente per te nel passaggio precedente.

    2. Sostituisci il nome predefinito con un nome più descrittivo. Ad esempio, specifica oneSpotInstance.

    3. Verifica che il tipo di risorsa sia aws:ec2:spot-instance.

    4. Per il metodo Target, scegli i tag, i filtri e i parametri delle risorse.

    5. Per i tag delle risorse, scegli Aggiungi nuovo tag e inserisci la chiave e il valore del tag. Utilizza il tag che hai aggiunto all'istanza Spot per interrompere, come descritto nei Prerequisiti di questo tutorial.

    6. Per i filtri delle risorse, scegli Aggiungi nuovo filtro e inserisci State.Name come percorso e running come valore.

    7. Per la modalità Selezione, scegliete Conteggio. Per Numero di risorse, immettere1.

    8. Seleziona Salva.

  7. Per Service Access, scegli Usa un IAM ruolo esistente, quindi scegli il IAM ruolo che hai creato come descritto nei prerequisiti di questo tutorial. Se il tuo ruolo non viene visualizzato, verifica che abbia la relazione di fiducia richiesta. Per ulteriori informazioni, consulta Ruoli IAM per AWS esperimenti FIS.

  8. (Facoltativo) Per i tag, scegliete Aggiungi nuovo tag e specificate una chiave e un valore per il tag. I tag che aggiungi vengono applicati al modello dell'esperimento, non agli esperimenti eseguiti utilizzando il modello.

  9. Scegli Crea modello di esperimento. Quando viene richiesta la conferma, inserisci create e scegli Crea modello di esperimento.

(Facoltativo) Per visualizzare il modello di esperimento JSON

Scegliete la scheda Esporta. Di seguito è riportato un esempio della procedura JSON creata dalla console precedente.

{ "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" } }

Fase 2: Avviare l'esperimento

Quando hai finito di creare il modello di esperimento, puoi usarlo per iniziare un esperimento.

Per iniziare un esperimento
  1. Dovresti trovarti nella pagina dei dettagli del modello di esperimento che hai appena creato. Altrimenti, scegli Modelli di esperimento, quindi seleziona l'ID del modello di esperimento per aprire la pagina dei dettagli.

  2. Scegli Inizia un esperimento.

  3. (Facoltativo) Per aggiungere un tag al tuo esperimento, scegli Aggiungi nuovo tag e inserisci una chiave per il tag e un valore per il tag.

  4. Scegli Inizia un esperimento. Quando viene richiesta la conferma, inserisci start e scegli Avvia esperimento.

Fase 3: Tieni traccia dell'avanzamento dell'esperimento

È possibile tenere traccia dell'avanzamento di un esperimento in corso fino al completamento, all'interruzione o al fallimento dell'esperimento.

Per tenere traccia dell'avanzamento di un esperimento
  1. Dovresti essere nella pagina dei dettagli dell'esperimento che hai appena iniziato. Altrimenti, scegli Esperimenti, quindi seleziona l'ID dell'esperimento per aprire la pagina dei dettagli.

  2. Per visualizzare lo stato dell'esperimento, seleziona Stato nel riquadro Dettagli. Per ulteriori informazioni, consulta gli stati dell'esperimento.

  3. Quando lo stato dell'esperimento è In esecuzione, vai al passaggio successivo.

Fase 4: Verifica il risultato dell'esperimento

Quando l'azione per questo esperimento è completata, si verifica quanto segue:

  • L'istanza Spot di destinazione riceve una raccomandazione di ribilanciamento dell'istanza.

  • Un avviso di interruzione dell'istanza Spot viene emesso due minuti prima che Amazon chiuda o EC2 interrompa l'istanza.

  • Dopo due minuti, l'istanza Spot viene interrotta o interrotta.

  • Un'istanza Spot che è stata interrotta da AWS FISrimane ferma finché non la riavvii.

Per verificare che l'istanza sia stata interrotta dall'esperimento
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel riquadro di navigazione, apri Spot Requests (Richieste spot) e Instances (Istanze) in schede o finestre separate del browser.

  3. Per Spot Requests (Richieste spot) seleziona la richiesta dell'istanza spot. Lo stato iniziale è fulfilled. Al termine dell'esperimento, lo stato cambia come segue:

    • terminate- Lo stato cambia in. instance-terminated-by-experiment

    • stop- Lo stato cambia in marked-for-stop-by-experiment e poiinstance-stopped-by-experiment.

  4. Per Istanze, seleziona l'istanza spot. Lo stato iniziale è Running. Due minuti dopo aver ricevuto l'avviso di interruzione dell'istanza Spot, lo stato cambia come segue:

    • stop- Lo stato cambia in Stopping e poiStopped.

    • terminate- Lo stato cambia in Shutting-down e poiTerminated.

Fase 5: rimozione

Se hai creato l'istanza Spot di prova per questo esperimento con un comportamento di interruzione stop e non ti serve più, puoi annullare la richiesta dell'istanza Spot e terminare l'istanza Spot.

Per annullare la richiesta e terminare l'istanza, utilizzare il AWS CLI
  1. Utilizza il cancel-spot-instance-requestscomando per annullare la richiesta dell'istanza Spot.

    aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-ksie869j
  2. Utilizzate il comando terminate-instances per terminare l'istanza.

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

Se non hai più bisogno del modello di esperimento, puoi eliminarlo.

Per eliminare un modello di esperimento utilizzando il AWS FISconsole
  1. Aprire il AWS FISconsole presso https://console.aws.amazon.com/fis/.

  2. Nel riquadro di navigazione, scegli Modelli di esperimenti.

  3. Seleziona il modello di esperimento e scegli Azioni, Elimina modello di esperimento.

  4. Quando viene richiesta la conferma, inserisci delete e scegli Elimina modello di esperimento.