Tutorial: Test delle interruzioni delle istanze Spot con 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 con AWS FIS

Le istanze Spot utilizzano la capacità EC2 di riserva disponibile, con uno sconto fino al 90% rispetto ai prezzi On-Demand. Tuttavia, Amazon EC2 può interrompere le 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 Guida per l'utente di Amazon EC2.

Puoi utilizzare AWS AWS Fault Injection Service (FIS) per testare in che modo le tue applicazioni gestiscono un'interruzione di un'istanza Spot. Usa questo tutorial per creare un modello di esperimento che utilizzi l'aws:ec2:send-spot-instance-interruptionsazione AWS FIS per interrompere una delle tue istanze Spot.

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

Prerequisiti

Prima di poter utilizzare AWS FIS per interrompere un'istanza Spot, completa i seguenti prerequisiti.

1. Creazione di un ruolo IAM

Crea un ruolo e allega una politica che consenta a AWS FIS di 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 al AWS FIS

Assicurati di avere accesso al AWS FIS. Per ulteriori informazioni, consulta Esempi di policy AWS FIS.

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. Aggiunge un tag in modo che AWS FIS possa identificare l'istanza Spot di destinazione

Utilizzate 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

Passaggio 1: crea un modello di esperimento

Crea il modello di esperimento utilizzando la console AWS FIS. 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 FIS ne sceglie una a caso.

Per creare un modello di esperimento
  1. Aprire la console AWS FIS all'indirizzo 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 l'obiettivo che AWS FIS crea per te.

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

    6. Selezionare Salva.

  6. Per Targets (Target) esegui queste operazioni:

    1. Scegliete Modifica per la destinazione che AWS FIS ha creato automaticamente per voi nel passaggio precedente.

    2. Sostituite 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. Selezionare Salva.

  7. Per Service Access, scegli Usa un ruolo IAM esistente, quindi scegli il ruolo IAM 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 di JSON creato dalla precedente procedura della console.

{ "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 EC2 termini o interrompa l'istanza.

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

  • Un'istanza Spot interrotta da AWS FIS rimane ferma finché non viene riavviata.

Per verificare che l'istanza sia stata interrotta dall'esperimento
  1. Apri la console Amazon EC2 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 la console AWS FIS
  1. Aprire la console AWS FIS all'indirizzo 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.