Skalowanie pionowe i poziome aplikacji web

Elastyczne dostosowywanie przydzielanych zasobów do bieżących obciążeń aplikacji

Automatyczne skalowanie pionowe

To zdolność do dynamicznego przydziału zasobów serwera (pamięci RAM i mocy procesora) zgodnie z aktualnymi wymaganiami aplikacji, bez konieczności ręcznej interwencji. Idea jest dość prosta – gdy tylko obciążenie aplikacji rośnie, nasza platforma po prostu udostępnia jej dodatkowe zasoby, a gdy obciążenie spada, platforma automatycznie zmniejsza zasoby. Można to zobaczyć na poniższym filmie.

Zobacz jak Cloudlets.Zone dodaje zasoby, gdy ich potrzeba

Skalowanie jest "zaszyte" w naszym kreatorze topologii. Dzięki automatycznemu skalowaniu nigdy nie przepłacasz za niewykorzystane zasoby i oszczędzasz czas, bo gdy raz ustalisz limity skalowania, nie musisz się już tym zajmować. Określając limity skalowania skutecznie określasz budżet, zapobiegając zbyt wysokim rachunkom.

Jeśli ustalony limit skalowania okaże się zbyt niski do występujących obciążeń, nasza platforma powiadomi Cię o tym poprzez e-mail.

Na poniższym obrazku zaznaczony został obszar do zarządzania limitami skalowania. Wystarczy przesunąć suwak lub wpisać liczbę cloudletów. Cloudlet jest jednostką miary odpowiadającą określonej mocy procesora i wielkości pamięci. Na platformie Cloudlets.Zone mamy dwa rodzaje cloudletów - dynamiczne i zarezerwowane. Dynamiczne są dodawane i oddawane zależnie od obciążeń. Zarezerwowane są przypisywane na stałe. Maksymalny limit skalowania wynosi 256 cloudletów, co jest odpowiednikiem: 32 GiB RAM i 102.4 GHz czasu procesora. Co ważne, limit cloudletów ustawić można dla każdego kontenera w ramach każdej warstwy. Daje to całkiem spore możliwość skalowania środowisk.

Skalowanie PIONOWE, czyli moc procesora i pamięć RAM

Skalowanie pionowe ma zastosowanie dla dowolnego typu instancji w środowisku, tj. serwera aplikacji, bazy danych, load balancera, kontenera Dockera, Elastycznego VPS, instancji pamięci podręcznej i węzła kompilacji.

Ostrzeżenie o konieczności restartowania węzłów po zmianie limitu skalowania

UWAGA, w przypadku zmiany limitu skalowania (tj. liczby dynamicznych cloudletów) dla istniejących węzłów serwera aplikacji, bazy danych lub pamięci podręcznej, odpowiednia warstwa zostanie zrestartowana. Odpowiednie ostrzeżenie zostanie wyświetlone bezpośrednio w kreatorze topologii.

Dzięki automatycznie zbieranym statystykom możesz sprawdzić poziom zużycia za ostatni miesiąc i zgodnie z nim ustawić ilość zasobów. A jeśli Twoja aplikacja stanie się bardzo popularna, a pojemność pojedynczego kontenera nie wystarczy, możesz ją skalować w poziomie, ręcznie zwiększając liczbę węzłów lub skonfiguruj zestaw wyzwalaczy do automatycznego skalowania poziomego.

Ręczne oraz automatyczne skalowanie poziome

Jeśli maksymalny limit skalowania kontenera wynoszący 256 cloudletów nie jest już wystarczający, wówczas można skorzystać z funkcji zwielokrotniania liczby kontenerów.

Proces ręcznego skalowania jest dość prosty. Wystarczy w kreatorze topologii środowiska użyć odpowiednich przycisków „ + ” i „ - ” lub wpisać żądaną liczbę w centralnym panelu. Można także użyć suwaka, który pojawia się automatycznie po dokonaniu dowolnej regulacji.

Należy także określić tryb skalowania jako stanowy (Stateful) lub bezstanowy (Stateless).

Tryby skalowania

Na platformie Cloudlets.Zone można wybrać preferowany tryb skalowania zarówno dla nowych jak i istniejących środowisk:

  • Bezstanowy - jednocześnie tworzy wszystkie nowe węzły z podstawowego szablonu obrazu

  • Stanowy - sekwencyjnie kopiuje system plików kontenera głównego do nowych węzłów

Skalowanie poziome - bezstanowe i stanowe

Pierwsza opcja jest szybsza, a druga automatycznie kopiuje wszystkie niestandardowe konfiguracje. W ten sposób podczas początkowego tworzenia warstwy wszystkie węzły są tworzone jednocześnie, aby przyspieszyć proces (nawet w trybie stanowym, ponieważ nie zastosowano jeszcze dostosowywania). Korzystając z trybu bezstanowego, należy pamiętać o braku następujących funkcji w nowo utworzonych węzłach w warstwie:

  • istniejące konteksty projektu nie zostaną przeniesione

  • certyfikaty i konfiguracje SSL nie zostaną skopiowane

  • niestandardowe montowania zostaną przeniesione tylko wtedy, gdy skonfigurowany jest odpowiedni wolumin

  • dodatki zainstalowane na warstwie nie będą dostępne

Przesyłanie niestandardowych plików w trybie bezstanowym można wykonać ręcznie lub skonfigurować za pomocą automatyzacji Cloud Scripting (np. za pomocą zdarzeń onBefore- i onAfterScaleOut ).

Dlatego na naszej platforma zalecamy i domyślnie stosujemy tryb skalowania stanowego dla load balancera, serwera aplikacji i VPS'ów . W razie potrzeby możesz ręcznie przedefiniować tryb skalowania dla swoich węzłów w dowolnym momencie za pomocą kreatora topologii.

Automatyczne skalowanie poziome

Automatyczne skalowanie poziome to zwielokrotnianie liczby kontenerów w warstwie pod wpływem zmieniającego się obciążenia. Instalacje klastrowe dostępne na naszym marketplace, mają od razu zdefiniowane podstawowe reguły skalowania poziomego, tzw. wyzwalacze.

Zobacz jak działa skalowanie poziome

Ten rodzaj skalowania w połączeniu z regułą anti-affinity (antypowinowactwa), czyli zasadą rozmieszczania kolejnych kontenerów na różnych serwerach, daje coś jeszcze. Otóż, środowisko z dwoma lub więcej kontenerami w każdej warstwie, staje się również odporne na awarie pojedynczego serwera (High Availability).

Wyzwalacze do automatycznego skalowania

Zautomatyzowanie skalowania poziomego sprowadza się do ustawienia wyzwalaczy. Aby ustawić wyzwalacze, wykonaj następujące czynności:

1.Kliknij przycisk Ustawienia dla wymaganego środowiska.

2. W otwartej zakładce przejdź do Automatyczne skalowanie poziome, gdzie możesz zobaczyć listę wyzwalaczy skalowania skonfigurowanych dla bieżącego środowiska (o ile istnieją).

Użyj przycisków na panelu narzędzi, aby zarządzać automatycznym skalowaniem poziomym dla środowiska:

  • Dodaj - tworzy nowy wyzwalacz

  • Edytuj - dostosowuje istniejący wyzwalacz

  • Usuń - usuwa niepotrzebny wyzwalacz

  • Odśwież - aktualizuje wyświetlaną listę wyzwalaczy skalowania

3. Kliknij Dodaj, aby kontynuować.

4. Wybierz wymaganą warstwę środowiska z listy rozwijanej, a nastepnie typ zasobu do monitorowania, używając graficznych zakładek dla: CPU, Pamięci, Sieci, Dyskowego I/O & IOPS .

Parametryzacja wyzwalaczy skalowania poziomego - liczby kontenerów

3. Każdy wyzwalacz ma warunki Dodaj i Usuń węzły, które można włączyć za pomocą odpowiednich pól wyboru tuż przed tytułem.

  • Gdy obciążenie jest większe (mniejsze) niż - górna (dolna) granica w procentach dla średniego obciążenia (tj. aktywuje wyzwalacz w przypadku przekroczenia)

  • Dla co najmniej - liczba minut, dla których obliczane jest średnie zużycie (do jednej godziny z krokiem 5 minut, tj. 1 , 5 , 10 , 15 , itd.)

  • Skaluj na zew. / do wew. - maksymalna (minimalna) liczba węzłów dla warstwy, którą można skonfigurować dzięki automatycznemu skalowaniu w poziomie

  • Skaluj według - liczba węzłów, które mają zostać dodane/usunięte jednocześnie po wykonaniu wyzwalacza

Podpowiedzi

  • żądaną wartość można określić za pomocą odpowiednich suwaków na wykresie

  • wartość 100% automatycznie wyłącza wyzwalacz Dodaj węzły, a 0% - wyzwalacz Usuń węzły

  • minimalna dozwolona różnica między warunkami dodawania i usuwania węzłów to 20%

  • jednostka Mbps może być użyta dla Sieci zamiennie dla wartości procentowej

  • zalecamy ustawienie średniego obciążenia wyzwalacza Dodaj węzły powyżej progu 50%, aby uniknąć niepotrzebnego skalowania (tj. zmarnowanych zasobów = środków)

Poniżej wynik ustawienia wyzwalaczy skalowania poziomego dla CPU i Pamięci RAM.

Platforma Cloudlets.Zone, co minutę analizuje średnie zużycie zasobów (dla liczby minut określonej w wyzwalaczu), aby zdecydować, czy wymagana jest korekta liczby węzłów. Co ważne, statystyki analizowane są dla całej warstwy, więc jeśli są trzy węzły obciążone odpowiednio w 20%, 50% i 20%, obliczona wartość średnia wynosi 30%.

Podczas konfigurowania wyzwalacza zalecamy uwzględnienie trybu skalowania warstwy. Przykładowo, należy ustawić niższy procent wyzwalania dla Dodaj węzły w trybie stanowym, ponieważ klonowanie zawartości wymaga trochę czasu (szczególnie w przypadku kontenerów z dużą ilością danych) i można osiągnąć limit zasobów przed utworzeniem nowego węzła.

4. Domyślnie będziesz otrzymywał powiadomienia e-mail o aktywności wyzwalacza automatycznego. W razie potrzeby powiadomienia można wyłączyć odznaczając - Wyślij powiadomienia e-mail .

Historia aktywności wyzwalaczy

W zakładce Automatyczne skalowanie poziome, oprócz ustawień, można także przeglądać historię aktywności wyzwalaczy skalowania poziomego.

W poniższym przykładzie zastosowano wysokie obciążenie 3 razy przez 3 minut (zobacz statystyki użycia CPU na poniższym obrazku) na serwerze ze skonfigurowanymi następującymi wyzwalaczami:

  • dodaj węzeł, gdy średnie obciążenie CPU przekraczy 70% przez co najmniej 1 minutę

  • usuń węzeł, gdy średnie obciążenie CPU jest mniejsze niż 20% przez co najmniej 1 minutę

Zobaczmy teraz zachowanie automatycznego skalowania w poziomie:

A. Przejdź do Ustawienia > Automatyczne skalowanie poziome > Historia.

B. W wykazie podane są następujące dane:

  • Data i godzina wykonania wyzwalacza

  • Wykonana akcja (Dodaj lub usuń węzły)

  • Typ węzłów, do których zastosowano skalowanie

  • Informacje o warunku wykonania wyzwalacza

Dodatkowo po najechaniu na dany rekord można dodatkowo sprawdzić Loading Value (zużycie zasobów w momencie wykonania) oraz Liczba węzłów (wynikową liczbę węzłów).

Wyzwalacze Dodaj węzły / Usuń węzły są niezależne, więc warunek usuwania (średnie obciążenie mniejsze niż 20% przez co najmniej 1 minutę) nie jest resetowany i będzie utrzymany nawet po dodaniu nowego węzła. Takie podejście zapewnia szybsze wykrywanie wystarczającego średniego obciążenia w określonym przedziale.

W produkcyjnych zastosowaniach, zaleca się zastosowanie znacząco różnych parametrów skalowania w górę i w dół oraz dłuższych przedziałów czasowych, aby uniknąć częstych zmian topologii.

Tak wygląda konfiguracja automatycznego skalowania poziomego na Cloudlets.Zone, która zapewnia optymalną wydajność aplikacjom i gwarantuje gotowość do przyjęcia bardzo dużych obciążeń.