CodeGym /Kursy /Docker SELF /Wprowadzenie do Docker Swarm

Wprowadzenie do Docker Swarm

Docker SELF
Poziom 18 , Lekcja 0
Dostępny

6.1 Podstawowe pojęcia Docker Swarm

Docker Swarm — to wbudowany system orkiestracji kontenerów, udostępniony przez Docker. Umożliwia tworzenie, zarządzanie i skalowanie klastra z hostów Docker, zmieniając je w jeden logiczny host, na którym można uruchamiać kontenery. Swarm automatycznie rozdziela zadania między węzłami, zapewniając wygodę i odporność na błędy. W tym wykładzie omówimy kluczowe komponenty i podstawowe polecenia zarządzania Docker Swarm.

Podstawowe pojęcia Docker Swarm:

  1. Klastra (Swarm): grupa hostów Docker połączonych w jeden logiczny klaster.
  2. Managerowie (Managers): węzły zarządzające klastrem i dystrybuujące zadania między węzłami roboczymi.
  3. Węzły robocze (Workers): węzły, które wykonują zadania i uruchamiają kontenery.
  4. Serwisy (Services): logiczne przedstawienie aplikacji, określające jakie zadania należy wykonać i ile instancji kontenerów uruchomić.
  5. Zadania (Tasks): pojedyncze kontenery, będące instancjami serwisów.

Architektura Docker Swarm:

Docker Swarm wykorzystuje architekturę opartą na managerach i węzłach roboczych. Managerowie zarządzają stanem klastra, a węzły robocze wykonują zadania.

Managerowie:

  • Zarządzają stanem klastra i jego konfiguracją.
  • Rozdzielają zadania między węzłami roboczymi.
  • Zapewniają odporność na błędy i wysoką dostępność (przy wielu managerach).

Węzły robocze:

  • Wykonują zadania zlecone przez managerów.
  • Uruchamiają kontenery zgodnie z zadaniami.

Podstawowe polecenia Docker Swarm:

  1. docker swarm init: inicjalizacja nowego klastra Swarm.
  2. docker swarm join: dołączenie węzła do istniejącego klastra.
  3. docker node ls: przeglądanie listy węzłów w klastrze.
  4. docker service create: utworzenie nowego serwisu.
  5. docker service ls: przeglądanie uruchomionych serwisów.
  6. docker service scale: skalowanie serwisu do określonej liczby instancji.
  7. docker service rm: usunięcie serwisu z klastra.

Korzystanie z Docker Swarm upraszcza zarządzanie aplikacjami w systemach rozproszonych, zapewniając odporność na błędy, skalowalność i wygodę wdrażania.

6.2 Tworzenie klastra Docker Swarm

Tworzenie i zarządzanie klastrem Docker Swarm

Krok 1: Inicjalizacja klastra

Na pierwszym hoście (managerze) wykonaj komendę:

Terminal

docker swarm init --advertise-addr <MANAGER_IP>

Ta komenda inicjalizuje nowy klaster Swarm, ustawi bieżący węzeł jako manager i wyświetli komendę do dołączania węzłów roboczych.

Krok 2: Dołączanie węzłów roboczych

Na innych hostach wykonaj komendę wyświetloną podczas wykonywania docker swarm init, aby dołączyć je do klastra:

Terminal

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

Gdzie:

  • <SWARM_TOKEN>: token do połączenia z klastrem (zwracany przez komendę docker swarm init).
  • <MANAGER_IP>: adres IP węzła-managera.

Krok 3: Wyświetlanie węzłów

Aby zobaczyć wszystkie węzły w klastrze, użyj komendy:

Terminal

docker node ls

Ta komenda pokaże listę wszystkich węzłów, włącznie z ich rolami, stanami i dostępnością.

Przykład wyniku komendy docker node ls

Terminal

ID                                    HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
qwertyuiop12345    manager-node        Ready               Active             Leader
asdfghjkl67890      worker-node1       Ready               Active
zxcvbnm09876       worker-node2       Ready               Active

Objaśnienie kolumn:

  • ID: Unikalny identyfikator węzła.
  • HOSTNAME: Nazwa hosta, na którym działa węzeł.
  • STATUS: Aktualny status węzła (np. Ready).
  • AVAILABILITY: Dostępność węzła (np. Active).
  • MANAGER STATUS: Wskazuje, czy węzeł jest managerem (np. Leader, Reachable) czy węzłem roboczym (puste).

Klastr Docker Swarm jest teraz skonfigurowany, możesz tworzyć i skalować aplikacje.

6.3 Zarządzanie Docker Swarm

Zarządzanie usługami w Docker Swarm

1. Tworzenie usługi

Utwórz usługę, która zostanie uruchomiona z określoną liczbą replik:

Terminal

docker service create --name my_web --replicas 3 -p 8080:80 nginx

W tym przykładzie tworzymy usługę my_web, która uruchamia 3 instancje Nginx. Kontenery publikują port 80 na porcie 8080 hosta.

2. Przeglądanie usług

Aby zobaczyć wszystkie uruchomione usługi w klastrze, użyj komendy:

Terminal

docker service ls

Przykład wyjścia polecenia docker service ls

Terminal

ID                     NAME         MODE           REPLICAS     IMAGE
ab12345               my_web       replicated     3/3          nginx:latest

3. Skalowanie usługi

Aby zmienić liczbę instancji (replik) usługi, użyj komendy docker service scale:

Terminal

docker service scale my_web=5

Teraz usługa my_web będzie miała 5 instancji.

4. Aktualizacja usługi

Aby zaktualizować obraz usługi do nowej wersji, użyj komendy docker service update:

Terminal

docker service update --image nginx:latest my_web

Zapewnienie wysokiej dostępności

Docker Swarm wspiera wysoką dostępność dzięki:

  1. Rozdzielaniu zadań między węzłami w klastrze, co umożliwia automatyczne przywracanie kontenerów w przypadku awarii.
  2. Wsparciu dla wielu menedżerów: Zaleca się nieparzystą liczbę menedżerów (na przykład 3 lub 5), aby uniknąć problemów z kworum.
  3. Używaniu replik: Skonfiguruj wiele replik dla każdej usługi, aby zwiększyć odporność na awarie.

Pojęcie kworum

Kworum to większość węzłów, które muszą zatwierdzić określoną akcję (np. zapis danych lub wybór lidera), aby była uznana za ważną. Na przykład, w klastrze z 5 węzłami kworum wynosi 3 węzły.

Przydatna wskazówka! Upewnij się, że menedżerowie są umieszczeni na różnych serwerach fizycznych lub w chmurze, aby zminimalizować ryzyko równoczesnych awarii.

6.4 Przykład konfiguracji Docker Compose dla Docker Swarm

Docker Compose można używać z Docker Swarm, aby uprościć zarządzanie aplikacjami wielokontenerowymi.

Przykład pliku docker-compose.yml

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080-8090:80"
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network

  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: example
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network

networks:
  my_overlay_network:
    driver: overlay
    

Uruchamianie stacka Docker Compose w Swarm

Aby zdeployować stack w Docker Swarm, użyj polecenia:

Terminal

docker stack deploy -c docker-compose.yml mystack

Podgląd stacka

Wyświetlanie wdrożonych stacków:

Terminal

docker stack ls

Podgląd usług w stacku

Terminal

docker stack services mystack
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION