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 al prezzo. On-Demand Amazon EC2 può interrompere l'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 Spot Instances 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 le istanze server e client collaborano per fornire un file system performante e affidabile. 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 e memorizzano nella cache i dati del file system. I/O I clienti dovrebbero rispondere entro 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 rimuovere i Lustre client che non rispondono dopo alcuni minuti. Per evitare di dover attendere più minuti prima che un client non risponda alla richiesta del server, è importante smontare correttamente i client, soprattutto prima di chiudere le istanze Spot Lustre EC2. Uno smontaggio pulito viene avviato utilizzando il comando senza o. umount -f -l
Se Lustre i client vengono chiusi senza aver smontato correttamente il file system, è probabile che altri client che utilizzano quel file system subiscano un temporaneo aumento della latenza, interruzioni delle operazioni o errori. I/O
EC2 Spot invia avvisi di chiusura con 2 minuti di anticipo prima di chiudere un'istanza. Ti consigliamo di automatizzare il processo di smontaggio pulito dei client prima di terminare le istanze Spot EC2Lustre.
Esempio— Script per smontare in modo pulito le istanze Spot EC2 in fase di terminazione
Questo script di esempio smonta in modo pulito le istanze Spot EC2 che 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, in particolare per chiudere correttamente l'applicazione. Per ulteriori informazioni sulle best practice per la gestione delle interruzioni delle istanze Spot, vedi Best practice per la gestione delle interruzioni delle istanze Spot EC2.
Nota
Un Lustre client può impiegare del tempo per smontare un file system. Se monti più file system sulla stessa istanza Spot di Amazon EC2, potrebbe essere necessario troppo tempo per smontarli tutti entro la finestra di avviso di chiusura di Spot di due minuti. Se devi montare un numero elevato di file system su un host, ti consigliamo di utilizzare le On-Demand istanze per evitare problemi di smontaggi non puliti dovuti alle interruzioni delle istanze Spot di Amazon 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/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