Įvadas
Būtinos sąlygos
Diegimas
Įdiekite „Alpine Linux 3.9.0“ serveriuose
Serverio konfigūracija po įdiegimo
Įdiekite „Docker“ savo serveriuose
Inicijuoti Docker spiečius su vienu vadovo mazgu ir vienu darbuotojo mazgu
Įdiekite „Portainer“ su SSL, kad galėtumėte valdyti „Docker“ būrį
Įvadas
Šiame vadove bus parodyta, kaip sukurti ir konfigūruoti Docker spiečius naudojant kelis Alpine Linux 3.9.0 serverius ir Portainer. Atminkite, kad „Vultr“ siūlo „ One-Click Docker“ programą, kuri šiuo metu palaiko ir CentOS 7 x64, ir Ubuntu 16.04 x64.
Būtinos sąlygos
Norėdami pradėti, jums reikės mažiausiai dviejų VC2 serverių, kuriuose veikia Alpine Linux 3.9.0. „Docker“ būryje vienas iš šių serverių veiks kaip manager node
sąsaja su išoriniais tinklais ir deleguos užduotis darbuotojų mazgams. Tada kitas serveris veiks kaip worker node
- vykdantis užduotis, kurias jam delegavo tvarkyklės mazgas.
Atminkite, kad galite paleisti daugiau nei du serverius, jei jūsų programai reikalingas dubliavimas ir (arba) didesnė skaičiavimo galia, o šiame vadove pateikti veiksmai vis tiek bus taikomi.
Diegimas
Apsilankykite Vultr serverio diegimo sąsajoje .
Įsitikinkite, Vultr Cloud (VC2)
kad puslapio viršuje pasirinktas skirtukas.
Galite pasirinkti bet kurią vietą iš Server Location
skilties, tačiau visi serveriai turi būti toje pačioje vietoje , kitaip nebus galima jiems įdiegti Docker spiečiaus.
Pasirinkite skyriaus ISO Library
skirtuką Server Type
ir pasirinkite Alpine Linux 3.9.0 x86_64
vaizdą.
Server Size
Skyriuje pasirinkite tinkamą parinktį . Šiame vadove bus naudojamas 25 GB SSD serverio dydis, tačiau jo gali nepakakti, kad būtų patenkinti jūsų programos išteklių reikalavimai. Nors Vultr leidžia lengvai atnaujinti serverio dydį, kai jis jau buvo paleistas, vis tiek turėtumėte atidžiai apsvarstyti, kokio dydžio serveris jūsų programa turi veikti optimaliai.
Skyriuje Additional Features
turite pasirinkti Enable Private Networking
parinktį. Nors norint vadovautis šiuo vadovu kitų parinkčių nereikia, turėtumėte apsvarstyti, ar kiekviena iš jų yra prasminga jūsų paraiškos kontekste.
Jei anksčiau įjungėte šią Multiple Private Networks
parinktį savo paskyroje, turėsite pasirinkti esamą arba sukurti naują privatų tinklą savo serveriams. Jei jo neįjungėte, galite nepaisyti šio skyriaus. Norėdami gauti informacijos apie rankinį privačių tinklų konfigūravimą, žr. šį vadovą .
Kol kas praleiskite Firewall Group
skyrių. Tik serveriui, veikiančiam kaip valdytojo mazgas „Docker“ būryje, reikės atvirų prievadų, ir tai turėtų būti sukonfigūruota įdiegus serverį.
Pačioje puslapio apačioje turite įvesti Server Qty
bent iš dviejų. Kaip minėta anksčiau, jums gali prireikti daugiau nei dviejų serverių, tačiau pakanka dviejų, kad galėtumėte vadovautis šiuo vadovu.
Galiausiai Server Hostname & Label
skiltyje įveskite prasmingus ir įsimintinus kiekvieno serverio pagrindinio kompiuterio pavadinimus ir etiketes. Šiame vadove tikslais hostname'as ir etiketė pirmojo serverio bus docker-manager
ir Docker Manager
, respectively- ir docker-worker
ir Docker Worker
už sekundę, atitinkamai.
Dar kartą patikrinę visas konfigūracijas, galite spustelėti Deploy Now
mygtuką puslapio apačioje, kad paleistumėte serverius.
Įdiekite „Alpine Linux 3.9.0“ serveriuose
Kadangi OS pasirinkote iš Vultr ISO bibliotekos, kiekviename serveryje turėsite rankiniu būdu įdiegti ir konfigūruoti Alpine Linux 3.9.0.
Suteikę Vultr minutę ar dvi paskirstyti savo serverius, serverio valdymo sąsajoje spustelėkite serverio trigubo taško more options
piktogramą ir pasirinkite parinktį.Docker Manager
View Console
Turėtumėte būti nukreipti į konsolę su prisijungimo raginimu. Jei ne, palaukite dar minutę, kol „Vultr“ baigs diegti jūsų serverius.
Tuo prisijungimo raginimu įveskite root
kaip vartotojo vardą. Tiesioginė Alpine Linux 3.9.0 versija (šiuo metu veikia jūsų serveriuose) nereikalauja, kad supervartotojas prisijungtų prie slaptažodžio.
Kai sėkmingai prisijungsite prie šakninės paskyros, pamatysite pasveikinimo pranešimą, po kurio bus pateiktas apvalkalo raginimas, kuris atrodo taip:
localhost:~#
Norėdami paleisti „Alpine Linux“ diegimo programą, įveskite šią komandą:
# setup-alpine
Pirmiausia pasirinkite tinkamą klaviatūros išdėstymą. Šiame vadove bus naudojamas us
išdėstymas ir variantas.
Nustatydami pagrindinio kompiuterio pavadinimą, pasirinkite tą patį pagrindinio kompiuterio pavadinimą, kurį nustatėte šiam serveriui diegimo metu. Jei tiksliai laikotės šio vadovo, pagrindinio kompiuterio pavadinimas turėtų būti docker-manager
.
Turėtų būti prieinamos dvi tinklo sąsajos: eth0
ir eth1
. Jei matote tik eth0
, tai reiškia, kad netinkamai sukonfigūravote savo serverių privatų tinklą. Inicijuoti eth0
naudojant dhcp
, ir inicijuoti eth1
naudojant privatų IP adresą, tinklo kaukę ir šliuzą, kurie šiam serveriui buvo priskirti diegiant. Šią informaciją galite pasiekti iš savo serverio nustatymų sąsajos. Kai būsite paraginti, neatlikite rankinio tinklo konfigūravimo.
Įveskite naują root paskyros slaptažodį, tada pasirinkite laiko juostą, atitinkančią vietą, kurioje pasirinkote dislokuoti šiuos serverius.
Jei ketinate naudoti HTTP/FTP tarpinį serverį, įveskite jo URL, kitu atveju nenustatykite tarpinio serverio URL.
Pasirinkite NTP klientą, kad galėtumėte valdyti sistemos laikrodžio sinchronizavimą. Šiame vadove bus naudojamas busybox
.
Kai bus paprašyta naudoti paketo saugyklos veidrodį, pasirinkite jį aiškiai įvesdami jo numerį; automatiškai aptikti ir pasirinkti greičiausią įvesdami f
; arba rankiniu būdu redaguokite saugyklos konfigūracijos failą įvesdami e
, o tai nerekomenduojama, nebent esate susipažinę su Alpine Linux. Šiame vadove bus naudojamas pirmasis veidrodis.
Jei planuojate naudoti SSH, kad pasiektumėte savo serverius arba priglobtumėte SSH pagrįstą failų sistemą, pasirinkite norimą naudoti SSH serverį. Šiame vadove bus naudojamas openssh
.
Kai būsite paraginti už diską naudoti, pasirinkite diską vda
, kaip sys
tipo.
Dabar jūsų serveryje turėtų būti įdiegta Alpine Linux 3.9.0. Pakartokite šį procesą visiems kitiems serveriams, kuriuos įdiegėte anksčiau, užtikrindami, kad pakeistumėte teisingas pagrindinio kompiuterio pavadinimo ir eth1
tinklo sąsajos reikšmes .
Serverio konfigūracija po įdiegimo
Šiuo metu jūsų serveriuose vis dar veikia tiesioginė „Alpine Linux 3.9.0“ ISO versija. Norėdami paleisti iš SSD, apsilankykite savo serverio nustatymų sąsajoje, eikite į Custom ISO
šoninio meniu įrašą ir spustelėkite Remove ISO
mygtuką. Tai turėtų iš naujo paleisti serverį. Jei ne, paleiskite rankiniu būdu iš naujo.
Kai serveris bus paleistas iš naujo, grįžkite į serverio žiniatinklio konsolę Docker Manager
.
Prisijunkite prie root paskyros naudodami slaptažodį, kurį nustatėte anksčiau diegimo proceso metu.
Įjungti bendruomenė pakuotės saugyklą pagal uncommenting trečioje eilutėje /etc/apk/repositories
naudojant vi
. Panašiu būdu galite įjungti krašto ir testavimo saugyklas, tačiau jos neprivalo laikytis šio vadovo.
Sinchronizuokite serverio vietinį paketo indeksą su anksčiau pasirinkta nuotoline saugykla, įvesdami šią apvalkalo komandą:
# apk update
Tada atnaujinkite pasenusius paketus:
# apk upgrade
Kaip ir anksčiau, pakartokite šį konfigūravimo procesą kiekvienam serveriui, kurį įdiegėte anksčiau.
Įdiekite „Docker“ savo serveriuose
Prieš diegdami patį Docker paketą, galbūt norėsite sukurti atskirą docker
vartotoją. Tai galite padaryti naudodami šią komandą:
# adduser docker
Pastaba: šis naujas vartotojas ir visi į naują docker
grupę įtraukti vartotojai turės root teises, kai bus įdiegtas Docker paketas. Peržiūrėkite šią problemą iš „Moby Github“ saugyklos:
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.
Jei norite docker
vartotojui suteikti sudo leidimą , pirmiausia įdiekite sudo
paketą:
# apk add sudo
Tada sukurkite sudo
grupę:
# addgroup sudo
Galiausiai pridėkite docker
vartotoją prie sudo
grupės:
# adduser docker sudo
Dabar galite atlikti šio vadovo 4 veiksmą, kad užbaigtumėte sudo konfigūravimą.
Šiuo metu esate pasirengę įdiegti „Docker“ paketą. Atminkite, kad docker
norint įdiegti ir konfigūruoti „Docker“, nebūtina turėti atskirą, sudo galią turintį vartotoją, tačiau šiame vadove laikomasi šios taisyklės.
Įdiekite „Docker“ paketą naudodami šią komandą:
# apk add docker
Tada įgalinkite Docker inicijavimo scenarijų:
# rc-update add docker
Galiausiai paleiskite „Docker“ demoną:
# rc-service docker start
Galite patikrinti, ar „Docker“ veikia, naudodami šią komandą:
# docker info
Kaip ir praėjusį kartą, pakartokite šį „Docker“ diegimo procesą kiekvienam serveriui, kurį įdiegėte pradžioje.
Inicijuoti Docker spiečius su vienu vadovo mazgu ir vienu darbuotojo mazgu
Atlikę visą tą sąranką, pagaliau esate pasirengę sukurti Docker būrį.
Sukurkite spiečių ir pridėkite valdytojo mazgą
Grįžkite į savo Docker Manager
serverio žiniatinklio konsolę . Šį serverį sukonfigūruosite kaip vadybininko mazgą savo būryje. Jei pasirinkote sukurti docker
vartotoją anksčiau, prisijunkite naudodami tą paskyrą, o ne supervartotoją.
Įveskite šią komandą, bet pakeiskite 192.0.2.1
privačiu (ne viešuoju) IP adresu, kuris Docker Manager
buvo priskirtas jūsų serveriui:
$ docker swarm init --advertise-addr 192.0.2.1
„Docker“ parodys komandą, kurią galite vykdyti kituose privačiojo tinklo serveriuose, kad įtrauktumėte juos kaip darbuotojų mazgus prie šio naujojo būrio. Išsaugokite šią komandą.
Pridėkite darbuotojo mazgą
Dabar eikite į savo Docker Worker
serverio žiniatinklio konsolę ir prisijunkite su docker
vartotoju, jei jį sukūrėte.
Norėdami pridėti šį serverį kaip darbuotojo mazgą prie ką tik sukurto spiečiaus, vykdykite komandą, kurią išsaugojote iš spiečių kūrimo komandos išvesties. Tai atrodys taip, kaip nurodyta toliau:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
„Docker“ išves, ar mazgas galėjo prisijungti prie spiečiaus. Jei kyla problemų pridėdami darbuotojų mazgus prie spiečiaus, dar kartą patikrinkite privataus tinklo konfigūraciją ir ieškokite šio trikčių šalinimo vadovo .
Jei iš pradžių įdiegėte daugiau nei du serverius, likusius galite pridėti kaip darbuotojų mazgus prie savo būrio naudodami aukščiau pateiktą komandą, padidindami programai prieinamų išteklių kiekį. Arba galite pridėti papildomų tvarkyklės mazgų, tačiau tai nepatenka į šio vadovo taikymo sritį.
Įdiekite „Portainer“ su SSL, kad galėtumėte valdyti „Docker“ būrį
Šiuo metu jūsų Docker spiečius yra paruoštas naudoti. Tačiau pasirinktinai galite paleisti „Portainer“ krūvą savo spiečiaus valdytojo mazge. Portainer siūlo patogią žiniatinklio sąsają, skirtą jūsų spiečiui ir jame esantiems mazgams valdyti.
Atėjo laikas sukurti ugniasienės grupę jūsų spiečiui. Išskyrus atvejus, kai jūsų programa to konkrečiai reikalauja, atskleiskite tik valdytojo mazgų prievadus . Atskleidus prievadus savo darbuotojo mazguose atidžiai neapsvarsčius, gali atsirasti pažeidžiamumų.
Eikite į ugniasienės valdymo sąsają ir sukurkite naują ugniasienės grupę. Jūsų programa turėtų nurodyti, kuriuos prievadus atskleisti, bet jūs turite bent jau atskleisti 9000
Portainer prievadą. Taikykite šią ugniasienės grupę Docker Manager
serveriui.
Nors tai nebūtina, primygtinai rekomenduojama apsaugoti „Portainer“ naudojant SSL. Šiame vadove naudosite tik savarankiškai pasirašytą „OpenSSL“ sertifikatą, tačiau turėtumėte apsvarstyti galimybę naudoti „Let's Encrypt “ gamyboje.
Eikite į Docker Manager
serverio žiniatinklio konsolę , prisijunkite naudodami docker
vartotoją ir naudokite šias komandas, kad sukurtumėte savarankiškai pasirašytą 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
Sukurkite naują failą ~/portainer-agent-stack.yml
su tokiu turiniu:
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:
Pakeitę šį „Docker“ kamino konfigūracijos failą, kad jis atitiktų jūsų reikalavimus, galite jį įdiegti:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
Norėdami patikrinti, ar „Portainer“ veikia, suteikę „Docker“ minutę ar dvi, kad ji būtų įdiegta, vykdykite šią komandą:
$ docker ps
Pamatysite du konteinerius su vaizdais portainer/portainer:latest
ir portainer/agent:latest
, patvirtindami, kad „Portaineer“ įjungtas tinkamai.
Dabar galite konfigūruoti ir valdyti savo Docker spiečių apsilankę viešajame savo Docker Manager
serverio IP adresu prievade 9000
naudodami HTTPS.