Utilizzo delle istanze Spot di Amazon EC2 - FSx per Lustre

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à.

Utilizzo delle istanze Spot di Amazon EC2

FSx for Lustre può essere utilizzato con le istanze Spot EC2 per ridurre significativamente i costi di Amazon EC2. Un'istanza Spot è un'istanza EC2 inutilizzata disponibile a un prezzo inferiore a quello on demand. Amazon EC2 può interrompere un'istanza Spot quando il prezzo Spot supera il prezzo massimo, quando la domanda di istanze Spot aumenta o quando l'offerta di istanze Spot diminuisce.

Quando Amazon EC2 interrompe un'istanza spot, invia una notifica di interruzione dell'istanza spot che fornisce all'istanza un preavviso di due minuti prima che Amazon EC2 la interrompa. Per ulteriori informazioni, consulta le istanze Spot nella Guida per l'utente di Amazon EC2.

Per garantire che i file system Amazon FSx non siano influenzati dalle interruzioni delle istanze Spot EC2, consigliamo di smontare i file system Amazon FSx prima di terminare o ibernare le istanze Spot EC2. Per ulteriori informazioni, consulta Smontaggio dei file system.

Gestione delle interruzioni delle istanze Spot di Amazon EC2

FSx for Lustre è un file system distribuito in cui istanze server e client cooperano per fornire un file system affidabile e performante. Mantengono uno stato distribuito e coerente tra le istanze client e server. I server FSx for Lustre delegano le autorizzazioni di accesso temporanee ai client mentre eseguono attivamente l'I/O e la memorizzazione nella cache dei dati del file system. I client dovrebbero rispondere in breve tempo quando i server richiedono loro di revocare le autorizzazioni di accesso temporanee. Per proteggere il file system dai client che si comportano male, i server possono eliminare i client Lustre che non rispondono dopo pochi minuti. Per evitare di dover attendere diversi minuti prima che un client che non risponde risponda alla richiesta del server, è importante smontare in modo corretto i client Lustre, soprattutto prima di chiudere le istanze Spot EC2.

EC2 Spot invia avvisi di cessazione con 2 minuti di anticipo prima di chiudere un'istanza. Ti consigliamo di automatizzare il processo di smontaggio preciso dei client Lustre prima di terminare le istanze Spot EC2.

Esempio — Script per smontare in modo pulito e terminare le istanze Spot EC2

Questo script di esempio smonta in modo pulito la terminazione delle istanze Spot EC2 effettuando le seguenti operazioni:

  • Controlla gli avvisi di cessazione di Spot.

  • Quando riceve un avviso di risoluzione:

    • Arresta le applicazioni che accedono al file system.

    • Smonta il file system prima che l'istanza venga terminata.

È possibile adattare lo script in base alle esigenze, soprattutto per chiudere correttamente l'applicazione. Per ulteriori informazioni sulle migliori pratiche per la gestione delle interruzioni delle istanze Spot, consulta Best practice per la gestione delle interruzioni delle istanze Spot EC2.

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