Uvod
Predpogoji
Uvajanje
Na strežnike namestite Alpine Linux 3.9.0
Konfiguracija strežnika po namestitvi
Namestite Docker na svoje strežnike
Inicializirajte Dockerjev roj z enim upravljalskim vozliščem in enim delovnim vozliščem
Namestite Portainer s SSL za upravljanje vašega Docker roja
Uvod
Ta priročnik vam bo pokazal, kako ustvariti in konfigurirati Dockerjev roj z uporabo več strežnikov Alpine Linux 3.9.0 in Portainerja. Upoštevajte, da Vultr ponuja aplikacijo Docker z enim klikom, ki trenutno podpira CentOS 7 x64 in Ubuntu 16.04 x64.
Predpogoji
Za začetek boste potrebovali vsaj dva strežnika VC2 z nameščenim Alpine Linux 3.9.0. V vašem Dockerjevem roju bo eden od teh strežnikov deloval kot manager node
- povezovanje z zunanjimi omrežji in delegiranje opravil na delovna vozlišča. Drugi strežnik bo nato deloval kot worker node
izvajalec opravil, ki mu jih je delegiralo upravljalno vozlišče.
Upoštevajte, da lahko zaženete več kot dva strežnika, če vaša aplikacija zahteva redundanco in/ali večjo računalniško moč, koraki v tem priročniku pa bodo še vedno veljali.
Uvajanje
Obiščite vmesnik za namestitev strežnika Vultr .
Prepričajte se, da je Vultr Cloud (VC2)
zavihek izbran na vrhu strani.
Iz Server Location
razdelka lahko izberete katero koli lokacijo , vendar morajo biti vsi strežniki na isti lokaciji , sicer nanje ne bo mogoče namestiti Dockerjevega roja.
Izberite ISO Library
zavihek Server Type
razdelka in izberite Alpine Linux 3.9.0 x86_64
sliko.
V Server Size
razdelku izberite ustrezno možnost . Ta priročnik bo uporabljal velikost strežnika SSD 25 GB, vendar to morda ne bo zadostovalo za izpolnjevanje zahtev po virih vaše aplikacije. Medtem ko Vultr olajša nadgradnjo velikosti strežnika, potem ko je bil že zagnan, morate še vedno skrbno pretehtati, katero velikost strežnika potrebuje vaša aplikacija za optimalno delovanje.
V Additional Features
razdelku morate izbrati Enable Private Networking
možnost. Čeprav druge možnosti niso potrebne za upoštevanje tega priročnika, morate razmisliti, ali je vsaka smiselna v kontekstu vaše aplikacije.
Če ste to možnost že omogočili v Multiple Private Networks
svojem računu, boste morali izbrati obstoječe ali ustvariti novo zasebno omrežje za svoje strežnike. Če ga niste omogočili, lahko ta razdelek prezrete. Za informacije o ročni konfiguraciji zasebnih omrežij glejte ta priročnik .
Zaenkrat preskočite Firewall Group
razdelek. Samo strežnik, ki deluje kot upravljalsko vozlišče v Dockerjevem roju, bo potreboval izpostavljena vrata, ki jih je treba konfigurirati po namestitvi strežnika.
Na samem dnu strani morate vnesti Server Qty
najmanj dve. Kot smo že omenili, boste morda potrebovali več kot dva strežnika, vendar sta dva dovolj, da sledite tem navodilom.
Na koncu v Server Hostname & Label
razdelku vnesite smiselna in nepozabna imena gostiteljev in oznake za vsak strežnik. Za namene tega priročnika bosta ime gostitelja in oznaka prvega strežnika docker-manager
in Docker Manager
, oziroma docker-worker
in Docker Worker
za drugega.
Ko dvakrat preverite vse svoje konfiguracije, lahko kliknete Deploy Now
gumb na dnu strani, da zaženete svoje strežnike.
Na strežnike namestite Alpine Linux 3.9.0
Ker ste izbrali operacijski sistem iz Vultrove knjižnice ISO, boste morali na vsakem strežniku ročno namestiti in konfigurirati Alpine Linux 3.9.0.
Ko daste Vultru minuto ali dve, da dodeli strežnike, kliknite more options
ikono trojne pike za Docker Manager
strežnik na vmesniku za upravljanje strežnika in nato izberite View Console
možnost.
Morali bi biti preusmerjeni na konzolo s pozivom za prijavo. Če ne, počakajte še eno minuto, da Vultr dokonča namestitev vaših strežnikov.
Ob tem pozivu za prijavo vnesite root
uporabniško ime. Različica Alpine Linux 3.9.0 v živo (to je tisto, kar trenutno izvajajo vaši strežniki) ne zahteva, da naduporabnik ob prijavi vnese geslo.
Ko se uspešno prijavite v korenski račun, boste videli pozdravno sporočilo, ki mu sledi ukaz lupine, ki je videti takole:
localhost:~#
Če želite zagnati namestitveni program Alpine Linux, vnesite naslednji ukaz:
# setup-alpine
Najprej izberite ustrezno postavitev tipkovnice. Ta vodnik bo uporabljal us
postavitev in različico.
Ko nastavljate ime gostitelja, izberite isto ime gostitelja, ki ste ga nastavili za ta strežnik med uvajanjem. Če ste natančno sledili tem navodilom, bi moralo biti ime gostitelja docker-manager
.
Na voljo morata biti dva omrežna vmesnika: eth0
in eth1
. Če vidite samo eth0
, to pomeni, da zasebnega omrežja svojih strežnikov niste pravilno konfigurirali. Inicializirajte eth0
z uporabo dhcp
in inicializirajte eth1
z zasebnim naslovom IP, omrežno masko in prehodom, ki je bil temu strežniku dodeljen med uvajanjem. Do teh podrobnosti lahko dostopate iz vmesnika za nastavitve vašega strežnika. Ko ste pozvani, ne izvajajte ročne konfiguracije omrežja.
Vnesite novo geslo za korenski račun in nato izberite časovni pas, primeren za lokacijo, na katero ste izbrali namestitev teh strežnikov.
Če nameravate uporabiti proxy HTTP/FTP, vnesite njegov URL, sicer ne nastavite URL-ja proxyja.
Izberite odjemalca NTP za upravljanje sinhronizacije sistemske ure. Ta priročnik bo uporabljal busybox
.
Ko ste pozvani, da uporabite zrcalo skladišča paketa, ga izberite izrecno tako, da vnesete njegovo številko; samodejno zazna in izbere najhitrejšega z vnosom f
; ali ročno uredite konfiguracijsko datoteko skladišča z vnosom e
, kar ni priporočljivo, razen če ste seznanjeni z Alpine Linux. Ta vodnik bo uporabil prvo ogledalo.
Če nameravate uporabljati SSH za dostop do svojih strežnikov ali gostovanje datotečnega sistema, ki temelji na SSH, izberite strežnik SSH, ki ga želite uporabiti. Ta priročnik bo uporabljal openssh
.
Ko ste pozvani, da uporabite disk, izberite disk vda
kot sys
vrsto.
Alpine Linux 3.9.0 bi moral biti zdaj nameščen na vašem strežniku. Ta postopek ponovite za vse druge strežnike, ki ste jih namestili prej, in zagotovite, da boste nadomestili pravilne vrednosti za ime gostitelja in eth1
omrežni vmesnik.
Konfiguracija strežnika po namestitvi
Na tej točki vaši strežniki še vedno izvajajo živo različico ISO Alpine Linux 3.9.0. Če želite zagnati z namestitve SSD, obiščite nastavitveni vmesnik svojega strežnika, se pomaknite do Custom ISO
vnosa v stranskem meniju in kliknite Remove ISO
gumb. To bi moralo znova zagnati strežnik. Če ne, potem ročno znova zaženite.
Ko je strežnik končan s ponovnim zagonom, se pomaknite nazaj na spletno konzolo za strežnik Docker Manager
.
Prijavite se v korenski račun z geslom, ki ste ga nastavili prej med postopkom namestitve.
Omogočite repozitorij skupnih paketov tako, da odstranite komentarje iz tretje vrstice /etc/apk/repositories
uporabe vi
. Na podoben način lahko omogočite repozitorije roba in testiranja, vendar jim ni treba upoštevati tega priročnika.
Sinhronizirajte strežnikov lokalni indeks paketa z oddaljenim skladiščem, ki ste ga izbrali prej, tako da vnesete naslednji ukaz lupine:
# apk update
Nato nadgradite zastarele pakete:
# apk upgrade
Kot prej, ponovite ta postopek konfiguracije za vsak strežnik, ki ste ga namestili prej.
Namestite Docker na svoje strežnike
Preden namestite sam paket Docker, boste morda želeli ustvariti ločenega docker
uporabnika. To lahko storite z naslednjim ukazom:
# adduser docker
Opomba: Ta novi uporabnik in vsi uporabniki, dodani v novo docker
skupino, bodo imeli korenske pravice, ko bo paket Docker nameščen. Oglejte si naslednjo težavo iz skladišča Moby Github:
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.
Če želite uporabniku dati dovoljenje za sudo docker
, najprej namestite sudo
paket:
# apk add sudo
Nato ustvarite sudo
skupino:
# addgroup sudo
Na koncu dodajte docker
uporabnika v sudo
skupino:
# adduser docker sudo
Zdaj lahko sledite 4. koraku tega priročnika, da dokončate konfiguracijo sudo.
Na tej točki ste pripravljeni na namestitev paketa Docker. Upoštevajte, da docker
za namestitev in konfiguracijo Dockerja ni nujno, da imate ločenega uporabnika, ki ima sposobnost sudo , vendar ta priročnik sledi tej konvenciji.
Namestite paket Docker z naslednjim ukazom:
# apk add docker
Nato omogočite skript Docker init:
# rc-update add docker
Končno zaženite demon Docker:
# rc-service docker start
S tem ukazom lahko preverite, ali se Docker izvaja:
# docker info
Kot zadnjič ponovite ta postopek namestitve Dockerja za vsak strežnik, ki ste ga namestili na začetku.
Inicializirajte Dockerjev roj z enim upravljalskim vozliščem in enim delovnim vozliščem
Ko so vse te nastavitve obravnavane, ste končno pripravljeni ustvariti Docker roj.
Ustvarite roj in dodajte vozlišče upravitelja
Pomaknite se nazaj na spletno konzolo vašega Docker Manager
strežnika. Ta strežnik boste konfigurirali kot upravljalsko vozlišče v vašem roju. Če ste se odločili ustvariti docker
uporabnika prej, se prijavite s tem računom in ne s superuporabnikom.
Vnesite naslednji ukaz, vendar ga zamenjajte 192.0.2.1
z zasebnim (ne javnim), IP naslovom, ki Docker Manager
je bil dodeljen vašemu strežniku:
$ docker swarm init --advertise-addr 192.0.2.1
Docker bo prikazal ukaz, ki ga lahko izvedete na drugih strežnikih v zasebnem omrežju, da jih dodate kot delovna vozlišča v ta novi roj. Shranite ta ukaz.
Dodajte delovno vozlišče
Zdaj se pomaknite do spletne konzole svojega Docker Worker
strežnika in se prijavite z docker
uporabnikom, če ste ga ustvarili.
Če želite ta strežnik dodati kot delovno vozlišče roju, ki ste ga pravkar ustvarili, izvedite ukaz, ki ste ga shranili iz izhoda ukaza za ustvarjanje roja. Videti bo podobno kot:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker bo izpisal, ali se je vozlišče uspelo pridružiti roju. Če naletite na težave pri dodajanju delovnih vozlišč v roj, še enkrat preverite konfiguracijo zasebnega omrežja in si oglejte ta priročnik za odpravljanje težav.
Če ste na začetku namestili več kot dva strežnika, lahko preostale dodate kot delovna vozlišča svojemu roju z zgornjim ukazom in tako povečate količino sredstev, ki so na voljo vaši aplikaciji. Druga možnost je, da dodate dodatna vozlišča upravitelja, vendar to presega obseg tega priročnika.
Namestite Portainer s SSL za upravljanje vašega Docker roja
Na tej točki je vaš Docker roj pripravljen za uporabo. Lahko pa po želji zaženete sklad Portainer na upravljalnem vozlišču v vašem roju. Portainer ponuja priročen spletni vmesnik za upravljanje vašega roja in vozlišč v njem.
Zdaj je čas, da ustvarite skupino požarnega zidu za vaš roj. Razen če vaša aplikacija to izrecno ne zahteva, razkrijte samo vrata na vozliščih upravitelja . Razkrivanje vrat na vaših delovnih vozliščih brez skrbnega premisleka lahko povzroči ranljivosti.
Pomaknite se do vmesnika za upravljanje požarnega zidu in ustvarite novo skupino požarnih zidov. Vaša aplikacija bi morala narekovati, katera vrata naj izpostavite, vendar morate vsaj razkriti vrata 9000
za Portainer. Uporabi to skupino požarnega zidu za Docker Manager
strežnik.
Čeprav to ni potrebno, je zavarovanje Porttainerja s SSL zelo priporočljivo. Zaradi tega priročnika boste uporabljali samo samopodpisano potrdilo OpenSSL, vendar bi morali razmisliti o uporabi Let's Encrypt v produkciji.
Pomaknite se do spletne konzole Docker Manager
strežnika, se prijavite z docker
uporabnikom in uporabite naslednje ukaze, da ustvarite samopodpisano potrdilo OpenSSL:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Ustvarite novo datoteko ~/portainer-agent-stack.yml
z naslednjo vsebino:
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:
Ko spremenite to konfiguracijsko datoteko sklada Docker, da bo ustrezala vašim zahtevam, jo lahko razmestite:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
Če želite preveriti, ali Portainer deluje, izvedite naslednji ukaz, potem ko ste Dockerju dali minuto ali dve, da razmesti sklad:
$ docker ps
Videli boste dva vsebnika s slikama portainer/portainer:latest
in portainer/agent:latest
, s čimer boste preverili, ali se je Portainer pravilno zagnal.
Zdaj lahko konfigurirate in upravljate svoj Docker roj tako, da obiščete javni naslov IP vašega Docker Manager
strežnika na vratih 9000
s protokolom HTTPS.