2012-06-26 14 views
24

Szukamy możliwości autoskalowania EC2, aby poradzić sobie ze skokami obciążenia. W naszym przypadku chcemy skalować instancje w oparciu o rozmiar kolejki SQS, a następnie zmniejszamy skalę, a rozmiar kolejki jest kontrolowany. Każdy komunikat SQS definiuje potencjalnie długo działające zadanie (czasami do 20 minut dla każdego komunikatu), które musi się zakończyć, zanim instancja może zostać zakończona.Amazon EC2 autoskalowanie w dół z pełnym wdzięku zamknięciem?

Nasze oprogramowanie obsługuje proces zamykania z wdziękiem, więc wydanie sudo service ourapp stop będzie czekać na zakończenie aplikacji przed powrotem.

Moje pytanie; kiedy autoskalowanie rozpoczyna się od skalowania, kończy się wypowiedzeniem (co najwyraźniej jest jak naciśnięcie przycisku zasilania), czy będzie czekać, aż nasza aplikacja całkowicie zakończy działanie, zanim instancja się wyłączy?

https://forums.aws.amazon.com/message.jspa?messageID=180674 < - to i inne rzeczy znalazłem wydają się sugerować, że nie

Odpowiedz

16

W połowie 2014 r. AWS wprowadził "haki cyklu życia", które pozwalają na pełną kontrolę nad zakończeniem procesu. Proces skala

Nasz wysoki poziom w dół jest:

  • Auto Scaling wysyła komunikat do kolejki SQS z instancją ID
  • Controller aplikacja odbiera komunikat
  • Controller app wystawia instancji „zatrzymać 'request
  • Aplikacja kontrolera ponownie umieszcza kolejkę wiadomości SQS podczas zatrzymania instancji
  • Aplikacja kontrolera odbiera komunikat ponownie, sprawdza, czy instancja została zatrzymana (lub ponownie umieszcza kolejkę essage spróbować ponownie później)
  • Controller aplikacja powiadomi automatycznego skalowania „KONTYNUUJ” z zakończeniem
  • Controller aplikacja usuwa wiadomość z kolejki SQS

Więcej szczegółów: http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html

+0

Wow to jest COOL – Nate

+1

Wow, naprawdę fajnie - AWS wprowadził haki cyklu życia ponad 1000 lat temu, kiedy inne były jeszcze zajęte odkrywaniem Ameryki =) – sebastian

+0

Oto zaktualizowany link: http://docs.aws.amazon.com/ AutoScaling/latest/DeveloperGuide/AutoScalingGroupLifecycle.html – cars

21

robi na większość nowszych AMI, maszyny podano równowartość do „zatrzymania” (lub „shutdown -h now "Polecenie, aby usługi zostały zamknięte z wdziękiem, dopóki program dobrze gra ze skryptami start/shutdown, powinieneś być w porządku - ale jeśli twój program zajmie więcej niż 20 sekund, możesz doświadczyć, że amazon będzie całkowicie usunąć instancję:

Amazon's documentation ze względu na autoskalowanie nie określa procesu zakończenia, ale AWS's documentation dla ec2 w ogóle zawiera informacje o tym, co dzieje się podczas procesu kończenia połączenia - że maszyna ma komendę "shutdown", a domyślny czas zamknięcia w większości systemów wynosi 30 sekund.

+0

Dzięki za odpowiedź Ian . Wygląda na to, że możemy użyć autoskalowania, aby zwiększyć pojemność, ale nie usuwać pojemności ... – danw

+2

Teraz możliwe dzięki "hakom cyklu życia", zobacz moją odpowiedź ... – danw