Jak skonfigurować Docker Swarm z wieloma węzłami Docker na Ubuntu 18.04

Jak skonfigurować Docker Swarm z wieloma węzłami Docker na Ubuntu 18.04

Docker Swarm to narzędzie do orkiestracji i klastrowania kontenerowego do zarządzania hostami Docker i jest częścią Docker Engine. Jest to natywne narzędzie do klastrowania dostarczone przez Dockera, które zapewnia wysoką dostępność i wysoką wydajność dla Twojej aplikacji.

Głównym celem Docker Swarm jest grupowanie wielu hostów Docker w jeden logiczny wirtualny serwer-zapewnia dostępność i wysoką wydajność dla Twojej aplikacji poprzez dystrybucję go na wielu hostach Docker zamiast tylko jednego.

W tym samouczku nauczysz się:

  • Co to jest Docker Swarm
  • Jak skonfigurować hosty
  • Jak zainstalować i uruchomić usługę Docker
  • Jak skonfigurować węzeł menedżera do inicjalizacji klastra roju
  • Jak skonfigurować węzły robotnicze, aby dołączyć do klastra roju
  • Jak zweryfikować klaster roju
  • Jak wdrożyć nową usługę w klastrze Swarm
Docker Swarm Services.

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Ubuntu 18.04
Oprogramowanie Docker-Ce 18.09
Inny Uprzywilejowany dostęp do systemu Linux jako root lub za pośrednictwem sudo Komenda.
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Szczegółowo koncepcja roju

Funkcje zarządzania klastrami i orkiestracji osadzone w silniku Docker są zbudowane za pomocą Swarmkit.

Roj składa się z wielu hostów Docker, które działają w trybie Swarm i działają jako menedżerowie (które zarządzają członkostwem i delegacją) oraz pracowników (które uruchamiają usługi Swarm). Dany host Docker może być menedżerem, pracownikiem lub pełnią obu ról. Podczas tworzenia usługi definiujesz jego optymalny stan, taki jak liczba dostępnych zasobów repliki, sieci i pamięci, porty Usługa naraża się na świat zewnętrzny itp. Jeśli węzeł pracowniczy staje się niedostępny, Docker planuje, że zadania węzła na innych węzłach. Zadanie to działający kontener, który jest częścią usługi roju i zarządzany przez menedżera roju.



Jedną z kluczowych zalet usług roju w stosunku do samodzielnych kontenerów jest to, że możesz zmodyfikować konfigurację usługi, w tym sieci i objętości, z którymi jest podłączony, bez konieczności ręcznego ponownego uruchomienia usługi. Docker zaktualizuje konfigurację, zatrzyma zadania serwisowe z konfiguracją nieaktualną i utworzy nowe pasujące do żądanej konfiguracji.

Kiedy Docker działa w trybie Swarm, nadal możesz uruchamiać samodzielne pojemniki na dowolnym z hostów Docker uczestniczących w Roju, a także usług Swarm. Kluczową różnicą między samodzielnymi kontenerami a usługami roju polega na tym, że tylko menedżerowie roju mogą zarządzać rojami, podczas gdy samodzielne kontenery można uruchomić na każdym demon. Docker Daemons może uczestniczyć w roju jako menedżerowie, pracownicy lub oba.

Skonfiguruj hosty Docker

Przed zainstalowaniem niezbędnych pakietów Docker dla klastra Swarm skonfigurujemy plik hostów na wszystkich węzłach Ubuntu.

Węzeł menedżera - 192.168.1.103 (nazwa hosta - DockerManager) Node1 - 192.168.1.107 (nazwa hosta - DockerWorker1) Node Worker2 - 192.168.1.108 (nazwa hosta - DockerWorker2) 

Edytuj /etc/hosts plik we wszystkich trzech węzłach za pośrednictwem Gedit Lub krzepa i wykonaj następujące zmiany:

192.168.1.103 DockerManager 192.168.1.107 DockerWorker1 192.168.1.108 DockerWorker2 
Kopiuj

Po zmodyfikowaniu powyższych szczegółów w pliku hostów, sprawdź łączność z świst między wszystkimi węzłami.

Od hosta Docker Manager

# ping dockerWorker1 # ping 192.168.1.107 
# ping dockerWorker2 # ping 192.168.1.108 

Od Docker Worker Węzeł 1

# ping dockerManager # ping 192.168.1.103 

Od Docker Worker Węzeł 2

# ping dockerManager # ping 192.168.1.103 

Zainstaluj i uruchom usługę dokera

Aby utworzyć klaster roju, musimy zainstalować Docker we wszystkich węzłach serwerów. Zainstalujemy Docker-CE i.mi. Docker Community Edition na wszystkich trzech maszynach Ubuntu.

Przed zainstalowaniem Docker CE po raz pierwszy na nowym komputerze hosta musisz skonfigurować repozytorium Docker. Następnie możesz zainstalować i aktualizować Docker z repozytorium. Wykonaj wszystkie poniższe kroki we wszystkich trzech węzłach Ubuntu.

Zaktualizuj indeks pakietu Apt:

# aktualizacja apt-get 

Zainstaluj pakiety, aby APT użyć repozytorium przez HTTPS:

# apt-get instaluj apt-transport-https ca-certyfikaty curl oprogramowanie-properties-common -y 


Dodaj oficjalny klucz GPG Dockera:

curl -fssl https: // pobierz.doker.com/Linux/Ubuntu/GPG | sudo apt-key add - 

Użyj następującego polecenia, aby skonfigurować stabilne repozytorium:

# Add-Aapt-Repository „Deb [arch = amd64] https: // pobierz.doker.com/Linux/Ubuntu $ (LSB_RELEASE -CS) stabilny " 

Ponownie zaktualizuj pakiet apt:

# aktualizacja apt-get 

Zainstaluj najnowszą wersję Docker CE:

apt-get instaluj Docker-CE

Po zakończeniu instalacji uruchom usługę Docker i umożliwić jej uruchamianie za każdym razem w rozruchu systemowym.

# Systemctl Start Docker # Systemctl Włącz Docker 

Aby skonfigurować Dockkera, aby uruchamiał się jako normalny użytkownik lub użytkownik nie-root, uruchom następujące polecenie:

# Usermod -Ag Docker  
# Usermod -Ag Docker Manager # Usermod -Ag Docker Worker1 # Usermod -Ag Docker Worker2 

Teraz zaloguj się jako wyznaczony użytkownik i uruchom Docker Witaj świecie do weryfikacji.

# su - menedżer $ Docker Run Hello -World 

Po udanym biegu da poniższe wyjście

Instalacja Docker Check Hello_World.

Skonfiguruj węzeł menedżera do inicjalizacji klastra roju

W tym kroku stworzymy klaster roju naszych węzłów. Aby utworzyć klaster roju, musimy zainicjować tryb roju w węźle „DockerManager”, a następnie dołączyć do węzła „DockerWorker1” i „DockerWorker2” do klastra.

Zainicjuj tryb Docker Swarm, uruchamiając następujące polecenie Docker w węźle „DockerManager”.




Docker Swarm init --advertise-addr

$ Docker Swarm Init --advertise-Addr 192.168.1.103 
Inicjalizacja klastra rwari.

„dołącz token” został wygenerowany przez „DockerManager”, który będzie wymagany do dołączenia do węzłów pracowniczych do menedżera klastra.

Skonfiguruj węzły pracownicze, aby dołączyć do klastra Swarm

Teraz, aby dołączyć do węzłów roboczych do roju, uruchomię polecenie Docker Swarm, we wszystkich węzłach robotniczych, które otrzymaliśmy w etapie inicjalizacji roju:

$ Docker Swarm DODAJ-Token Swmtkn-1-4Htf3vnZMBHC88VXJYGUIPO91IHMUTRXI2P1SI2DE4WHAQYLR6-3OED1HNTTTWKALUR1EY7ZKDP9L 192.168.1.103: 2377 
Węzeł roboczy 1 dołączanie do klastra roju. Node pracownicze 2 dołączające do klastra roju.

Sprawdź klaster roju

Aby zobaczyć status węzła, abyśmy mogli ustalić, czy węzły są aktywne/dostępne itp., W węźle menedżera, wymień wszystkie węzły w roju:

$ Docker Node LS 
Weryfikacja klastra klastra Docker Swarm.

Jeśli w dowolnym momencie zgubiłeś token dołączający, można go odzyskać, uruchamiając następujące polecenie w węźle menedżera dla tokena menedżera:

$ Docker Swarm dołącz do menedżera -q -q 

W ten sam sposób odzyskania tokena pracownika Uruchom następujące polecenie w węźle menedżera:

$ Docker Swarm dołącz do pracy -token -q 

Wdrażaj nową usługę w klastrze Swarm

W tym kroku utworzymy i wdrożymy naszą pierwszą usługę w klastrze Swarm. Nowy serwer WWW Nginx będzie uruchomiony w domyślnym porcie HTTP 80, a następnie ujawni go na port 8081 na komputerze hosta. Utworzymy tę usługę Nginx z 2 replikami, co oznacza, że ​​w naszym roju będą 2 kontenery Nginx. Jeśli którykolwiek z tych kontenerów zawiedzie, zostaną ponownie odrodzone, aby mieć pożądany numer, który ustawiliśmy na opcji repliki.

$ Docker Service Utwórz --Name My-Web1-Publish 8081: 80-Replicas 2 nginx 

Po pomyślnym wdrożeniu usługi możesz zobaczyć poniższe dane wyjściowe:

Wdrażaj usługę Nginx w klastrze Swarm.

Aby sprawdzić nowo utworzoną usługę Nginx za pomocą poniższych poleceń serwisowych Docker.

$ Docker Service LS 
Wymień nowo wdrożoną usługę w klastrze Swarm.


Docker Service Ps

$ Docker Service PS My-Web1 
Wymienia zadania działające w ramach określonych usług w klastrze Swarm.

Jeśli musimy sprawdzić, czy usługa NGINX działa dobrze, możemy użyć polecenia curl lub zameldować przeglądarkę na komputerze hosta dla strony powitalnej serwera Web Nginx.

$ curl http: // dockerManager: 8081 

Kontrola usługi sieciowej Nginx za pośrednictwem Curl.

W przeglądarce na komputerze hosta możemy uzyskać dostęp do strony powitalnej Nginx

Kontrola usługi Nginx za pośrednictwem przeglądarki.

Teraz, jeśli będziemy musieli skalować usługę Nginx, wykonamy 3 repliki i wykonać to, uruchom następujące polecenie w węźle menedżera:

$ Docker Service Scale My-Web1 = 3 

Skalowanie usług dla pożądanej liczby replik.

Aby sprawdzić wyjście po skalowaniu Docker Service LS Lub Docker Service Ps Komenda.

Możemy użyć Serwis Docker Inspect polecenie do sprawdzenia rozszerzonych szczegółów wdrożonej usługi w Swarm. Domyślnie to renderuje wszystkie wyniki w tablicy JSON.

Wniosek

Docker stał się niezwykle popularnym sposobem konfigurowania, zapisywania i udostępniania środowisk serwerów za pomocą kontenerów. Z tego powodu zainstalowanie aplikacji lub nawet duży stos może być często tak proste, jak uruchamianie Docker Pull lub Docker Run. Oddzielanie funkcji aplikacji na różne kontenery oferuje również zalety w zakresie zarządzania bezpieczeństwem i zależnością.

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Wprowadzenie do silników magazynowych MySQL
  • Mastering Bash Script Loops
  • Jak zainstalować Kubernetes na Ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Jak często musisz ponownie uruchomić serwer Linux?
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Jak zainstalować Kubernetes na Ubuntu 22.04 JAMMY Jellyfish…
  • Zagnieżdżone pętle w skryptach Bash