Introducció
Requisits previs
Desplegament
Instal·leu Alpine Linux 3.9.0 als servidors
Configuració del servidor després de la instal·lació
Instal·leu Docker als vostres servidors
Inicieu un eixam Docker amb un node gestor i un node treballador
Desplegueu Portainer amb SSL per gestionar el vostre eixam Docker
Introducció
Aquesta guia us mostrarà com crear i configurar un eixam Docker mitjançant diversos servidors Alpine Linux 3.9.0 i Portainer. Tingueu en compte que Vultr ofereix una aplicació Docker amb un sol clic que actualment admet tant CentOS 7 x64 com Ubuntu 16.04 x64.
Requisits previs
Per començar, necessitareu almenys dos servidors VC2 amb Alpine Linux 3.9.0. Dins del vostre eixam Docker, un d'aquests servidors actuarà com a manager node
interfície amb xarxes externes i delegant feines als nodes de treball. Aleshores, l'altre servidor actuarà com a worker node
- executant els treballs que li delegui el node gestor.
Tingueu en compte que podeu llançar més de dos servidors si la vostra aplicació requereix redundància i/o més potència de càlcul, i els passos que s'indiquen en aquesta guia continuaran aplicant-se.
Desplegament
Visiteu la interfície de desplegament del servidor Vultr .
Assegureu-vos que la Vultr Cloud (VC2)
pestanya estigui seleccionada a la part superior de la pàgina.
Podeu seleccionar qualsevol ubicació de la Server Location
secció, però tots els servidors han d'estar a la mateixa ubicació , en cas contrari, no serà possible desplegar-hi un eixam Docker.
Seleccioneu la ISO Library
pestanya de la Server Type
secció i trieu la Alpine Linux 3.9.0 x86_64
imatge.
Seleccioneu una opció adequada de la Server Size
secció. Aquesta guia utilitzarà la mida del servidor SSD de 25 GB, però pot ser que no sigui suficient per satisfer els requisits de recursos de la vostra aplicació. Tot i que Vultr facilita l'actualització de la mida d'un servidor després que ja s'hagi llançat, encara hauríeu de considerar acuradament quina mida de servidor necessita la vostra aplicació per funcionar de manera òptima.
A la Additional Features
secció, heu de seleccionar l' Enable Private Networking
opció. Tot i que les altres opcions no són obligatòries per seguir aquesta guia, hauríeu de considerar si cadascuna té sentit o no en el context de la vostra aplicació.
Si prèviament heu activat l' Multiple Private Networks
opció al vostre compte, haureu de seleccionar una xarxa privada existent o crear una nova per als vostres servidors. Si no l'heu activat, podeu ignorar aquesta secció. Per obtenir informació sobre la configuració manual de xarxes privades, consulteu aquesta guia .
Omet la Firewall Group
secció de moment. Només el servidor que actua com a node gestor a l'eixam Docker necessitarà ports exposats, i això s'ha de configurar després del desplegament del servidor.
A la part inferior de la pàgina, heu d'introduir Server Qty
almenys dos. Com s'ha esmentat anteriorment, és possible que necessiteu més de dos servidors, però dos són suficients per seguir aquesta guia.
Finalment, a la Server Hostname & Label
secció, introduïu noms d'amfitrió i etiquetes significatius i memorables per a cada servidor. Als efectes d'aquesta guia, el nom d'amfitrió i l'etiqueta del primer servidor seran docker-manager
i Docker Manager
, respectivament, i docker-worker
i Docker Worker
per al segon, respectivament.
Després de comprovar totes les vostres configuracions, podeu fer clic al Deploy Now
botó de la part inferior de la pàgina per iniciar els vostres servidors.
Instal·leu Alpine Linux 3.9.0 als servidors
Com que heu triat un sistema operatiu de la biblioteca ISO de Vultr, haureu d'instal·lar i configurar manualment Alpine Linux 3.9.0 a cada servidor.
Després de donar a Vultr un minut o dos per assignar els vostres servidors, feu clic a la more options
icona de tres punts del Docker Manager
servidor a la interfície de gestió del servidor i, a continuació, trieu l' View Console
opció.
Hauríeu de ser redirigit a una consola amb un missatge d'inici de sessió. Si no, espereu un minut més perquè Vultr acabi de desplegar els vostres servidors.
En aquest missatge d'inici de sessió, introduïu root
com a nom d'usuari. La versió en directe d'Alpine Linux 3.9.0 (que és la que estan executant els vostres servidors actualment) no requereix que el superusuari introdueixi una contrasenya en iniciar sessió.
Un cop hàgiu iniciat la sessió correctament al compte root, veureu un missatge de benvinguda seguit d'una sol·licitud d'intèrpret d'ordres semblant a la següent:
localhost:~#
Per iniciar l'instal·lador d'Alpine Linux, introduïu l'ordre següent:
# setup-alpine
Primer, trieu una disposició de teclat adequada. Aquesta guia utilitzarà el us
disseny i la variant.
Quan configureu el nom d'amfitrió, trieu el mateix nom d'amfitrió que heu establert per a aquest servidor durant el desplegament. Si heu seguit aquesta guia exactament, el nom d'amfitrió hauria de ser docker-manager
.
Haurien d'estar disponibles dues interfícies de xarxa: eth0
i eth1
. Si només veus eth0
, vol dir que no has configurat correctament la xarxa privada dels teus servidors. Inicialitzeu eth0
amb dhcp
, i eth1
feu servir l'adreça IP privada, la màscara de xarxa i la passarel·la que s'ha assignat aquest servidor durant el desplegament. Podeu accedir a aquests detalls des de la interfície de configuració del vostre servidor. Quan se us demani, no feu cap configuració manual de xarxa.
Introduïu una contrasenya nova per al compte d'arrel i, a continuació, seleccioneu una zona horària adequada per a la ubicació a la qual heu triat implementar aquests servidors.
Si teniu intenció d'utilitzar un servidor intermediari HTTP/FTP, introduïu-ne l'URL, en cas contrari no establiu cap URL de servidor intermediari.
Trieu un client NTP per gestionar la sincronització del rellotge del sistema. Aquesta guia utilitzarà busybox
.
Quan se li demana que s'utilitzi un mirall del dipòsit de paquets, escolliu-ne un explícitament introduint-ne el número; detectar i seleccionar automàticament el més ràpid introduint f
; o editeu manualment el fitxer de configuració del dipòsit introduint e
, cosa que no es recomana tret que estigueu familiaritzat amb Alpine Linux. Aquesta guia utilitzarà el primer mirall.
Si teniu previst utilitzar SSH per accedir als vostres servidors o per allotjar un sistema de fitxers basat en SSH, seleccioneu un servidor SSH per utilitzar-lo. Aquesta guia utilitzarà openssh
.
Quan se us demani si voleu utilitzar un disc, trieu disc vda
com a sys
tipus.
Alpine Linux 3.9.0 s'hauria d'instal·lar ara al vostre servidor. Repetiu aquest procés per a tots els altres servidors que hàgiu desplegat anteriorment, assegurant-vos que substituïu els valors correctes pel nom d'amfitrió i la eth1
interfície de xarxa.
Configuració del servidor després de la instal·lació
En aquest moment, els vostres servidors encara estan executant la versió ISO en directe d'Alpine Linux 3.9.0. Per arrencar des de la instal·lació SSD, visiteu la interfície de configuració del vostre servidor, navegueu a l' Custom ISO
entrada del menú lateral i feu clic al Remove ISO
botó. Això hauria de reiniciar el servidor. Si no ho fa, reinicieu-lo manualment.
Un cop el servidor hagi acabat de reiniciar, torneu a la consola web del servidor Docker Manager
.
Inicieu sessió al compte root amb la contrasenya que heu establert anteriorment durant el procés d'instal·lació.
Habiliteu el dipòsit de paquets de la comunitat eliminant el comentari de la tercera línia d' /etc/apk/repositories
utilitzar vi
. Podeu habilitar els repositoris perifèrics i de prova d'una manera similar, però no cal que segueixin aquesta guia.
Sincronitzeu l'índex de paquets locals del servidor amb el repositori remot que heu seleccionat anteriorment introduint l'ordre d'intèrpret d'ordres següent:
# apk update
A continuació, actualitzeu els paquets obsolets:
# apk upgrade
Com abans, repetiu aquest procés de configuració per a cada servidor que hàgiu desplegat anteriorment.
Instal·leu Docker als vostres servidors
Abans d'instal·lar el propi paquet Docker, és possible que vulgueu crear un docker
usuari independent . Podeu fer-ho amb l'ordre següent:
# adduser docker
Nota: aquest nou usuari i tots els usuaris afegits al docker
grup nou tindran privilegis d'arrel un cop instal·lat el paquet Docker. Consulteu el problema següent del dipòsit de 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.
Si voleu donar permís sudo a l' docker
usuari, primer instal·leu el sudo
paquet:
# apk add sudo
A continuació, creeu un sudo
grup:
# addgroup sudo
Finalment, afegiu l' docker
usuari al sudo
grup:
# adduser docker sudo
Ara podeu seguir el pas 4 d' aquesta guia per acabar de configurar sudo.
En aquest punt, ja esteu preparat per instal·lar el paquet Docker. Tingueu en compte que no és estrictament necessari tenir un usuari separat i capaç de sudo docker
per instal·lar i configurar Docker, però aquesta guia segueix aquesta convenció.
Instal·leu el paquet Docker amb l'ordre següent:
# apk add docker
A continuació, activeu l'script d'inici de Docker:
# rc-update add docker
Finalment, inicieu el dimoni Docker:
# rc-service docker start
Podeu comprovar que Docker s'està executant amb aquesta ordre:
# docker info
Com amb l'última vegada, repetiu aquest procés d'instal·lació de Docker per a cada servidor que hàgiu desplegat al principi.
Inicieu un eixam Docker amb un node gestor i un node treballador
Amb tota aquesta configuració tractada, finalment esteu preparat per crear l'eixam Docker.
Creeu un eixam i afegiu un node gestor
Torneu a la consola web del vostre Docker Manager
servidor. Configurareu aquest servidor com a node gestor del vostre eixam. Si heu triat crear l' docker
usuari abans, inicieu la sessió amb aquest compte en lloc del superusuari.
Introduïu l'ordre següent, però substituïu 192.0.2.1
- lo per l'adreça IP privada (no pública) Docker Manager
que se li va assignar al vostre servidor:
$ docker swarm init --advertise-addr 192.0.2.1
Docker will display a command you can execute on other servers in the private network to add them as worker nodes to this new swarm. Save this command.
Add a worker node
Now navigate to the web console of your Docker Worker
server, signing in with the docker
user if you created it.
To add this server as a worker node to the swarm you just created, execute the command you saved from the output of the swarm creation command. It will look similar to the following:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Docker will output whether the node was able to join the swarm. If you encounter issues adding worker nodes to the swarm, double check your private network configuration and refer to this guide for troubleshooting.
If you deployed more than two servers at the beginning, you can add the rest as worker nodes to your swarm using the command above, increasing the amount resources available to your application. Alternatively, you can add additional manager nodes, but that's beyond the scope of this guide.
Deploy Portainer with SSL to manage your Docker swarm
At this point your Docker swarm is ready for use. You may, however, optionally launch a Portainer stack on the manager node in your swarm. Portainer offers a convenient web interface for managing your swarm and the nodes therein.
It's now time to create a firewall group for your swarm. Unless your application specifically requires it, only expose ports on your manager nodes. Exposing ports on your worker nodes without careful consideration can introduce vulnerabilities.
Navigate to the firewall management interface and create a new firewall group. Your application should dictate which ports to expose, but you must, at the very least, expose port 9000
for Portainer. Apply this firewall group to the Docker Manager
server.
While it isn't required, securing Portainer with SSL is strongly recommended. For the sake of this guide, you'll only be using a self-signed OpenSSL certificate, but you should consider using Let's Encrypt in production.
Navigate to the web console of the Docker Manager
server, log in using the docker
user, and use the following commands to generate a self-signed OpenSSL certificate:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Create a new file, ~/portainer-agent-stack.yml
, with the following contents:
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:
Després de modificar aquest fitxer de configuració de la pila de Docker perquè s'ajusti als vostres requisits, podeu implementar-lo:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
Per verificar que Portainer funciona, executeu l'ordre següent després d'haver donat a Docker un minut o dos per desplegar la pila:
$ docker ps
Veureu dos contenidors amb les imatges portainer/portainer:latest
i portainer/agent:latest
, comprovant que Portainer s'ha iniciat correctament.
Ara podeu configurar i gestionar el vostre eixam Docker visitant l'adreça IP pública del vostre Docker Manager
servidor al port 9000
mitjançant HTTPS.