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 nodeliitä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 Locationosiosta minkä tahansa sijainnin , mutta kaikkien palvelimien on oltava samassa paikassa , muuten Docker-parvia ei voida asentaa niihin.
Valitse osion ISO Libraryvälilehti Server Typeja valitse Alpine Linux 3.9.0 x86_64kuva.
Valitse sopiva vaihtoehto Server Sizeosiosta. 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 Featuresosiossa on valittava Enable Private Networkingvaihtoehto. 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 Networksvaihtoehdon 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 Grouposio 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 Qtyvähintään kaksi. Kuten aiemmin mainittiin, saatat tarvita enemmän kuin kaksi palvelinta, mutta kaksi riittää tämän oppaan noudattamiseen.
Server Hostname & LabelKirjoita 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-managerja Docker Managervastaavasti- ja docker-workerja Docker Workertoiselle palvelimelle .
Kun olet tarkistanut kaikki kokoonpanosi, voit Deploy Nowkä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 optionskuvaketta Docker Managerpalvelimen palvelimen hallinnan käyttöliittymä , ja valitse View Consolevaihtoehto.
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 rootkä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 usasettelua 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ää: eth0ja eth1. Jos näet vain eth0, se tarkoittaa, että et ole määrittänyt palvelimiesi yksityistä verkkoa oikein. Alusta eth0käyttämällä dhcpja alusta eth1kä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 vdakuin systyyppi.
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 eth1verkkoliittymä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 ISOsivuvalikon kohtaan ja napsauta Remove ISOpainiketta. 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/repositorieskä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 dockerkä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 dockerryhmää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 dockerkäyttäjälle sudo-luvan , asenna ensin sudopaketti:
# apk add sudo
Luo sitten sudoryhmä:
# addgroup sudo
Lisää lopuksi dockerkäyttäjä sudoryhmää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 dockerasentamiseen 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 Managerpalvelimesi verkkokonsoliin . Määrität tämän palvelimen johtajasolmuksi parvessasi. Jos päätit luoda dockerkä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.1se yksityisellä (ei julkisella) IP-osoitteella, joka Docker Managerpalvelimellesi 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 Workerpalvelimesi verkkokonsoliin ja kirjaudu sisään dockerkä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 9000näkyvät , mutta sinun on ainakin esitettävä portti Portainerille. Ota tämä palomuuriryhmä käyttöön Docker Managerpalvelimessa.
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 Managerpalvelimen verkkokonsoliin , kirjaudu sisään dockerkä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:latestja portainer/agent:latestvarmistaen, että Portainer on käynnistynyt oikein.
Voit nyt määrittää ja hallita Docker-parveasi käymällä Docker Managerpalvelimesi julkisessa IP-osoitteessa portissa 9000HTTPS:n avulla.