Skalowanie poziome odnosi się do kręcenia większej liczby komputerów, i.E, maszyny wirtualne, pojemniki lub serwery fizyczne w celu zaspokojenia wszelkich wzrostów wymagań. Jest to w przeciwieństwie do skalowania 'pionowo ', który zwykle odnosi się do wymiany wolniejszej maszyny (z mniejszą pamięcią i pamięcią) szybszym ”większy ' jeden.
Z pojemnikami skalowanie obu rodzajów stało się bardzo dynamiczne. Możesz ustawić kwoty dla określonych aplikacji Ustawianie ilości procesora, pamięci lub pamięci, do których mogą mieć dostęp. Kwota można zmienić, aby w razie potrzeby skalować w górę lub w dół. Podobnie możesz skalować poziomo, kręcąc więcej kontenerów, które pomieści wzrost popytu, a później skali, niszcząc nadmiar utworzonych pojemników. Jeśli korzystasz z usług hostowanych w chmurze, które wystawiają rachunki za godzinę (lub minutę), może to znacznie zmniejszyć rachunki hostingowe.
W tym artykule skupimy się tylko na skalowaniu poziomym, które nie jest tak dynamiczne jak powyższy opis, ale jest to dobry punkt wyjścia dla kogoś, kto uczy się podstaw. A więc zacznijmy.
Po uruchomieniu stosu aplikacji przekazując plik komponsu do CLI Kompozycja dokera Możesz użyć flagi -skala Aby określić skalowalność dowolnej konkretnej usługi określonej tam.
Na przykład dla mojego pliku Docker-Compose:
Wersja: „3”
Usługi:
sieć:
Zdjęcie: „nginx: najnowszy”
Porty:
- „80-85: 80”
$ Docker -Compose Up -D -skala Web = 5
Tutaj usługa nazywa się Web w Deklaracji YML, ale może to być dowolny indywidualny element twojego wdrożenia, tj.e, front-end, baza danych, demon monitorujący itp. Ogólna składnia wymaga wybrania jednego z elementów w sekcji usług najwyższego poziomu. W zależności od usługi może być konieczne zmodyfikowanie innych części skryptu. Na przykład zakres portów hosta 80-85 jest podawany w celu zakwaterowania 5 instancji kontenerów nginx wszystkich słuchających na ich wewnętrznym porcie 80, ale host słucha w portach od 80-85 i przekierowuje ruch z każdego unikalnego portu do jednego z jednego z Instancje Nginx.
Aby zobaczyć, który kontener otrzymuje, który numer portu możesz użyć polecenia:
$ Docker PS -A
Utworzone polecenie obrazu ID kontenera
D02E19D1B688 Nginx: najnowszy demon „nginx -g”… ”około minuty temu
34b4dd74352d nginx: najnowszy demon „nginx -g”… ”około minuty temu
98549c0f3dcf nginx: najnowszy demon „nginx -g”… ”około minuty temu
Nazwy portów statusu
W górę około minuty 0.0.0.0: 83-> 80/TCP Project_Web_1
W górę około minuty 0.0.0.0: 82-> 80/TCP Project_Web_3
W górę około minuty 0.0.0.0: 81-> 80/TCP Project_Web_2
…
Aby skalować więcej niż jedną usługę, musisz wspomnieć o nich indywidualnie za pomocą parametru flagi skali i liczb. Na przykład, jeśli masz dwie różne usługi, musisz zrobić coś takiego:
$ Docker -Compose Up -D -Skala Service1 = 5 -Skala Service2 = 6
To jest jedyny sposób, aby to zrobić, ponieważ nie możesz uruchomić polecenia Docker -Compose Up -Scale dwa razy dla każdej usługi. Takie postępowanie skali poprzedniej usługi z powrotem do jednego kontenera.
Później zobaczymy, w jaki sposób możesz ustawić wartość skali dla danego obrazu, z wewnątrz kompozycji dokera.yml. W przypadku ustawiania opcji skali w pliku, odpowiednik CLI dla opcji skali zastąpi wartość w pliku.
Skala
Ta opcja została dodana w pliku Docker-Compose w wersji 2.2 i można technicznie używać, chociaż nie polecam go używać. Jest tutaj wspomniany ze względu na kompletność.
Dla mojego kompozycji dokera.plik YML:
wersja 2.2 "
Usługi:
sieć:
Zdjęcie: „nginx: najnowszy”
Porty:
- „80-85: 80”
Skala: 3
To jest całkowicie poprawna opcja. Chociaż działa dla Docker Engine 1.13.0 i powyżej.
Używaj replik w produkcji
Zamiast używać polecenia skali lub przestarzałej wartości skali w pliku kompozycji, należy użyć zmiennej repliki. Jest to prosta liczba całkowita powiązana z daną usługą i działa prawie w ten sam sposób, jak zmienna skali. Kluczową różnicą jest to, że Docker Swarm jest wyraźnie przeznaczony dla systemu rozproszonego.
Oznacza to, że możesz wprowadzić aplikację w wielu węzłach maszyn wirtualnych lub serwerach fizycznych działających w wielu różnych regionach i wielu różnych centrach danych. Pozwala to naprawdę skorzystać z wielu uruchomionych instancji serwisowych.
Pozwala na skalowanie aplikacji w górę i w dół, modyfikując jedną zmienną, ponadto oferuje większą odporność na przestoje. Jeśli centrum danych jest naliczone lub link sieci. Jeśli rozpowszechniasz wdrażanie aplikacji na wiele regionów geograficznych, e.G, UE, USA i Azji i Pacyfiku zmniejszy opóźnienie dla użytkowników próbujących uzyskać dostęp do aplikacji z wspomnianego regionu.
Podczas gdy skala kompozycji dokera jest przydatna w małych środowiskach, takich jak jeden host Docker działający w produkcji. Jest to również bardzo przydatne dla programistów prowadzących Dockera na ich stacji roboczej. Może pomóc im przetestować, w jaki sposób aplikacja będzie skalować w produkcji, aw różnych okolicznościach. Korzystanie z poleceń skali obchodzi kłopot z konfiguracją nowego roju dokera.
Jeśli masz działającą instancję Docker Swarm, możesz bawić się z replikami. Oto dokumentacja w tej sprawie,