8.1 Komenda docker compose scale
Skalowanie serwisów — to proces zwiększania lub zmniejszania liczby instancji kontenerów, które wykonują tę samą usługę, aby zarządzać obciążeniem i zapewnić wysoką dostępność aplikacji. W Docker Compose do skalowania serwisów używana jest komenda docker compose scale (w starszych wersjach) lub parametr --scale w nowszych wersjach.
Główne koncepcje skalowania:
- Skalowalność: Możliwość łatwego zwiększenia lub zmniejszenia liczby instancji serwisu w zależności od aktualnego obciążenia.
- Odporność na błędy: Uruchomienie wielu instancji serwisu pozwala na zapewnienie odporności, ponieważ awaria jednej instancji nie spowoduje zatrzymania całego serwisu.
- Równoważenie obciążenia: Rozdzielanie obciążenia pomiędzy kilkoma instancjami serwisu w celu optymalizacji wydajności.
Użycie komendy docker compose scale
Składnia komendy:
docker compose scale SERVICE=NUM
Gdzie:
- SERVICE: nazwa serwisu, który trzeba skalować.
- NUM: liczba instancji, które mają zostać uruchomione.
Przykład użycia:
Załóżmy, że masz plik compose.yaml z definicją serwisu web.
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
Aby uruchomić 3 instancje serwisu web, użyj komendy:
docker compose scale web=3
Uwaga: Przed wykonaniem komendy docker compose scale upewnij się, że serwisy są uruchomione za pomocą komendy docker compose up.
Użycie parametru --scale w nowszych wersjach
W nowszych wersjach Docker Compose komenda docker compose scale została zastąpiona parametrem --scale, który jest używany z komendą up.
docker compose up --scale web=3
To podejście jest zalecane, ponieważ pozwala na jednoczesne uruchamianie i skalowanie serwisów.
8.2 Przykłady praktyczne
Przykład 1: Skalowanie serwera web
Stwórz plik compose.yaml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80-90:80"
Uruchom i skaluj usługę do 3 instancji:
docker compose up --scale web=3
Teraz masz 3 instancje serwera web Nginx, działające na portach z zakresu 80-90.
Ważne! Jeśli usługa wymaga skalowania na wiele instancji, konieczne jest określenie zakresu portów, na przykład: "80-90:80". To "zarezerwuje" na hoście zakres 10 portów. Podczas dodawania repliki usługi zostanie jej przypisany port z zakresu. Jeśli tego nie zrobisz, porty zostaną wybrane losowo, a repliki staną się niedostępne.
Przykład 2: Skalowanie z bazą danych
Stwórz plik compose.yaml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80-90:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Uruchom i skaluj usługę web do 4 instancji:
docker compose up --scale web=4
Teraz masz 4 instancje serwera web Nginx, działające z jedną bazą danych PostgreSQL.
8.3 Zarządzanie skalowalnymi serwisami
Po skalowaniu serwisów możesz używać komend Docker Compose do zarządzania instancjami.
Podgląd uruchomionych kontenerów
Użyj komendy docker compose ps, aby zobaczyć wszystkie uruchomione kontenery:
docker compose ps
Zatrzymywanie i usuwanie skalowalnych serwisów
Aby zatrzymać i usunąć wszystkie instancje serwisu, użyj komendy docker compose down:
docker compose down
Porady i wskazówki:
- Równoważenie obciążenia: użyj load balancerów do rozdzielania ruchu między kilkoma instancjami serwisu. Na przykład, możesz użyć Nginx albo HAProxy do tego celu.
- Przechowywanie danych: upewnij się, że dane generowane przez skalowane serwisy są przechowywane w wolumenach lub zewnętrznych magazynach, aby zapobiec ich utracie podczas zatrzymywania lub usuwania kontenerów.
- Monitorowanie: użyj narzędzi monitorujących, takich jak Prometheus czy Grafana, aby śledzić wydajność i stan skalowalnych serwisów.
- Automatyczne skalowanie: rozważ możliwość automatycznego skalowania serwisów w zależności od obciążenia za pomocą orkiestratorów, takich jak Kubernetes albo Docker Swarm.
GO TO FULL VERSION