Utilizzo delle istanze Amazon EC2 Spot - 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 Amazon EC2 Spot

FSx for Lustre può essere utilizzato con le istanze EC2 Spot per ridurre significativamente i costi di Amazon EC2 . Un'istanza Spot è un' EC2 istanza inutilizzata disponibile a un prezzo inferiore a quello di un servizio 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 un avviso di interruzione dell'istanza Spot, che invia all'istanza un avviso di due minuti prima che Amazon EC2 la interrompa. Per ulteriori informazioni, consulta le istanze Spot nella Amazon EC2 User Guide.

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

Gestione delle interruzioni delle istanze Amazon EC2 Spot

FSx for Lustre è un file system distribuito in cui istanze server e client collaborano per fornire un file system affidabile e performante. Mantengono uno stato distribuito e coerente tra le istanze client e server. FSx i server for Lustre delegano le autorizzazioni di accesso temporanee ai client mentre eseguono attivamente operazioni di I/O e memorizzano nella cache i dati del file system. I client dovrebbero rispondere in un breve periodo di 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 sfrattare Lustre client che non rispondono dopo alcuni minuti. Per evitare di dover attendere più minuti prima che un client che non risponde risponda alla richiesta del server, è importante smontarlo in modo pulito Lustre client, 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 in modo pulito Lustre clienti prima di chiudere EC2 le istanze Spot.

Esempio — Script per smontare in modo pulito le istanze Spot che terminano EC2

Questo script di esempio smonta in modo pulito le istanze Spot che EC2 terminano 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 EC2 delle interruzioni delle istanze Spot.

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