Introduksjon
Forutsetninger
Utplassering
Installer Alpine Linux 3.9.0 på serverne
Serverkonfigurasjon etter installasjon
Installer Docker på serverne dine
Initialiser en Docker-sverm med én ledernode og én arbeidernode
Distribuer Portainer med SSL for å administrere Docker-svermen din
Introduksjon
Denne guiden viser deg hvordan du oppretter og konfigurerer en Docker-sverm ved å bruke flere Alpine Linux 3.9.0-servere og Portainer. Vær oppmerksom på at Vultr tilbyr en One-Click Docker-app som for øyeblikket støtter både CentOS 7 x64 og Ubuntu 16.04 x64.
Forutsetninger
For å begynne trenger du minst to VC2-servere som kjører Alpine Linux 3.9.0. Innenfor Docker-svermen din vil en av disse serverne fungere som et manager node
grensesnitt med eksterne nettverk og delegere jobber til arbeidernoder. Den andre serveren vil da fungere som en worker node
- utførende jobber delegert til den av administratornoden.
Merk at du kan starte mer enn to servere hvis applikasjonen din krever redundans og/eller mer datakraft, og trinnene i denne veiledningen vil fortsatt gjelde.
Utplassering
Gå til Vultr- serverdistribusjonsgrensesnittet .
Sørg for at Vultr Cloud (VC2)
fanen er valgt øverst på siden.
Du kan velge hvilken som helst plassering fra Server Location
seksjonen, men alle servere må være på samme plassering , ellers vil det ikke være mulig å distribuere en Docker-sverm til dem.
Velg ISO Library
fanen for Server Type
delen og velg Alpine Linux 3.9.0 x86_64
bildet.
Velg et passende alternativ fra Server Size
delen. Denne veiledningen vil bruke SSD-serverstørrelsen på 25 GB, men denne kan være utilstrekkelig for å oppfylle applikasjonens ressurskrav. Mens Vultr gjør det enkelt å oppgradere en serverstørrelse etter at den allerede er lansert, bør du likevel vurdere nøye hvilken serverstørrelse applikasjonen din trenger for å yte optimalt.
I Additional Features
seksjonen må du velge Enable Private Networking
alternativet. Selv om de andre alternativene ikke er påkrevd for å følge denne veiledningen, bør du vurdere om hver enkelt er fornuftig i forbindelse med søknaden din.
Hvis du tidligere har aktivert Multiple Private Networks
alternativet på kontoen din, må du enten velge et eksisterende eller opprette et nytt privat nettverk for serverne dine. Hvis du ikke har aktivert det, kan du ignorere denne delen. For informasjon om manuell konfigurering av private nettverk, se denne veiledningen .
Hopp over Firewall Group
delen for nå. Bare serveren som fungerer som en administratornode i Docker-svermen vil trenge eksponerte porter, og dette bør konfigureres etter serverdistribusjon.
Helt nederst på siden må du skrive inn en Server Qty
på minst to. Som nevnt tidligere kan det hende du trenger mer enn to servere, men to er tilstrekkelig for å følge denne veiledningen.
Til slutt, i Server Hostname & Label
delen, skriv inn meningsfylte og minneverdige vertsnavn og etiketter for hver server. Ved anvendelsen av denne retningslinje vil vertsnavn og etikett av den første serveren være docker-manager
og Docker Manager
, henhv og docker-worker
og Docker Worker
for det andre, henholdsvis.
Etter å ha dobbeltsjekket alle konfigurasjonene dine, kan du klikke på Deploy Now
knappen nederst på siden for å starte serverne dine.
Installer Alpine Linux 3.9.0 på serverne
Fordi du valgte et OS fra Vultrs ISO-bibliotek, må du manuelt installere og konfigurere Alpine Linux 3.9.0 på hver server.
Etter å ha gitt Vultr et minutt eller to på å tildele serverne dine, klikk på trippelpunktikonet more options
for Docker Manager
serveren på serveradministrasjonsgrensesnittet , og velg deretter View Console
alternativet.
Du bør bli omdirigert til en konsoll med en påloggingsforespørsel. Hvis ikke, vent et minutt til før Vultr er ferdig med å distribuere serverne dine.
Ved den påloggingsforespørselen, skriv inn root
som brukernavn. Liveversjonen av Alpine Linux 3.9.0 (som er det serverne dine kjører for øyeblikket) krever ikke at superbrukeren oppgir passord når han logger på.
Når du har logget på root-kontoen, vil du se en velkomstmelding etterfulgt av en shell-melding som ser slik ut:
localhost:~#
For å starte Alpine Linux-installasjonsprogrammet, skriv inn følgende kommando:
# setup-alpine
Først velger du et passende tastaturoppsett. Denne veiledningen vil bruke us
oppsettet og varianten.
Når du angir vertsnavnet, velg det samme vertsnavnet som du angir for denne serveren under distribusjonen. Hvis du har fulgt denne veiledningen nøyaktig, bør vertsnavnet være docker-manager
.
To nettverksgrensesnitt bør være tilgjengelige: eth0
og eth1
. Hvis du bare ser eth0
, betyr det at du ikke konfigurerte servernes private nettverk riktig. Initialiser eth0
med dhcp
, og initialiser eth1
med den private IP-adressen, nettmasken og gatewayen som denne serveren ble tildelt under distribusjonen. Du kan få tilgang til disse detaljene fra innstillingsgrensesnittet til serveren din. Når du blir bedt om det, ikke utfør noen manuell nettverkskonfigurasjon.
Skriv inn et nytt passord for root-kontoen, og velg deretter en tidssone som passer for stedet du valgte å distribuere disse serverne til.
Hvis du har tenkt å bruke en HTTP/FTP-proxy, skriv inn URL-adressen, ellers må du ikke angi en proxy-URL.
Velg en NTP-klient for å administrere systemklokkesynkronisering. Denne veiledningen vil bruke busybox
.
Når du blir bedt om å bruke et pakkelagerspeil, kan du enten velge et eksplisitt ved å skrive inn nummeret; automatisk oppdage og velge den raskeste ved å skrive inn f
; eller rediger repository-konfigurasjonsfilen manuelt ved å skrive inn e
, som ikke anbefales med mindre du er kjent med Alpine Linux. Denne guiden vil bruke det første speilet.
Hvis du planlegger å bruke SSH for å få tilgang til serverne dine eller for å være vert for et SSH-basert filsystem, velg en SSH-server du vil bruke. Denne veiledningen vil bruke openssh
.
Når du blir bedt om å bruke en disk, velger du disk vda
som sys
type.
Alpine Linux 3.9.0 skal nå være installert på serveren din. Gjenta denne prosessen for alle andre servere du distribuerte tidligere, og sørg for at du erstatter de riktige verdiene for vertsnavn og eth1
nettverksgrensesnitt.
Serverkonfigurasjon etter installasjon
På dette tidspunktet kjører serverne dine fortsatt den levende ISO-versjonen av Alpine Linux 3.9.0. For å starte opp fra SSD-installasjonen, besøk innstillingsgrensesnittet til serveren din, naviger til Custom ISO
sidemenyoppføringen og klikk på Remove ISO
knappen. Dette bør starte serveren på nytt. Hvis den ikke gjør det, start på nytt manuelt.
Når serveren er ferdig med å starte på nytt, naviger tilbake til nettkonsollen for serveren Docker Manager
.
Logg inn på root-kontoen med passordet du anga tidligere under installasjonsprosessen.
Aktiver fellesskapspakkelageret ved å oppheve kommentering av den tredje linjen /etc/apk/repositories
med vi
. Du kan aktivere kant- og testlagrene på lignende måte, men de er ikke pålagt å følge denne veiledningen.
Synkroniser serverens lokale pakkeindeks med det eksterne depotet du valgte tidligere ved å skrive inn følgende skallkommando:
# apk update
Oppgrader deretter utdaterte pakker:
# apk upgrade
Som før, gjenta denne konfigurasjonsprosessen for hver server du distribuerte tidligere.
Installer Docker på serverne dine
Før du installerer selve Docker-pakken, kan det være lurt å opprette en egen docker
bruker. Du kan gjøre dette ved å bruke følgende kommando:
# adduser docker
Merk: Denne nye brukeren og alle brukere som legges til i den nye docker
gruppen vil ha root-privilegier når Docker-pakken er installert. Se følgende utgave 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 ønsker å gi sudo-tillatelse til docker
brukeren, installer først sudo
pakken:
# apk add sudo
Deretter oppretter du en sudo
gruppe:
# addgroup sudo
Til slutt legger du docker
brukeren til sudo
gruppen:
# adduser docker sudo
Nå kan du følge trinn 4 i denne veiledningen for å fullføre konfigureringen av sudo.
På dette tidspunktet er du klar til å installere Docker-pakken. Merk at det strengt tatt ikke er nødvendig å ha en egen, sudo-kompetent docker
bruker for å installere og konfigurere Docker, men denne veiledningen følger denne konvensjonen.
Installer Docker-pakken med følgende kommando:
# apk add docker
Aktiver deretter Docker init-skriptet:
# rc-update add docker
Til slutt, start Docker-demonen:
# rc-service docker start
Du kan bekrefte at Docker kjører med denne kommandoen:
# docker info
Som forrige gang, gjenta denne Docker-installasjonsprosessen for hver server du distribuerte ved starten.
Initialiser en Docker-sverm med én ledernode og én arbeidernode
Med alt dette oppsettet behandlet, er du endelig klar til å lage Docker-svermen.
Lag en sverm og legg til en ledernode
Naviger tilbake til nettkonsollen til Docker Manager
serveren din . Du vil konfigurere denne serveren som en managernode i svermen din. Hvis du valgte å opprette docker
brukeren tidligere, logger du på med den kontoen i stedet for superbrukeren.
Skriv inn følgende kommando, men erstatt 192.0.2.1
med den private (ikke den offentlige), IP-adressen Docker Manager
serveren din ble tildelt:
$ docker swarm init --advertise-addr 192.0.2.1
Docker vil vise en kommando du kan utføre på andre servere i det private nettverket for å legge dem til som arbeidernoder til denne nye svermen. Lagre denne kommandoen.
Legg til en arbeidernode
Naviger nå til nettkonsollen til Docker Worker
serveren din , logg på med docker
brukeren hvis du opprettet den.
For å legge til denne serveren som en arbeidernode til svermen du nettopp opprettet, utfør kommandoen du lagret fra utdataene fra kommandoen for opprettelse av svermen. Det vil ligne følgende:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker vil gi ut om noden var i stand til å bli med i svermen. Hvis du støter på problemer med å legge til arbeidernoder til svermen, dobbeltsjekk din private nettverkskonfigurasjon og se denne veiledningen for feilsøking.
Hvis du distribuerte mer enn to servere i begynnelsen, kan du legge til resten som arbeidernoder til svermen din ved å bruke kommandoen ovenfor, og øke mengden ressurser som er tilgjengelig for applikasjonen din. Alternativt kan du legge til flere ledernoder, men det er utenfor denne veiledningen.
Distribuer Portainer med SSL for å administrere Docker-svermen din
På dette tidspunktet er Docker-svermen klar til bruk. Du kan imidlertid eventuelt starte en Portainer-stabel på managernoden i svermen din. Portainer tilbyr et praktisk webgrensesnitt for å administrere svermen din og nodene der.
Det er nå på tide å lage en brannmurgruppe for svermen din. Med mindre applikasjonen din spesifikt krever det, utsett bare porter på managernodene dine . Å avsløre porter på arbeidernodene uten nøye vurdering kan introdusere sårbarheter.
Naviger til grensesnittet for brannmuradministrasjon og opprett en ny brannmurgruppe. Søknaden din bør diktere hvilke porter som skal eksponeres, men du må i det minste eksponere port 9000
for Portainer. Bruk denne brannmurgruppen på Docker Manager
serveren.
Selv om det ikke er nødvendig, anbefales det på det sterkeste å sikre Portainer med SSL. Av hensyn til denne veiledningen vil du kun bruke et selvsignert OpenSSL-sertifikat, men du bør vurdere å bruke Let's Encrypt i produksjon.
Naviger til nettkonsollen til Docker Manager
serveren, logg på med docker
brukeren og bruk følgende kommandoer for å generere et selvsignert OpenSSL-sertifikat:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Opprett en ny fil, ~/portainer-agent-stack.yml
, med følgende innhold:
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:
Etter å ha modifisert denne Docker stack-konfigurasjonsfilen for å samsvare med kravene dine, kan du distribuere den:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
For å bekrefte at Portainer fungerer, kjør følgende kommando etter å ha gitt Docker et minutt eller to på å distribuere stabelen:
$ docker ps
Du vil se to beholdere med bildene portainer/portainer:latest
og portainer/agent:latest
, som bekrefter at Portainer startet riktig.
Du kan nå konfigurere og administrere Docker-svermen din ved å besøke den offentlige IP-adressen til Docker Manager
serveren din på porten 9000
ved hjelp av HTTPS.