Docker Swarm w Home Lab


W dzisiejszym wpisie pokażę, jak skonfigurować Docker Swarm między dwoma serwerami w domowym labie. Skonfigurujemy klastry, połączymy je w jeden system i przygotujemy środowisko pod przyszłe projekty.

Czym jest Docker Swarm?

Docker Swarm to natywna funkcja Dockera do tworzenia klastrów i zarządzania wieloma serwerami (nazywanymi „węzłami”) jako jednym zintegrowanym systemem. Dzięki Swarmowi możemy:

  • rozdzielać obciążenie między maszynami,
  • automatycznie przywracać usługi po awarii,
  • zarządzać kontenerami jako usługami (services) z replikacją,
  • wdrażać aktualizacje z zerowym czasem przestoju (rolling updates).

To lekka i prosta alternatywa dla Kubernetes – szczególnie w środowiskach domowych.

Moje środowisko labowe składa się w tej chwili z dwóch wirtualnych serwerów Ubuntu. Na pierwszym serwerze mam już zainstalowane i działające środowisko Dockera.

Instalacja Dockera

Przystępujemy do instalacji Dockera na pierwszym i drugim serwerze:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Po zakończeniu instalacji, dodajemy swojego użytkownika do grupy docker:

sudo usermod -aG docker $USER
newgrp docker

Oczywiście zamiast $USER wprowadzamy nazwę własnego użytkownika (innego niż root)

Inicjalizacja Swarma na pierwszym serwerze

Rozpoczynamy inicjację klastra Swarm:

docker swarm init --advertise-addr XXX.XXX.XXX.XXX

W miejsce X oczywiście wpisujemy adres własnego serwera. Po jego wykonaniu naszym oczom powinna ukazać się odpowiedź, że Swarm został zainicjonowany i obecny nod jest od teraz managerem klastra.

Swarm initialized: current node (xxxxxxxxxxxxxxxxxxxxxx) is now a manager.

Po wykonaniu tej komendy otrzymamy takżę instrukcję z tokenem:

docker swarm join --token SWMTKN-1-abc123… XXX.XXX.XXX.XXX:2377

Oczywiście należy go przekopiować w takiej postaci jakiej został wyświetlony, wraz z pełnym kluczem. Będzie nam potrzebny za chwilę.

Inicjalizacja Swarma na drugim serwerze

Przechodzimy do drugiego serwera i przekopiowujemy polecenie, które Docker wyświetlił nam na pierwszym serwerze. Po jego wykonaniu powinniśmy zobaczyć następujący wpis:

This node joined a swarm as a worker.

Wróćmy jeszcze na pierwszy serwer aby sprawdzić czy wszystko przebiegło pomyślnie. Wykonajmy polecenie aby sprawdzić status klastra:

docker node ls

Naszym oczom powinna ukazać się lista serwerów w klastrze Docker Swarm, która przed chwilą utworzyliśmy

ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
XXXXXXXXXXXXXXXXXXXXXXXXX *   serv1     Ready     Active         Leader           26.1.3
YYYYYYYYYYYYYYYYYYYYYYYYY     serv2     Ready     Active                          28.2.2

W moim przypadku serv1 jest liderem w klastrze jednak z uwagi, że serwer ten był uruchamiany już jakiś czas temu w dodatku z repozytoriów systemowych, widzimy dodatkowo różnicę w wersji Dockera. Aby sprawdzić jaka wersja pakietu dostępna jest w repozytorium musimy wykonać polecenie:

apt list --upgradable | grep docker

Niestety w moim przypadku najnowsza dostępna wersja to 27.5.1, a więc inna niż ta którą posiadam na drugim serwerze.

Na ten moment zostawiamy tak jak jest a już w kolejnym wpisie przejdziemy przez proces migracji pakietu Dockera z repozytoriów systemowych na oficjalne źródło z Docker Inc.

,

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *