Automatyczne skalowanie EC2 za pomocą instancji Spot i On-Demand?


13

Chcę zoptymalizować koszt naszych grup EC2 z automatycznym skalowaniem, umożliwiając im uruchamianie instancji dodatkowych zamiast instancji na żądanie.

Naprawdę chcę mieć możliwość utrzymania niektórych serwerów w grupie jako instancji na żądanie, niezależnie od tego, co stanie się z rynkiem cen instancji spotowych. Następnie chcę, aby wszystkie dodatkowe serwery w grupie, powyżej mojego skonfigurowanego minimum, były przypadkowymi wystąpieniami. Ogólnie jestem w porządku z opóźnieniem w dodawaniu serwerów za pomocą żądań natychmiastowych.

Nie mogę znaleźć sposobu, aby to zrobić i próbowałem przeszukać dokumentację AWS. Wygląda na to, że ASG może być albo na żądanie, albo na miejscu, ale nie może być hybrydą.

Mogłabym ewentualnie ręcznie dodać instancję na żądanie do modułu elastycznego równoważenia obciążenia przypisanego do grupy automatycznego skalowania, ale wtedy obciążenie tego serwera nie zostanie uwzględnione w pomiarach i wyzwalaczach automatycznego skalowania.

Przypuszczam, że mógłbym wprowadzić absurdalnie wysoką cenę oferty, aby mieć pewność, że zawsze dostanę serwery, których potrzebuję, ale potem patrzę na historię cen i widzę od czasu do czasu duże skoki.

Dokumentacja AWS jest sprzeczna ze sobą, ponieważ w jednym miejscu mówi się, że jeśli wprowadzisz minimum serwera, liczba ta jest „zapewniona”, aby tam być. Ale kiedy czytasz o instancjach spotowych, nie ma żadnych zapewnień. Różnica w cenie spot jest przekonująca, dlatego chciałbym wykorzystać ją tak mocno, jak to możliwe, jednocześnie utrzymując zawsze stałą linię bazową. czy to możliwe?

Odpowiedzi:


1

W tej chwili możesz łączyć instancje na żądanie i lokalizować w jednym ASG

Usługa Amazon EC2 Auto Scaling umożliwia teraz zapewnianie i automatyczne skalowanie wystąpień według opcji zakupu, stref dostępności (AZ) i rodzin wystąpień w jednej grupie automatycznego skalowania (ASG), aby zoptymalizować skalę, wydajność i koszt. Teraz możesz dołączyć wystąpienia Spot z funkcją On-Demand i RI w jednym ASG , aby zaoszczędzić do 90% na obliczeniach.


Tak - dziękuję za aktualizację tego pytania. Zaznaczyłem waszą jako nową kanoniczną odpowiedź na to.
platformy

15

Podejście omówione powyżej byłoby trochę niechlujne i mało elastyczne. Bardziej kanonicznym podejściem jest po prostu utworzenie 2 ASG (jeden dla spotu, jeden dla na żądanie), a następnie zarejestrowanie ich obu z tym samym ELB (omówionym tutaj ). Daje to możliwość kontrolowania każdego niezależnie, zamiast próbować zamieniać za pomocą swapów LC w jednym ASG.


7

Ten hybrydowy Auto Scaling podejście wydaje się nie być dostępne po wyjęciu z pudełka Rzeczywiście, niestety.

Jednak możesz być w stanie obejść to ograniczenie w następujący sposób (niesprawdzony, tylko projekt systemu, nad którym żonglowałem od dłuższego czasu):

Potencjalne obejście

Jak opisano w sekcji Używanie automatycznego skalowania do uruchamiania instancji spotów, cena ofertowa spot jest parametrem używanej konfiguracji uruchamiania . Jak już wskazałeś, hybrydowa konfiguracja uruchamiania nie jest dostępna, raczej musi być na żądanie lub na miejscu, co oznacza, że ​​przypadek użycia wymaga dwóch różnych konfiguracji uruchamiania.

Nie wydaje się to od razu pomocne, ponieważ można dołączyć tylko jedną konfigurację uruchamiania do grupy automatycznego skalowania naraz , z następującymi (częściowo nieaktualnymi) ograniczeniami (patrz Konfiguracja uruchamiania ):

Po dołączeniu nowej lub zaktualizowanej konfiguracji uruchamiania do grupy automatycznego skalowania wszelkie nowe instancje zostaną uruchomione przy użyciu nowych parametrów konfiguracji. Nie ma to wpływu na istniejące wystąpienia . Kiedy funkcja automatycznego skalowania musi zostać zmniejszona, najpierw kończy wystąpienia, które mają starszą konfigurację uruchamiania . [moje podkreślenie]

Podkreślone części są jednak kluczowe, przy czym te pierwsze obejmują wymóg utrzymania instancji działających na żądanie po zmianie z odpowiedniej początkowej konfiguracji uruchamiania na dodatkową konfigurację uruchamiania dodatkowego na żądanie, a ta druga niekoniecznie już tak jest z powodu niedawno wprowadzone zasady zakończenia automatycznego skalowania (dla odmiany zwykle nie było fanfarów za pośrednictwem dołączonego posta na blogu AWS), udokumentowane w zasadach zakończenia wystąpienia dla Twojej grupy automatycznego skalowania :

Zanim automatyczne skalowanie wybierze instancję do zakończenia, najpierw identyfikuje strefę dostępności, która ma więcej instancji niż inne strefy dostępności używane przez grupę. Jeśli wszystkie strefy dostępności mają tę samą liczbę wystąpień, identyfikuje losową strefę dostępności. W obrębie zidentyfikowanej strefy dostępności funkcja automatycznego skalowania używa zasady zakończenia do wybrania instancji do zakończenia . [moje podkreślenie]

Jak opisano w zasadach działania zasad zakończenia , możesz teraz określić opcję NewestInstance , jeśli chcesz, aby ostatnia uruchomiona instancja została zakończona , co byłoby jedną z ostatnio uruchomionych instancji dodatkowych:

Automatyczne skalowanie wykorzystuje czas uruchomienia instancji do zidentyfikowania instancji, która została uruchomiona jako ostatnia.

Oczywiście może być w tym nieco więcej, np. Możesz określić dowolną z zasad jako autonomiczną zasadę lub możesz wyświetlić wiele polityk na liście uporządkowanej , ale takie podejście powinno zapewnić obciążenie wszystkich instancji uwzględnianych w automatyczne skalowanie pomiarów i wyzwalaczy ; pozostaje jednak jedno zastrzeżenie:

Zastrzeżenie

Jeśli moduł równoważenia obciążenia zakończy jedną z instancji na żądanie z jakiegokolwiek innego powodu (np. Ponieważ sam stał się niezdrowy), nie zostanie automatycznie zastąpiony przez instancję na żądanie. Musisz więc monitorować to zdarzenie i rozliczać je osobno, np. Poprzez tymczasową aktywację konfiguracji uruchamiania na żądanie.

Powodzenia!


2
Ma to sens - świetna praca detektywistyczna. Nadal istnieje ryzyko awarii, ale wygląda na to, że odkryłeś kilka nowych sposobów zmniejszenia tego ryzyka. Mamy nadzieję, że pewnego dnia będziemy mieli proste pole wyboru dla ASG: „Instancje na poziomie minimum lub poniżej serwera są instancjami na żądanie”. Dzięki!
platformy

1

Inspiracją dla odpowiedzi tutaj znalazłem https://github.com/ashwanthkumar/matsya

Pomaga Ci wykonać następujące czynności

  • Zawsze potrzebujesz floty maszyn spełniających wymagania klastrowe Hadoop / Mesos / YARN
  • Chcesz zaoszczędzić pieniądze, używając Spot, ale także wrócić do OD, ponieważ potrzebujesz mocy obliczeniowej, aby spełnić warunki umowy SLA
  • Raz wróć do Spot na OD, aby ponownie zaoszczędzić pieniądze.

1
Należy pamiętać o naszej polityce dotyczącej autopromocji
HBruijn

Odpowiedź została podzielona z dobrymi intencjami, że może być przydatna. Jeśli uznasz to za autopromocję, mogę usunąć odpowiedź.
ashwanthkumar

Gdybym myślał, że twoja odpowiedź to prawdziwy spam, oznaczałbym ją już jako taką, więc nie musisz usuwać swojego postu. Link do promocji produktu jest bardziej wyprzedzający, że chociaż taka odpowiedź może być cenna, istnieje równowaga, której stosunkowo nowi użytkownicy, tacy jak ty, często nie są świadomi. Jako moderator wolę cię teraz uczyć, zanim przekroczysz linie, o których istnieniu nie wiedziałeś (co jest niefortunnym powtarzającym się wzorem)
HBruijn

Ma sens. Dzięki za informacje na temat zasad.
ashwanthkumar

1

Jeśli chcesz tylko 1 ASG ze statyczną liczbą instancji na żądanie, powinny działać:

  • Utwórz grupę automatycznego skalowania na podstawie konfiguracji uruchamiania wystąpienia punktowego.

  • Zawieś automatyczne skalowanie na ASG

  • Ręcznie dodaj instancje na żądanie (statyczne obciążenie podstawowe) do ASG i włącz ochronę instancji dla tych instancji.

  • Wznów automatyczne skalowanie w ASG

  • Domyślne zasady automatycznego skalowania będą teraz ignorować instancje na żądanie (ze względu na ochronę) i zakończą tę samą liczbę instancji dodatkowych co instancja na żądanie, aby osiągnąć żądaną liczbę grup. Wszelkie działania zwiększania lub zmniejszania będą uruchamiać lub przerywać tylko instancje spot.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.