Johdanto
Edellytykset
Käyttöönotto
Asenna Alpine Linux 3.9.0 palvelimille
Asennuksen jälkeinen palvelimen konfigurointi
Asenna Docker palvelimillesi
Alusta Docker-parvi, jossa on yksi johtajasolmu ja yksi työntekijäsolmu
Ota Portainer käyttöön SSL:llä hallitaksesi Docker-parveasi
Johdanto
Tämä opas näyttää, kuinka Docker-parvi luodaan ja konfiguroidaan käyttämällä useita Alpine Linux 3.9.0 -palvelimia ja Portaineria. Huomaa, että Vultr tarjoaa One-Click Docker -sovelluksen , joka tukee tällä hetkellä sekä CentOS 7 x64:ää että Ubuntu 16.04 x64:ää.
Edellytykset
Aluksi tarvitset vähintään kaksi VC2-palvelinta, joissa on käytössä Alpine Linux 3.9.0. Docker-parvessasi yksi näistä palvelimista toimii manager node
liitäntänä ulkoisten verkkojen kanssa ja delegoi töitä työntekijäsolmuille. Toinen palvelin toimii sitten worker node
- suorittaa hallintasolmun sille delegoimia töitä.
Huomaa, että voit käynnistää useamman kuin kaksi palvelinta, jos sovelluksesi vaatii redundanssia ja/tai enemmän laskentatehoa, ja tämän oppaan vaiheet pätevät edelleen.
Käyttöönotto
Vieraile Vultr- palvelimen käyttöönottoliittymässä .
Varmista, että Vultr Cloud (VC2)
välilehti on valittuna sivun yläreunasta.
Voit valita Server Location
osiosta minkä tahansa sijainnin , mutta kaikkien palvelimien on oltava samassa paikassa , muuten Docker-parvia ei voida asentaa niihin.
Valitse osion ISO Library
välilehti Server Type
ja valitse Alpine Linux 3.9.0 x86_64
kuva.
Valitse sopiva vaihtoehto Server Size
osiosta. Tässä oppaassa käytetään 25 Gt:n SSD-palvelimen kokoa, mutta tämä ei ehkä riitä täyttämään sovelluksesi resurssivaatimuksia. Vaikka Vultr helpottaa palvelimen koon päivittämistä sen jälkeen, kun se on jo käynnistetty, sinun tulee silti harkita huolellisesti, minkä palvelinkoon sovelluksesi tarvitsee toimiakseen optimaalisesti.
Vuonna Additional Features
osiossa on valittava Enable Private Networking
vaihtoehto. Vaikka muita vaihtoehtoja ei vaadita tämän oppaan noudattamiseksi, sinun tulee harkita, onko jokainen järkevä hakemuksesi yhteydessä.
Jos olet aiemmin ottanut Multiple Private Networks
vaihtoehdon käyttöön tililläsi, sinun on sitten joko valittava olemassa oleva tai luotava uusi yksityinen verkko palvelimillesi. Jos et ole ottanut sitä käyttöön, voit jättää tämän osion huomioimatta. Lisätietoja yksityisten verkkojen määrittämisestä manuaalisesti on tässä oppaassa .
Ohita Firewall Group
osio toistaiseksi. Vain Docker-parven hallintasolmuna toimiva palvelin tarvitsee avoimet portit, ja tämä tulee määrittää palvelimen käyttöönoton jälkeen.
Sivun alareunaan sinun on syötettävä Server Qty
vähintään kaksi. Kuten aiemmin mainittiin, saatat tarvita enemmän kuin kaksi palvelinta, mutta kaksi riittää tämän oppaan noudattamiseen.
Server Hostname & Label
Kirjoita lopuksi osioon merkitykselliset ja mieleenpainuvat isäntänimet ja tunnisteet jokaiselle palvelimelle. Tässä oppaassa ensimmäisen palvelimen isäntänimi ja nimike ovat docker-manager
ja Docker Manager
vastaavasti- ja docker-worker
ja Docker Worker
toiselle palvelimelle .
Kun olet tarkistanut kaikki kokoonpanosi, voit Deploy Now
käynnistää palvelimesi napsauttamalla sivun alareunassa olevaa painiketta.
Asenna Alpine Linux 3.9.0 palvelimille
Koska valitsit käyttöjärjestelmän Vultrin ISO-kirjastosta, sinun on asennettava ja määritettävä Alpine Linux 3.9.0 manuaalisesti jokaiselle palvelimelle.
Annettuaan Vultr minuutin tai kaksi jakaa palvelimiin, klikkaa kolminkertainen piste more options
kuvaketta Docker Manager
palvelimen palvelimen hallinnan käyttöliittymä , ja valitse View Console
vaihtoehto.
Sinut pitäisi ohjata konsoliin, jossa on kirjautumiskehote. Jos ei, odota vielä minuutti, jotta Vultr päättää palvelimesi käyttöönoton.
Kirjoita tähän kirjautumiskehotteeseen root
käyttäjätunnukseksi. Alpine Linux 3.9.0:n live-versio (joka on palvelimesi tällä hetkellä käynnissä) ei vaadi pääkäyttäjää syöttämään salasanaa kirjautuessaan sisään.
Kun olet onnistuneesti kirjautunut root-tilille, näet tervetuloviestin, jota seuraa komentotulkkikehote, joka näyttää seuraavalta:
localhost:~#
Käynnistä Alpine Linux -asennusohjelma kirjoittamalla seuraava komento:
# setup-alpine
Valitse ensin sopiva näppäimistöasettelu. Tässä oppaassa käytetään us
asettelua ja muunnelmaa.
Kun määrität isäntänimeä, valitse sama isäntänimi, jonka määritit tälle palvelimelle käyttöönoton aikana. Jos olet noudattanut tätä opasta tarkasti, isäntänimen tulee olla docker-manager
.
Käytettävissä pitäisi olla kaksi verkkoliitäntää: eth0
ja eth1
. Jos näet vain eth0
, se tarkoittaa, että et ole määrittänyt palvelimiesi yksityistä verkkoa oikein. Alusta eth0
käyttämällä dhcp
ja alusta eth1
käyttämällä yksityistä IP-osoitetta, verkkopeitettä ja yhdyskäytävää, jotka tämä palvelin määritettiin käyttöönoton aikana. Näihin tietoihin pääsee käsiksi palvelimesi asetusliittymästä. Älä suorita manuaalisia verkkomäärityksiä pyydettäessä.
Anna uusi salasana pääkäyttäjälle ja valitse sitten aikavyöhyke, joka sopii sijaintiin, johon valitsit ottaa nämä palvelimet käyttöön.
Jos aiot käyttää HTTP/FTP-välityspalvelinta, kirjoita sen URL-osoite, muuten älä aseta välityspalvelimen URL-osoitetta.
Valitse NTP-asiakas järjestelmän kellon synkronoinnin hallintaa varten. Tässä oppaassa käytetään busybox
.
Kun pyydetään käyttämään pakettivarastopeiliä, joko valitse yksi nimenomaisesti antamalla sen numero; tunnistaa ja valitse automaattisesti nopein syöttämällä f
; tai muokkaa arkiston määritystiedostoa manuaalisesti kirjoittamalla e
, mikä ei ole suositeltavaa, ellet tunne Alpine Linuxia. Tässä oppaassa käytetään ensimmäistä peiliä.
Jos aiot käyttää SSH:ta palvelimien käyttämiseen tai SSH-pohjaisen tiedostojärjestelmän isännöimiseen, valitse käytettävä SSH-palvelin. Tässä oppaassa käytetään openssh
.
Kun kysytään levyn käytön, valitse levy vda
kuin sys
tyyppi.
Alpine Linux 3.9.0 pitäisi nyt olla asennettuna palvelimellesi. Toista tämä prosessi kaikille muille aiemmin käyttöönottamillesi palvelimille ja varmista, että korvaat oikeat arvot isäntänimelle ja eth1
verkkoliittymälle.
Asennuksen jälkeinen palvelimen konfigurointi
Tässä vaiheessa palvelimillasi on edelleen käytössä Alpine Linux 3.9.0:n live-ISO-versio. Käynnistääksesi SSD-asennuksesta, käy palvelimesi asetusliittymässä, siirry Custom ISO
sivuvalikon kohtaan ja napsauta Remove ISO
painiketta. Tämän pitäisi käynnistää palvelin uudelleen. Jos ei, käynnistä manuaalisesti uudelleen.
Kun palvelin on käynnistynyt uudelleen, siirry takaisin palvelimen verkkokonsoliin Docker Manager
.
Kirjaudu root-tilille käyttämällä salasanaa, jonka määritit aiemmin asennuksen aikana.
Ota yhteisön pakettivarasto käyttöön poistamalla kolmannen rivin kommentit /etc/apk/repositories
käytöstä vi
. Voit ottaa käyttöön reuna- ja testausvarastot samalla tavalla, mutta niiden ei tarvitse noudattaa tätä ohjetta.
Synkronoi palvelimen paikallinen pakettiindeksi aiemmin valitsemasi etävaraston kanssa antamalla seuraava komentotulkkikomento:
# apk update
Päivitä sitten vanhentuneet paketit:
# apk upgrade
Kuten aiemmin, toista tämä määritysprosessi jokaiselle aiemmin käyttöön otetulle palvelimelle.
Asenna Docker palvelimillesi
Ennen itse Docker-paketin asentamista kannattaa ehkä luoda erillinen docker
käyttäjä. Voit tehdä tämän käyttämällä seuraavaa komentoa:
# adduser docker
Huomautus: Tällä uudella käyttäjällä ja kaikilla uuteen docker
ryhmään lisätyillä käyttäjillä on pääkäyttäjän oikeudet, kun Docker-paketti on asennettu. Katso seuraava ongelma Moby Githubin arkistosta:
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.
Jos haluat antaa docker
käyttäjälle sudo-luvan , asenna ensin sudo
paketti:
# apk add sudo
Luo sitten sudo
ryhmä:
# addgroup sudo
Lisää lopuksi docker
käyttäjä sudo
ryhmään:
# adduser docker sudo
Nyt voit seurata tämän oppaan vaihetta 4 viimeistelläksesi sudon asetukset.
Tässä vaiheessa olet valmis asentamaan Docker-paketin. Huomaa, että Dockerin docker
asentamiseen ja määrittämiseen ei välttämättä tarvita erillistä, sudo-kykyistä käyttäjää, mutta tämä opas noudattaa tätä käytäntöä.
Asenna Docker-paketti seuraavalla komennolla:
# apk add docker
Ota sitten käyttöön Docker-aloituskomentosarja:
# rc-update add docker
Käynnistä lopuksi Docker-daemon:
# rc-service docker start
Voit varmistaa, että Docker on käynnissä tällä komennolla:
# docker info
Kuten edellisellä kerralla, toista tämä Docker-asennusprosessi jokaiselle palvelimelle, jonka otit käyttöön alussa.
Alusta Docker-parvi, jossa on yksi johtajasolmu ja yksi työntekijäsolmu
Kun kaikki asetukset on käsitelty, olet vihdoin valmis luomaan Docker-parven.
Luo parvi ja lisää johtajasolmu
Siirry takaisin Docker Manager
palvelimesi verkkokonsoliin . Määrität tämän palvelimen johtajasolmuksi parvessasi. Jos päätit luoda docker
käyttäjän aiemmin, kirjaudu sisään käyttämällä kyseistä tiliä pääkäyttäjän sijaan.
Anna seuraava komento, mutta korvaa 192.0.2.1
se yksityisellä (ei julkisella) IP-osoitteella, joka Docker Manager
palvelimellesi on määritetty:
$ docker swarm init --advertise-addr 192.0.2.1
Docker näyttää komennon, jonka voit suorittaa muilla yksityisen verkon palvelimilla lisätäksesi ne työntekijäsolmuiksi tähän uuteen parviin. Tallenna tämä komento.
Lisää työntekijäsolmu
Siirry nyt Docker Worker
palvelimesi verkkokonsoliin ja kirjaudu sisään docker
käyttäjän kanssa, jos loit sen.
Jos haluat lisätä tämän palvelimen työntekijäsolmuksi juuri luomaan parveen, suorita komento, jonka tallensit parven luomiskomennon lähdöstä. Se näyttää seuraavanlaiselta:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker tulostaa, pystyikö solmu liittymään parveen. Jos kohtaat ongelmia työntekijäsolmujen lisäämisessä parveen, tarkista yksityisen verkkosi kokoonpano ja katso vianetsintäohjeet tästä oppaasta .
Jos otit käyttöön alussa enemmän kuin kaksi palvelinta, voit lisätä loput työntekijäsolmuiksi parvellesi käyttämällä yllä olevaa komentoa, mikä lisää sovelluksesi käytettävissä olevien resurssien määrää. Vaihtoehtoisesti voit lisätä ylimääräisiä hallintasolmuja, mutta se ei kuulu tämän oppaan piiriin.
Ota Portainer käyttöön SSL:llä hallitaksesi Docker-parveasi
Tässä vaiheessa Docker-parvisi on valmis käytettäväksi. Voit kuitenkin valinnaisesti käynnistää Portainer-pinon parvesi managerisolmussa. Portainer tarjoaa kätevän verkkokäyttöliittymän parven ja sen solmujen hallintaan.
Nyt on aika luoda palomuuriryhmä parvellesi. Ellei sovelluksesi sitä erityisesti vaadi, paljasta vain hallintasolmujen portit . Työntekijäsolmujen porttien paljastaminen ilman huolellista harkintaa voi aiheuttaa haavoittuvuuksia.
Siirry palomuurin hallintaliittymään ja luo uusi palomuuriryhmä. Sovelluksesi tulee sanella mitkä portit 9000
näkyvät , mutta sinun on ainakin esitettävä portti Portainerille. Ota tämä palomuuriryhmä käyttöön Docker Manager
palvelimessa.
Vaikka sitä ei vaadita, Portainerin suojaaminen SSL:llä on erittäin suositeltavaa. Tämän oppaan vuoksi käytät vain itse allekirjoitettua OpenSSL-varmennetta, mutta sinun kannattaa harkita Let's Encryptin käyttöä tuotannossa.
Siirry Docker Manager
palvelimen verkkokonsoliin , kirjaudu sisään docker
käyttäjän avulla ja luo itseallekirjoitettu OpenSSL-sertifikaatti seuraavien komentojen avulla:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Luo uusi tiedosto ~/portainer-agent-stack.yml
, jonka sisältö on seuraava:
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:
Kun olet muokannut tätä Docker-pinon määritystiedostoa tarpeidesi mukaiseksi, voit ottaa sen käyttöön:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
Varmistaaksesi, että Portainer toimii, suorita seuraava komento, kun olet antanut Dockerille minuutin tai kaksi ottaa pino käyttöön:
$ docker ps
Näet kaksi säilöä kuvilla portainer/portainer:latest
ja portainer/agent:latest
varmistaen, että Portainer on käynnistynyt oikein.
Voit nyt määrittää ja hallita Docker-parveasi käymällä Docker Manager
palvelimesi julkisessa IP-osoitteessa portissa 9000
HTTPS:n avulla.