Sådan opsættes en klynge med Docker Swarm

I denne artikel vil jeg lede dig gennem processen med at opsætte en klynge ved hjælp af Docker-sværm.

Vi har 3 lokale eller skymaskiner med Ubuntu Server 16.04 og nyere installeret. Ud af disse fungerer en server som en administratorknude, og andre to servere fungerer som arbejderknudepunkter.

Vi har konfigureret statiske IP-adresser til alle noder.

192.168.0.100 for Manager-knude.
192.168.0.101 for Worker node01.
192.168.0.102 for Worker node02.

Hver node skal også køre Docker. Jeg har brugt docker version 18.05.0-ce.

Installer docker

Installationsprocessen er veldokumenteret andetsteds, og du kan læse Dockers dokumentation for detaljer. Den enkleste metode er at køre følgende kommandoer på hver maskine:

$ krøller -sSL https://get.docker.com | sh

Dette installerer den nyeste version af Docker-motoren.

Opret Swarm Manager

Oprettelse af swarm manager-noden kan udføres med en enkelt kommando. Vi bruger host 192.168.0.100 til manageren.

$ sudo docker-sværm init - advertise-addr 192.168.0.100
Swarm initialiseret: nuværende node (viwovkb0bk0kxlk98r78apopo) er nu en manager.
For at føje en arbejdstager til denne sverm skal du køre følgende kommando:
    docker-sværm sammen --token SWMTKN-1-3793hvb71g0a6ubkgq8zgk9w99hlusajtmj5aqr3n2wrhzzf8z-1s38lymnir13hhso1qxt5pqru 192.168.0.100:2377
For at tilføje en manager til denne sværm skal du køre 'docker-sværm join-token manager' og følge instruktionerne.

Husk tokenet fra ovenstående output. Dette bruges til at forbinde arbejderknudepunkter til managerknuden.

Du kan også se listen over noder i din klynge.

$ sudo docker-knude ls
ID HOSTNAME STATUS TILGÆNGELIGHEDSSTYRER STATUS
viwovkb0bk0kxlk98r78apopo * ubuntu-16.04 klar aktiv leder

Tilføj knudepunkter

Manager-knude er nu klar. Dernæst skal du tilføje Arbejderknude til Manager-knuden.

Du kan gøre dette ved at køre docker swarm join-kommando på begge arbejderknudepunkter.

$ sudo docker sværm sammenføjning - tegn SWMTKN-1-3793hvb71g0a6ubkgq8zgk9w99hlusajtmj5aqr3n2wrhzzf8z-1s38lymnir13hhso1qxt5pqru 192.168.0.100:2377
Denne knude sluttede sig til en sverm som arbejdstager.

Kør følgende kommando på administratornoden for at kontrollere nodens status.

$ sudo docker-knude ls
ID HOSTNAME STATUS TILGÆNGELIGHEDSSTYRER STATUS
viwovkb0bk0kxlk98r78apopo * managernode Ready Active Leader
yf6nb2er69pydlp6drijdfmwd arbejdskode1 Klar Aktiv
yyavdslji7ovmw5fd3v7l62g8 workernode2 Ready Active

Distribuer service

Med de aktive noder kan vi nu implementere en service. Lad os oprette en service til nginx-webserver.

$ sudo docker-service oprette -p 80:80 - navn webserver --replica 3 nginx
bky6uhg2agdxeqgc2b1a5tcsm
samlede fremskridt: 3 ud af 3 opgaver
1/3: kører [============================================ ======>]
2/3: kører [============================================ ======>]
3/3: kører [============================================ ======>]
verificere: Service konvergeret

Ovenstående kommando opretter en tjeneste, der hedder webserver, og containere vil blive lanceret fra docker image nginx. Servicecontainerne distribueres på tværs af alle klyngeknuder.

Nu kan du liste og kontrollere status for tjenesten.

$ sudo docker service ls
ID NAVN MODE REPLICAS BILLEDE PORTER
bky6uhg2agdx webservice replikerede 3/3 httpd: seneste *: 80-> 80 / tcp

Bekræft Tjenesten fra Manager-noden, og se, om den nye container er op.

$ sudo docker service ps webservice
ID NAVN BILLEDE NODE ØNSKET STATS AKTUELT STAT ERROR PORTS
xsa5wb0eg2ln webserver.1 httpd: seneste managernode Løb Kører for ca. 10 minutter siden
3sbscs7m9lnh webserver.2 httpd: seneste arbejdskode2 Løb Kører for ca. 10 minutter siden
yao2m5wi54kz webserver.3 httpd: seneste arbejdskode2 Løb Kører for ca. 10 minutter siden

I øjeblikket kører vores webservertjeneste som en enkelt forekomst på Docker-maskiner.

Vi kan opskalere tjenesten til 5 tilfælde, der kører på 3 maskiner.

$ sudo docker-serviceskala webserver = 5

Bekræft Tjenesten fra Manager-noden, og se, om en ny container startes eller ej.

$ sudo docker service ps webserver
ID NAVN BILLEDE NODE ØNSKET STATS AKTUELT STAT ERROR PORTS
xsa5wb0eg2ln webserver.1 httpd: seneste managernode Løb Kører for ca. 10 minutter siden
3sbscs7m9lnh webserver.2 httpd: seneste arbejdskode2 Løb Kører for ca. 10 minutter siden
yao2m5wi54kz webserver.3 httpd: seneste arbejdskode2 Løb Kører for ca. 10 minutter siden
dfg2mswa52sf webserver.4 httpd: seneste arbejdskode1 Kørsel Kører for ca. 15 sekunder siden
kah1j5hs14as webserver.5 httpd: seneste arbejdskode1 Kørsel Kører for ca. 15 sekunder siden

Du kan også bruge yaml-fil til at implementere din tjeneste og gemme med nginx.yml

version: '3.3'
tjenester:
  nginx:
    billede: nginx: seneste
    havne:
      - "80:80"

Du kan anvende denne yaml.

$ sudo docker stack implementere -c nginx.yml nginx

Clustering er let med Swarm

Det er kernen ved at oprette en Docker-sværm og oprette en service på din nye klynge. Hvis du vil lære mere om, hvad Docker-sværmen kan gøre, skal du udstede kommandodokersværmen - hjælp til at se de andre kommandoer, du kan bruge til Docker-sværmen.

Hos 47Billion er vi specialiserede i at hjælpe virksomheder med at bygge fantastiske produkter. Hvis du leder efter et erfarent team til at opbygge din komplette løsning, så kontakt os på [email protected]