CodeGym /Kursy /Docker SELF /Skalowanie serwisów

Skalowanie serwisów

Docker SELF
Poziom 16 , Lekcja 2
Dostępny

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:

  1. Skalowalność: Możliwość łatwego zwiększenia lub zmniejszenia liczby instancji serwisu w zależności od aktualnego obciążenia.
  2. Odporność na błędy: Uruchomienie wielu instancji serwisu pozwala na zapewnienie odporności, ponieważ awaria jednej instancji nie spowoduje zatrzymania całego serwisu.
  3. 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.

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Aby uruchomić 3 instancje serwisu web, użyj komendy:

Terminal

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.

Terminal

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:

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80-90:80"

Uruchom i skaluj usługę do 3 instancji:

Terminal

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:

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:

Terminal

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:

Terminal

docker compose ps

Zatrzymywanie i usuwanie skalowalnych serwisów

Aby zatrzymać i usunąć wszystkie instancje serwisu, użyj komendy docker compose down:

Terminal

docker compose down

Porady i wskazówki:

  1. 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.
  2. 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.
  3. Monitorowanie: użyj narzędzi monitorujących, takich jak Prometheus czy Grafana, aby śledzić wydajność i stan skalowalnych serwisów.
  4. 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.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION