Wprowadzenie do architektury Docker Swarm
Docker Swarm to narzędzie do grupowania i organizowania kontenerów, które jest wbudowane w Docker Engine dla systemu rozproszonego, który obejmuje setki kontenerów. Węzeł Docker, usługi Docker i zadania Docker są kluczowymi komponentami architektury roju Docker.
- Węzeł Docker: Jest to instancja Docker Engine zawarta w roju Docker, ma dwa rodzaje:
- Węzeł menedżera: odpowiedzialny za wszystkie zadania związane z orkiestracją i zarządzaniem pojemnikami wymagane do utrzymania systemu w pożądanym stanie, takim jak utrzymanie stanu klastra, planowanie usług i obsługa punktów końcowych HTTP w trybie roju.
- Usługa Docker: Jest to definicja zadania, którą należy wykonać.
Typowa architektura Docker Swarm
Poniżej znajdują się punkty typowej architektury roju dokerów:
- Węzeł jest kluczowym elementem architektury roju dokerów, architektura roju może mieć więcej niż jeden węzeł menedżera prowadzony przez pojedynczy węzeł menedżera wybrany za pomocą algorytmu Raft, węzeł menedżera może również działać jako węzeł roboczy, ale można go skonfigurować do pracy jako menedżer węzeł też.
- Węzły menedżera używają algorytmu tratwy konsensusu do wewnętrznego zarządzania stanem klastra. Ma to na celu zapewnienie, że wszystkie węzły menedżera, które planują i kontrolują zadania w klastrze, utrzymują / przechowują spójny stan.
- Rój to klaster silników dokujących lub węzłów, w którym wdrażamy nasze usługi. Na wczesnym etapie Docker opracował system zarządzania klastrami z protokołem komunikacyjnym znanym jako Beam. Później dodali więcej interfejsów API i zmienili nazwę na rój. Rój pierwszej generacji nazywa się „rój v1”.
Przepływ pracy Docker Swarm
Przepływ pracy roju dokerów polega na zrozumieniu sposobu działania węzłów i usług w architekturze roju dokerów:
Krok 1: Pierwszym krokiem jest utworzenie zestawu dokerów-maszyn, które będą działać jako węzły w roju dokerów , jeden z tych węzłów będzie menedżerem, pozostałe węzły będą działać jako węzły robocze. Aby utworzyć maszynę dokującą, użyj polecenia w systemie Windows, uruchom terminal dokowany.
docker-machine create –driver hyperv manager1
- Gdzie „manager1” to nazwa dokera-maszyny, aby wyświetlić listę komputerów i odpowiednio je uruchomić.
docker-machine ls
docker-machine ip manager1
Krok 2: Drugim krokiem jest utworzenie komputerów roboczych, użyj poniższego polecenia, aby utworzyć tyle komputerów roboczych, ile chcesz, tutaj stwórzmy 3 pracowników.
docker-machine create –driver hyperv worker1
docker-machine create –driver hyperv worker2
docker-machine create –driver hyperv worker3
- Możemy połączyć się z menedżerem lub pracownikiem za pomocą poniższego polecenia, które przeniesie Cię do wnętrza komputera.
docker-machine ssh manager1/worker1
Krok 3: Krok trzeci polega na zainicjowaniu roju dokerów, musimy uruchomić tę komendę na maszynie, którą chcemy pracować jako menedżer, w ten sposób tworzymy menedżera węzłów, możemy również dodawać więcej menedżerów.
docker-machine ssh manager1
docker swarm init –advertise-and Manager1 IP
Krok 4: Krok czwarty polega na dołączeniu do węzłów roboczych w celu roju, uzyskania polecenia dołączenia do węzła jako pracownika za pomocą poniższego polecenia na maszynie menedżera i uruchomieniu polecenia, które masz na maszynie roboczej, którą chcesz utworzyć pracownika.
Docker swarm join-token worker1
- Aby sprawdzić, czy pracownik jest dołączony do roju, czy nie, przejdź do komputera menedżera i uruchom polecenie, wyświetli listę dodanych komputerów roboczych ze szczegółami menedżera.
docker-machine ls
Krok 5: Krok piąty polega na uruchomieniu standardowych poleceń dokera w menedżerze.
docker info (fetches details about docker swarm)
docker swarm (commands that can run on docker swarm such as join, leave, update, init and unlock etc)
Krok 6: Krok szósty polega na uruchomieniu kontenerów dokujących na roju doków, możemy utworzyć dowolną usługę i jej repliki. Wejdź na ub.docker.com, zaloguj się i przejdź do eksploracji depozytariuszy, możemy zobaczyć różne obrazy, które są silnikami, na przykład nginx (działa na serwerze) tworzy usługę i jej replika używa poniższego polecenia na menedżerze.
docker service create –replicas 3 -p 80:80 –name sample nginx
- Gdzie „sample” to nazwa usługi, a 80 to port, który jest narażony na sprawdzenie statusu usługi uruchomionej poniżej polecenia w węźle menedżera.
docker service ls
docker service ps sample
Sprawdź usługę działającą na wszystkich węzłach, a także sprawdź w przeglądarce, podając adres IP dla wszystkich węzłów.
Krok 7: Krok siódmy, teraz możemy zobaczyć faktyczne wykorzystanie roju dokerów, w którym skalujemy usługę w górę iw dół. Aby skalować usługę, uruchom poniższe polecenie na komputerze menedżera
docker service scale sample=4
- Powyższe polecenie sprawi, że przykładowa usługa będzie działać na 4 węzłach, mimo że wszystkie węzły są zajęte, utworzy inną usługę na menedżerze lub pracowniku. W podobny sposób możemy zmniejszyć usługę.
docker service scale sample=2
- Możemy również sprawdzić węzeł, aby uzyskać szczegółowe informacje, takie jak ile i która usługa działa w węźle, uruchamiając poniższe polecenia w węźle menedżera
docker node inspect worker1/manager1
docker node inspect self
Krok 8: Krok ósmy polega na aktualizacji usługi, gdy usługa jest uruchomiona na wielu komputerach, a jeśli chcemy zaktualizować usługę, jest to bardzo proste i proste, na przykład, jeśli chcemy zaktualizować wersję usługi nginx.
docker service update –image nginx:1.14.0 sample
Krok 9: Zamknij / zatrzymaj / usuń.
- Aby zamknąć dowolny konkretny węzeł, użyj poniższego polecenia, które zmienia status węzła na „drenaż”.
docker node update –availability drain worker1
- Aby usunąć usługę ze wszystkich maszyn.
docker service rm sample
- Opuścić rój, co zmienia status „w dół”.
docker swarm leave
- Aby zatrzymać maszynę (Uruchom z terminala dokującego, a nie na maszynie kierownika lub pracownika).
docker-machine stop worker1
docker-machine rm worker1
Korzyści z architektury Docker Swarm
Poniżej znajdują się punkty pokazujące zalety architektury Docker Swarm Architecture:
- Projekt zdecentralizowany: możemy zarządzać klastrami roju za pomocą polecenia roju, Daje to pojedyncze p (zwykły dostęp do budowy całego roju).
- Jest bardzo prosty w porównaniu do Kubernetes.
- Wysoka dostępność: Wśród węzłów dostępnych w roju, jeśli master ulegnie awarii, inny węzeł roboczy przejmie ładunek.
- Stan pożądany Uzgodnienie: Menedżer roju śledzi stan klastra, aby pożądany i rzeczywisty stan był zawsze taki sam.
- Kiedy określamy sieć nadrzędną do łączenia się z twoimi usługami, menedżer roju przypisuje adresy do kontenera w sieci nakładkowej po utworzeniu / aktualizacji kontenerów
- Aktualizacje kroczące: Aktualizacje usług można wykonywać przyrostowo. Menedżer roju pozwala określić opóźnienie między każdą aktualizacją bez żadnych przestojów.
Wniosek
Docker Swarm to proste narzędzie zamiast dużych narzędzi, które wykonują to zadanie, Docker with Swarm zapewnia potrzebną orkiestrację, jest łatwy w konfiguracji i dostarcza natywny silnik Dockera, który i tak będziemy instalować i używać.
Polecane artykuły
To jest przewodnik po architekturze Docker Swarm. Tutaj omawiamy, jak działają węzły i usługi w architekturze roju dokerów z ich zaletami. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej -
- Architektura dokerów
- Co to jest Docker Swarm?
- Aplikacje Swarm Intelligence
- Czy technologia Swarming pomaga w rozwoju zespołów zwinnych?