Bevezetés
Előfeltételek
Telepítés
Telepítse az Alpine Linux 3.9.0-t a szerverekre
Szerver telepítés utáni konfigurációja
Telepítse a Dockert a szervereire
Inicializáljon egy Docker-rajt egy menedzser csomóponttal és egy dolgozó csomóponttal
Telepítse a Portainert SSL-lel a Docker-raj kezeléséhez
Bevezetés
Ez az útmutató bemutatja, hogyan hozhat létre és konfigurálhat egy Docker-rajot több Alpine Linux 3.9.0 szerver és Portainer használatával. Kérjük, vegye figyelembe, hogy a Vultr egy egykattintásos Docker alkalmazást kínál, amely jelenleg a CentOS 7 x64 és az Ubuntu 16.04 x64 operációs rendszert is támogatja.
Előfeltételek
A kezdéshez legalább két VC2 szerverre lesz szüksége, amelyen az Alpine Linux 3.9.0 fut. A Docker-rajon belül ezen kiszolgálók egyike manager node
külső hálózatokkal való interfészként működik, és feladatokat delegál a dolgozói csomópontokra. A másik szerver ezután worker node
a menedzser csomópont által neki delegált feladatok végrehajtását végzi.
Vegye figyelembe, hogy kettőnél több szervert is elindíthat, ha az alkalmazás redundanciát és/vagy nagyobb számítási teljesítményt igényel, és az útmutatóban leírt lépések továbbra is érvényesek.
Telepítés
Látogassa meg a Vultr szerver telepítési felületét .
Győződjön meg arról, hogy a Vultr Cloud (VC2)
lap az oldal tetején van kiválasztva.
A Server Location
szakaszból bármelyik helyet kiválaszthatja , de minden kiszolgálónak ugyanazon a helyen kell lennie , különben nem lehet Docker-rajot telepíteni rájuk.
Válassza ki a szakasz ISO Library
fülét, Server Type
és válassza ki a Alpine Linux 3.9.0 x86_64
képet.
Válassza ki a megfelelő opciót a Server Size
szakaszból. Ez az útmutató a 25 GB-os SSD-szerver méretét fogja használni, de ez nem biztos, hogy elegendő az alkalmazás erőforrásigényének kielégítéséhez. Bár a Vultr megkönnyíti a kiszolgáló méretének frissítését, miután már elindították, gondosan mérlegelnie kell, hogy az alkalmazásnak milyen méretű szerverre van szüksége az optimális teljesítményhez.
A Additional Features
szakaszban ki kell választani a Enable Private Networking
lehetőséget. Bár a többi lehetőség nem kötelező az útmutató követéséhez, érdemes megfontolni, hogy mindegyiknek van-e értelme az alkalmazás szempontjából.
Ha korábban engedélyezte ezt a Multiple Private Networks
lehetőséget a fiókjában, akkor ki kell választania egy meglévőt, vagy létre kell hoznia egy új magánhálózatot a szerverei számára. Ha nem engedélyezte, figyelmen kívül hagyhatja ezt a részt. A magánhálózatok kézi konfigurálásával kapcsolatos információkért tekintse meg ezt az útmutatót .
Egyelőre hagyja ki a Firewall Group
részt. Csak a Docker-rajban menedzser csomópontként működő kiszolgálónak lesz szüksége nyitott portokra, és ezt a kiszolgáló üzembe helyezése után kell konfigurálni.
Az oldal alján Server Qty
legalább kettőt kell megadnia . Mint korábban említettük, lehet, hogy kettőnél több szerverre lesz szüksége, de kettő is elegendő az útmutató követéséhez.
Végül a Server Hostname & Label
szakaszban adjon meg értelmes és emlékezetes gazdagépneveket és címkéket minden kiszolgálóhoz. Az E kézikönyv, a hostname és a címkét az első szerver lesz docker-manager
és Docker Manager
, respectively- és docker-worker
és Docker Worker
a második, ill.
Miután kétszer ellenőrizte az összes konfigurációt, kattintson Deploy Now
az oldal alján található gombra a szerverek elindításához.
Telepítse az Alpine Linux 3.9.0-t a szerverekre
Mivel a Vultr ISO-könyvtárából választott operációs rendszert, manuálisan kell telepítenie és konfigurálnia az Alpine Linux 3.9.0-t minden kiszolgálón.
Miután adott egy-két percet a Vultrnak a szerverek kiosztására, kattintson a hárompontos more options
ikonra Docker Manager
a szerver felügyeleti felületén , majd válassza ki a View Console
lehetőséget.
Át kell irányítani egy bejelentkezési promptot tartalmazó konzolra. Ha nem, várjon még egy percet, amíg a Vultr befejezi a szerverek telepítését.
A bejelentkezéshez írja be root
felhasználónévként. Az Alpine Linux 3.9.0 élő verziója (ez az, ami jelenleg fut a szerverein) nem követeli meg a szuperfelhasználótól jelszó megadását a bejelentkezéskor.
Miután sikeresen bejelentkezett a root fiókba, egy üdvözlő üzenetet fog látni, amelyet egy shell prompt követ, amely így néz ki:
localhost:~#
Az Alpine Linux telepítő elindításához írja be a következő parancsot:
# setup-alpine
Először válassza ki a megfelelő billentyűzetkiosztást. Ez az útmutató az us
elrendezést és a változatot fogja használni .
A gazdagépnév beállításakor válassza ki ugyanazt a gazdagépnevet, amelyet ehhez a kiszolgálóhoz a telepítés során állított be. Ha pontosan követte ezt az útmutatót, a gazdagépnévnek docker-manager
.
Két hálózati interfésznek kell rendelkezésre állnia: eth0
és eth1
. Ha csak a ikont látja eth0
, az azt jelenti, hogy nem konfigurálta megfelelően a szerverek privát hálózatát. Inicializálja a eth0
segítségével dhcp
, és inicializálja azt eth1
a privát IP-címet, hálózati maszkot és átjárót, amelyet a kiszolgáló a telepítés során hozzárendelt. Ezeket a részleteket a szervere beállítási felületéről érheti el. Amikor a rendszer kéri, ne végezzen manuális hálózati konfigurációt.
Adjon meg egy új jelszót a root fiókhoz, majd válassza ki a kiszolgálók telepítéséhez kiválasztott helynek megfelelő időzónát.
Ha HTTP/FTP proxyt kíván használni, adja meg annak URL-jét, ellenkező esetben ne állítson be proxy URL-t.
Válasszon egy NTP-klienst a rendszeróra szinkronizálásának kezelésére. Ez az útmutató a következőt fogja használni busybox
.
Amikor egy csomagtároló tükör használatára kérik, vagy válasszon egyet kifejezetten a számának megadásával; automatikusan felismeri és kiválasztja a leggyorsabbat a következő beírásával f
; vagy manuálisan szerkessze a lerakat konfigurációs fájlját a következővel: e
, ami nem ajánlott, hacsak nem ismeri az Alpine Linuxot. Ez az útmutató az első tükröt fogja használni.
Ha SSH-t kíván használni a szerverek eléréséhez vagy egy SSH-alapú fájlrendszer üzemeltetéséhez, válassza ki a használni kívánt SSH-kiszolgálót. Ez az útmutató a következőt fogja használni openssh
.
Ha kérik a lemez használatát, válasszon lemezt vda
a sys
típusát.
Az Alpine Linux 3.9.0-t most telepíteni kell a szerverére. Ismételje meg ezt a folyamatot az összes korábban telepített kiszolgálón, ügyelve arra, hogy a gazdagépnév és a eth1
hálózati interfész megfelelő értékekkel helyettesítse .
Szerver telepítés utáni konfigurációja
Ezen a ponton a szerverein még mindig az Alpine Linux 3.9.0 élő ISO-verziója fut. Az SSD-telepítésről való indításhoz látogasson el a kiszolgáló beállítási felületére, navigáljon az Custom ISO
oldalsó menübe, és kattintson a Remove ISO
gombra. Ennek újra kell indítania a szervert. Ha nem, indítsa újra manuálisan.
Miután a kiszolgáló befejezte az újraindítást, lépjen vissza a kiszolgáló webkonzoljához Docker Manager
.
Jelentkezzen be a root fiókba a telepítés során korábban beállított jelszóval.
Engedélyezze a közösség csomag adattár kitörlöd a harmadik vonal /etc/apk/repositories
segítségével vi
. Hasonló módon engedélyezheti az élt és a tesztelési tárolókat, de nem kötelező követniük ezt az útmutatót.
Szinkronizálja a kiszolgáló helyi csomagindexét a korábban kiválasztott távoli tárhellyel a következő shell-parancs beírásával:
# apk update
Ezután frissítse az elavult csomagokat:
# apk upgrade
Mint korábban, ismételje meg ezt a konfigurációs folyamatot minden korábban telepített kiszolgálón.
Telepítse a Dockert a szervereire
A Docker-csomag telepítése előtt érdemes lehet külön docker
felhasználót létrehozni . Ezt a következő paranccsal teheti meg:
# adduser docker
Megjegyzés: A docker
Docker-csomag telepítése után ez az új felhasználó és az új csoporthoz hozzáadott összes felhasználó root jogosultsággal fog rendelkezni. Tekintse meg a következő problémát a Moby Github tárolójából:
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.
Ha sudo engedélyt szeretne adni a docker
felhasználónak, először telepítse a sudo
csomagot:
# apk add sudo
Ezután hozzon létre egy sudo
csoportot:
# addgroup sudo
Végül adja hozzá a docker
felhasználót a sudo
csoporthoz:
# adduser docker sudo
Most követheti ezen útmutató 4. lépését a sudo konfigurálásának befejezéséhez.
Ezen a ponton készen áll a Docker-csomag telepítésére. Vegye figyelembe, hogy a docker
Docker telepítéséhez és konfigurálásához nem feltétlenül szükséges különálló, sudo-képes felhasználó, de ez az útmutató ezt a konvenciót követi.
Telepítse a Docker csomagot a következő paranccsal:
# apk add docker
Ezután engedélyezze a Docker indítószkriptet:
# rc-update add docker
Végül indítsa el a Docker démont:
# rc-service docker start
Ezzel a paranccsal ellenőrizheti, hogy a Docker fut-e:
# docker info
A legutóbbi alkalomhoz hasonlóan ismételje meg ezt a Docker-telepítési folyamatot minden kiszolgálón, amelyet az elején telepített.
Inicializáljon egy Docker-rajt egy menedzser csomóponttal és egy dolgozó csomóponttal
Az összes beállítás elvégzésével végre készen áll a Docker-raj létrehozására.
Hozzon létre egy rajt, és adjon hozzá egy menedzser csomópontot
Lépjen vissza a Docker Manager
szerver webkonzoljára. Ezt a szervert menedzser csomópontként kell beállítani a rajban. Ha úgy döntött, hogy docker
korábban hozza létre a felhasználót, jelentkezzen be ezzel a fiókkal, ne pedig a szuperfelhasználóval.
Írja be a következő parancsot, de cserélje 192.0.2.1
ki a privát (nem nyilvános) IP-címre, amelyet a Docker Manager
szerverhez rendelt:
$ docker swarm init --advertise-addr 192.0.2.1
A Docker megjelenít egy parancsot, amelyet végrehajthat a magánhálózat más kiszolgálóin, hogy felvegye őket dolgozó csomópontként az új rajhoz. Mentse el ezt a parancsot.
Munkavégző csomópont hozzáadása
Most lépjen a Docker Worker
szerver webkonzoljára, és jelentkezzen be a docker
felhasználóval, ha létrehozta.
Ha ezt a kiszolgálót munkacsomópontként szeretné hozzáadni az imént létrehozott rajhoz, hajtsa végre a raj létrehozási parancs kimenetéből mentett parancsot. A következőhöz hasonlóan fog kinézni:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
A Docker kiírja, hogy a csomópont tudott-e csatlakozni a rajhoz. Ha problémákba ütközik a dolgozó csomópontok rajhoz való hozzáadásakor, ellenőrizze újra a magánhálózat konfigurációját, és tekintse meg ezt az útmutatót a hibaelhárításhoz.
Ha az elején kettőnél több kiszolgálót telepített, a többit munkavégző csomópontként adhatja hozzá a rajhoz a fenti paranccsal, növelve az alkalmazás számára elérhető erőforrások mennyiségét. Alternatív megoldásként hozzáadhat további kezelőcsomópontokat, de ez nem tartozik a jelen útmutató hatókörébe.
Telepítse a Portainert SSL-lel a Docker-raj kezeléséhez
Ezen a ponton a Docker-raj használatra kész. Opcionálisan azonban elindíthat egy Portainer-vermet a raj menedzser csomópontján. A Portainer kényelmes webes felületet kínál a raj és a benne lévő csomópontok kezelésére.
Itt az ideje, hogy hozzon létre egy tűzfalcsoportot a raj számára. Hacsak az alkalmazás kifejezetten nem igényli, csak a kezelőcsomópontok portjait tegye közzé . Ha gondos mérlegelés nélkül feltárja a dolgozói csomópontok portjait, az biztonsági réseket okozhat.
Lépjen a tűzfalkezelő felületre, és hozzon létre egy új tűzfalcsoportot. Az alkalmazásnak meg kell határoznia, hogy mely portokat szabaddá tegye, de legalább 9000
a Portainer portját meg kell tennie. Alkalmazza ezt a tűzfalcsoportot a Docker Manager
kiszolgálón.
Bár nem kötelező, erősen ajánlott a Portainer SSL-lel történő biztosítása. Az útmutató kedvéért csak önaláírt OpenSSL-tanúsítványt fog használni, de érdemes megfontolni a Let's Encrypt éles környezetben történő használatát .
Keresse meg a Docker Manager
kiszolgáló webkonzolját, jelentkezzen be a docker
felhasználóval, és a következő parancsokkal hozzon létre egy önaláírt OpenSSL-tanúsítványt:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Hozzon létre egy új fájlt, ~/portainer-agent-stack.yml
a következő tartalommal:
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:
Miután módosította ezt a Docker verem konfigurációs fájlt, hogy megfeleljen a követelményeknek, telepítheti:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
A Portainer működésének ellenőrzéséhez hajtsa végre a következő parancsot, miután adott a Dockernek egy-két percet a verem telepítésére:
$ docker ps
Látni fog két tárolót a képekkel portainer/portainer:latest
és a portainer/agent:latest
ikonnal, ezzel ellenőrzi, hogy a Portainer megfelelően indult-e el.
Mostantól konfigurálhatja és kezelheti a Docker-rajt, ha HTTPS-kapcsolaton keresztül felkeresi Docker Manager
szervere nyilvános IP-címét a porton 9000
.