Introduktion
Forudsætninger
Implementering
Installer Alpine Linux 3.9.0 på serverne
Serverkonfiguration efter installation
Installer Docker på dine servere
Initialiser en Docker-sværm med én lederknude og én arbejderknude
Implementer Portainer med SSL for at administrere din Docker-sværm
Introduktion
Denne guide viser dig, hvordan du opretter og konfigurerer en Docker-sværm ved hjælp af flere Alpine Linux 3.9.0-servere og Portainer. Vær opmærksom på, at Vultr tilbyder en One-Click Docker-app, der i øjeblikket understøtter både CentOS 7 x64 og Ubuntu 16.04 x64.
Forudsætninger
For at begynde skal du bruge mindst to VC2-servere, der kører Alpine Linux 3.9.0. Inden for din Docker-sværm vil en af disse servere fungere som en manager node
grænseflade med eksterne netværk og uddelegere job til arbejderknudepunkter. Den anden server vil derefter fungere som et worker node
- udførende job, der er uddelegeret til den af managerknudepunktet.
Bemærk, at du kan starte mere end to servere, hvis din applikation kræver redundans og/eller mere computerkraft, og trinene i denne vejledning vil stadig gælde.
Implementering
Besøg Vultr serverimplementeringsgrænsefladen .
Sørg for, at Vultr Cloud (VC2)
fanen er valgt øverst på siden.
Du kan vælge en hvilken som helst placering fra Server Location
sektionen, dog skal alle servere være på samme placering , ellers vil det ikke være muligt at implementere en Docker-sværm til dem.
Vælg ISO Library
fanen for Server Type
sektionen, og vælg Alpine Linux 3.9.0 x86_64
billedet.
Vælg en passende mulighed fra Server Size
sektionen. Denne vejledning vil bruge 25 GB SSD-serverstørrelsen, men denne kan være utilstrækkelig til at opfylde din applikations ressourcekrav. Selvom Vultr gør det nemt at opgradere en servers størrelse, efter at den allerede er blevet lanceret, bør du stadig nøje overveje, hvilken serverstørrelse din applikation skal bruge for at fungere optimalt.
I Additional Features
afsnittet skal du vælge Enable Private Networking
muligheden. Selvom de andre muligheder ikke er nødvendige for at følge denne vejledning, bør du overveje, om hver enkelt giver mening i forbindelse med din ansøgning.
Hvis du tidligere har aktiveret Multiple Private Networks
muligheden på din konto, skal du enten vælge et eksisterende eller oprette et nyt privat netværk til dine servere. Hvis du ikke har aktiveret det, kan du ignorere dette afsnit. Se denne vejledning for at få oplysninger om manuel konfiguration af private netværk .
Spring Firewall Group
afsnittet over for nu. Kun serveren, der fungerer som en managerknude i Docker-sværmen, har brug for udsatte porte, og dette bør konfigureres efter serverinstallation.
Helt nederst på siden skal du indtaste en Server Qty
på mindst to. Som tidligere nævnt har du muligvis brug for mere end to servere, men to er nok til at følge denne guide.
Til sidst skal du i Server Hostname & Label
afsnittet indtaste meningsfulde og mindeværdige værtsnavne og etiketter for hver server. I forbindelse med denne vejledning vil værtsnavnet og etiketten for den første server være henholdsvis docker-manager
og Docker Manager
, og docker-worker
og Docker Worker
for den anden.
Efter at have dobbelttjekket alle dine konfigurationer, kan du klikke på Deploy Now
knappen nederst på siden for at starte dine servere.
Installer Alpine Linux 3.9.0 på serverne
Fordi du har valgt et OS fra Vultrs ISO-bibliotek, skal du manuelt installere og konfigurere Alpine Linux 3.9.0 på hver server.
Efter at have givet Vultr et minut eller to til at tildele dine servere, skal du klikke på det tredobbelte prikikon more options
for Docker Manager
serveren på serveradministrationsgrænsefladen og derefter vælge View Console
muligheden.
Du bør omdirigeres til en konsol med en login-prompt. Hvis ikke, vent venligst endnu et minut til Vultr er færdig med at implementere dine servere.
Ved den login-prompt skal du indtaste root
som brugernavn. Liveversionen af Alpine Linux 3.9.0 (som er det, dine servere kører i øjeblikket) kræver ikke, at superbrugeren indtaster en adgangskode, når han logger på.
Når du har logget ind på root-kontoen, vil du se en velkomstmeddelelse efterfulgt af en shell-prompt, der ser ud som følgende:
localhost:~#
Indtast følgende kommando for at starte Alpine Linux-installationsprogrammet:
# setup-alpine
Først skal du vælge et passende tastaturlayout. Denne vejledning vil bruge us
layoutet og varianten.
Når du indstiller værtsnavnet, skal du vælge det samme værtsnavn, som du angiver for denne server under installationen. Hvis du har fulgt denne vejledning nøjagtigt, skal værtsnavnet være docker-manager
.
To netværksgrænseflader bør være tilgængelige: eth0
og eth1
. Hvis du kun ser eth0
, betyder det, at du ikke har konfigureret dine serveres private netværk korrekt. Initialiser eth0
ved hjælp af dhcp
, og initialiser eth1
ved hjælp af den private IP-adresse, netmaske og gateway, som denne server blev tildelt under installationen. Du kan få adgang til disse detaljer fra indstillingsgrænsefladen på din server. Når du bliver bedt om det, skal du ikke udføre nogen manuel netværkskonfiguration.
Indtast en ny adgangskode til root-kontoen, og vælg derefter en tidszone, der passer til den placering, du valgte at implementere disse servere til.
Hvis du har til hensigt at bruge en HTTP/FTP-proxy, skal du indtaste dens URL, ellers skal du ikke angive en proxy-URL.
Vælg en NTP-klient til at administrere systemursynkronisering. Denne vejledning vil bruge busybox
.
Når du bliver bedt om at bruge et pakkelagerspejl, skal du enten vælge et eksplicit ved at indtaste dets nummer; automatisk opdage og vælge den hurtigste ved at indtaste f
; eller rediger repository-konfigurationsfilen manuelt ved at indtaste e
, hvilket ikke anbefales, medmindre du er fortrolig med Alpine Linux. Denne guide vil bruge det første spejl.
Hvis du planlægger at bruge SSH til at få adgang til dine servere eller være vært for et SSH-baseret filsystem, skal du vælge en SSH-server, du vil bruge. Denne vejledning vil bruge openssh
.
Når du bliver bedt om at bruge en disk, skal du vælge disk vda
som sys
type.
Alpine Linux 3.9.0 skulle nu være installeret på din server. Gentag denne proces for alle andre servere, du har installeret tidligere, og sørg for, at du erstatter værtsnavnet og eth1
netværksgrænsefladen med de korrekte værdier .
Serverkonfiguration efter installation
På dette tidspunkt kører dine servere stadig den levende ISO-version af Alpine Linux 3.9.0. For at starte fra SSD-installationen skal du besøge indstillingsgrænsefladen på din server, navigere til Custom ISO
sidemenuen og klikke på Remove ISO
knappen. Dette burde genstarte serveren. Hvis det ikke gør det, skal du genstarte manuelt.
Når serveren er færdig med at genstarte, skal du navigere tilbage til webkonsollen for serveren Docker Manager
.
Log ind på root-kontoen ved hjælp af den adgangskode, du har angivet tidligere under installationsprocessen.
Aktiver fællesskabspakkelageret ved at fjerne kommentering af den tredje linje med /etc/apk/repositories
brug vi
. Du kan aktivere kant- og testlagrene på lignende måde, men de er ikke forpligtet til at følge denne vejledning.
Synkroniser serverens lokale pakkeindeks med det fjernlager, du valgte tidligere, ved at indtaste følgende shell-kommando:
# apk update
Opgrader derefter forældede pakker:
# apk upgrade
Som før skal du gentage denne konfigurationsproces for hver server, du har installeret tidligere.
Installer Docker på dine servere
Før du installerer selve Docker-pakken, vil du måske oprette en separat docker
bruger. Du kan gøre dette ved at bruge følgende kommando:
# adduser docker
Bemærk: Denne nye bruger og alle brugere, der tilføjes til den nye docker
gruppe, vil have root-privilegier, når Docker-pakken er blevet installeret. Se følgende problem fra Moby Github-depotet:
Due to the --privileged
in docker, anyone added to the 'docker' group is root equivalent. Anyone in the docker group has a back door around all privilege escalation policy and auditing on the system.
This is different from someone being able to run running sudo to root, where they have policy, and audit applied to them.
Hvis du gerne vil give sudo-tilladelse til docker
brugeren, skal du først installere sudo
pakken:
# apk add sudo
Opret derefter en sudo
gruppe:
# addgroup sudo
Tilføj endelig docker
brugeren til sudo
gruppen:
# adduser docker sudo
Nu kan du følge trin 4 i denne vejledning for at afslutte konfigurationen af sudo.
På dette tidspunkt er du klar til at installere Docker-pakken. Bemærk, at det ikke er strengt nødvendigt at have en separat, sudo-egnet docker
bruger til at installere og konfigurere Docker, men denne vejledning følger denne konvention.
Installer Docker-pakken med følgende kommando:
# apk add docker
Aktiver derefter Docker init-scriptet:
# rc-update add docker
Start endelig Docker-dæmonen:
# rc-service docker start
Du kan bekræfte, at Docker kører med denne kommando:
# docker info
Som med sidste gang, gentag denne Docker-installationsproces for hver server, du installerede i starten.
Initialiser en Docker-sværm med én lederknude og én arbejderknude
Med alt det setup behandlet, er du endelig klar til at skabe Docker-sværmen.
Opret en sværm og tilføj en managerknude
Naviger tilbage til webkonsollen på din Docker Manager
server. Du vil konfigurere denne server som en managerknude i din sværm. Hvis du valgte at oprette docker
brugeren tidligere, skal du logge ind med denne konto i stedet for superbrugeren.
Indtast følgende kommando, men erstat 192.0.2.1
med den private (ikke den offentlige), IP-adresse, som din Docker Manager
server blev tildelt:
$ docker swarm init --advertise-addr 192.0.2.1
Docker viser en kommando, du kan udføre på andre servere i det private netværk for at tilføje dem som arbejderknudepunkter til denne nye sværm. Gem denne kommando.
Tilføj en arbejderknude
Naviger nu til webkonsollen på din Docker Worker
server, log på med docker
brugeren, hvis du har oprettet den.
For at tilføje denne server som en arbejderknude til den sværm, du lige har oprettet, skal du udføre den kommando, du gemte fra outputtet af kommandoen til oprettelse af sværm. Det vil ligne følgende:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker vil udsende, om noden var i stand til at deltage i sværmen. Hvis du støder på problemer med at tilføje arbejdernoder til sværmen, skal du dobbelttjekke din private netværkskonfiguration og se denne vejledning for fejlfinding.
Hvis du installerede mere end to servere i begyndelsen, kan du tilføje resten som arbejdernoder til din sværm ved at bruge kommandoen ovenfor, hvilket øger mængden af ressourcer, der er tilgængelige for din applikation. Alternativt kan du tilføje yderligere managerknudepunkter, men det er uden for rammerne af denne vejledning.
Implementer Portainer med SSL for at administrere din Docker-sværm
På dette tidspunkt er din Docker-sværm klar til brug. Du kan dog eventuelt starte en Portainer-stak på managerknudepunktet i din sværm. Portainer tilbyder en praktisk webgrænseflade til styring af din sværm og noderne deri.
Det er nu tid til at oprette en firewall-gruppe til din sværm. Medmindre din applikation specifikt kræver det, skal du kun udsætte porte på dine managerknudepunkter . Eksponering af porte på dine arbejdernoder uden nøje overvejelse kan introducere sårbarheder.
Naviger til firewall-administrationsgrænsefladen, og opret en ny firewallgruppe. Din ansøgning bør diktere, hvilke porte der skal eksponeres, men du skal i det mindste blotlægge port 9000
for Portainer. Anvend denne firewall-gruppe på Docker Manager
serveren.
Selvom det ikke er påkrævet, anbefales det kraftigt at sikre Portainer med SSL. Af hensyn til denne guide vil du kun bruge et selvsigneret OpenSSL-certifikat, men du bør overveje at bruge Let's Encrypt i produktionen.
Naviger til Docker Manager
serverens webkonsol , log ind med docker
brugeren, og brug følgende kommandoer til at generere et selvsigneret OpenSSL-certifikat:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Opret en ny fil, ~/portainer-agent-stack.yml
, med følgende indhold:
version: '3.2'
services:
agent:
image: portainer/agent
environment:
AGENT_CLUSTER_ADDR: tasks.agent
CAP_HOST_MANAGEMENT: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
- /:/host
networks:
- agent_network
deploy:
mode: global
portainer:
image: portainer/portainer
command: -H tcp://tasks.agent:9001 --tlsskipverify --ssl --sslcert /certs/portainer.pem --sslkey /certs/portainer.key
ports:
- target: 9000
published: 9000
protocol: tcp
mode: host
volumes:
- portainer_data:/data
- /home/docker/certs:/certs
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:
Efter at have ændret denne Docker stack-konfigurationsfil, så den er i overensstemmelse med dine krav, kan du implementere den:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
For at bekræfte, at Portainer virker, skal du udføre følgende kommando efter at have givet Docker et minut eller to til at implementere stakken:
$ docker ps
Du vil se to beholdere med billederne portainer/portainer:latest
og portainer/agent:latest
, der bekræfter, at Portainer startede korrekt.
Du kan nu konfigurere og administrere din Docker-sværm ved at besøge den offentlige IP-adresse på din Docker Manager
server på porten 9000
ved hjælp af HTTPS.