2012-06-26 13 views
24

Stiamo valutando l'utilizzo della scalabilità automatica EC2 per gestire i picchi di carico. Nel nostro caso, vogliamo ridimensionare le istanze in base a una dimensione della coda SQS e quindi ridimensionarla con le dimensioni della coda che tornano sotto controllo. Ogni messaggio SQS definisce un lavoro potenzialmente di lunga durata (a volte fino a 20 minuti ciascuno per messaggio) che deve essere completato prima che l'istanza possa essere chiusa.Amazon EC2 esegue la scalabilità automatica con un arresto regolare?

Il nostro software gestisce il processo di spegnimento con garbo, quindi l'emissione di sudo service ourapp stop attenderà che l'app si completi prima di tornare.

La mia domanda; quando la scalabilità automatica inizia a ridursi, emette un termine (che apparentemente è come premere il pulsante di accensione), aspetterà che la nostra app esca completamente prima che l'istanza venga "spenta"?

https://forums.aws.amazon.com/message.jspa?messageID=180674 < - che e altre cose che ho trovato sembrano suggerire che non

risposta

16

A metà del 2014 AWS ha introdotto i "lifecycle hooks" che consentono il pieno controllo del processo di terminazione.

Il nostro alto livello verso il basso processo scala è:

  • Auto Scaling invia un messaggio a una coda SQS con un ID istanza
  • Controller App preleva il messaggio
  • Controller App emette un'istanza di 'stop 'richiesta
  • L'app controller re-accoda il messaggio SQS mentre l'istanza si sta arrestando
  • L'app controller recupera nuovamente il messaggio, controlla se l'istanza si è arrestata (o re-accoda il m essaggio a riprovare più tardi)
  • Controller App notifica Auto Scaling a 'PROCEDERE' con la cessazione
  • Controller App elimina il messaggio dalla coda SQS

Maggiori dettagli: http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html

+0

wow, questo è COOL – Nate

+1

wow, davvero interessante - AWS ha introdotto gli hook del ciclo di vita più di 1000 anni fa, quando altri erano ancora occupati a scoprire l'america =) – sebastian

+0

Ecco un link aggiornato: http://docs.aws.amazon.com/ AutoScaling/latest/DeveloperGuide/AutoScalingGroupLifecycle.html – cars

21

fa sul più recente AMI di, le macchine sono date l'equivalente di una 'battuta d'arresto' (o 'shutdown -h now 'comando in modo che i servizi vengano chiusi con grazia. Finché il tuo programma funziona bene con gli script di avvio/spegnimento, dovresti stare bene - ma, se il tuo programma impiega più di 20 secondi per terminare, potresti provare che Amazon uccidere completamente l'istanza

Amazon's documentation per quanto riguarda la loro scalabilità automatica non specifica il processo di terminazione, ma,di AWSper ec2 in generale contiene informazioni su ciò che accade durante il processo di terminazione - che alle macchine viene dato un comando di 'shutdown' e il tempo di spegnimento predefinito sulla maggior parte dei sistemi è di 30 secondi.

+0

Grazie per la risposta Ian . Sembra che potremmo essere in grado di utilizzare la scalabilità automatica per aggiungere capacità ma non rimuovere la capacità ... – danw

+2

Ora possibile tramite "hook del ciclo di vita", vedere la mia risposta ... – danw

Problemi correlati