# Skalowanie pionowe i poziome aplikacji web

## 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.

{% embed url="<https://youtu.be/Moe87x1nR0g>" %}
Zobacz jak Cloudlets.Zone dodaje zasoby, gdy ich potrzeba
{% endembed %}

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.&#x20;

{% hint style="info" %}
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.
{% endhint %}

Na poniższym obrazku zaznaczony został obszar do zarządzania limitami skalowania. Wystarczy przesunąć suwak lub wpisać liczbę cloudletów. [Cloudlet jest jednostką miary](/kompendium/faq/czym-jest-cloudlet.md) odpowiadającą określonej mocy procesora i wielkości pamięci. Na platformie [Cloudlets.Zone](https://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](/files/-Mgy_8u3jdHbeIdletps)

{% hint style="info" %}
**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*.
{% endhint %}

![Ostrzeżenie o konieczności restartowania węzłów po zmianie limitu skalowania](/files/-Mgz4jpu2QBAN4U42rL3)

{% hint style="warning" %}
**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.
{% endhint %}

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.&#x20;

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.

![](/files/-Mgz9GwYkjb4k4DADO_D)

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](/files/-MhEOEqJPWCUemerDoDF)

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

{% hint style="info" %}
Przesyłanie niestandardowych plików w trybie **bezstanowym** można wykonać ręcznie lub skonfigurować za pomocą automatyzacji [Cloud Scripting](https://docs.cloudscripting.com/) (np. za pomocą zdarzeń *onBefore-* i *onAfterScaleOut* ).
{% endhint %}

Dlatego na naszej platforma zalecamy i domyślnie stosujemy tryb skalowania **stanowego** dla *load balancera*, *serwera aplikacji* i V*PS'ó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.&#x20;

{% embed url="<https://youtu.be/UMlIFuQRZoU>" %}
Zobacz jak działa skalowanie poziome
{% endembed %}

{% hint style="info" %}
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).
{% endhint %}

![](/files/-MhEcvKJhPfz8WtJpaXV)

#### 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.

![](/files/-MhEousOSGWDY0GsU-pl)

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ć.&#x20;

![](/files/-MhFJgmENC50_eq_E9jq)

4\. Wybierz wymaganą warstwę środowiska z listy rozwijanej, a następnie 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](/files/-MhFLlmxEIgbf8idDmlu)

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

{% hint style="info" %}
**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)
  {% endhint %}

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

![](/files/-MhFN8AZspu7xLe8nb8t)

{% hint style="info" %}
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%.&#x20;
{% endhint %}

{% hint style="warning" %}
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.
{% endhint %}

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.&#x20;

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:

![](/files/-MhIM4gIa5YGMgzT6WT2)

* ***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ę

![](/files/-MhIdfxXp7aBNVjgb3dk)

Zobaczmy teraz zachowanie automatycznego skalowania w poziomie:

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

![](/files/-MhIbNNZm1TXLXwKBi1u)

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

![](/files/-MhIcQRP599Gd-JsoLZR)

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.&#x20;

{% hint style="warning" %}
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.
{% endhint %}

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

<figure><img src="/files/UHS4NxSH6kWE1hdp1BiY" alt=""><figcaption></figcaption></figure>

{% embed url="<https://cloudlets.zone/rejestracja/?utm_campaign=jitsi&utm_medium=kompendium&utm_source=kompendium>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kompendium.cloudlets.zone/kompendium/konfiguracja/skalowanie-poziome-i-pionowe.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
