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 nodeinterfí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 Locationsecció, 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 Librarypestanya de la Server Typesecció i trieu la Alpine Linux 3.9.0 x86_64imatge.
Seleccioneu una opció adequada de la Server Sizesecció. 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 Featuressecció, heu de seleccionar l' Enable Private Networkingopció. 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 Networksopció 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 Groupsecció 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 Qtyalmenys 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 & Labelsecció, 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-manageri Docker Manager, respectivament, i docker-workeri Docker Workerper al segon, respectivament.
Després de comprovar totes les vostres configuracions, podeu fer clic al Deploy Nowbotó 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 optionsicona de tres punts del Docker Managerservidor a la interfície de gestió del servidor i, a continuació, trieu l' View Consoleopció.
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 rootcom 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 usdisseny 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: eth0i eth1. Si només veus eth0, vol dir que no has configurat correctament la xarxa privada dels teus servidors. Inicialitzeu eth0amb dhcp, i eth1feu 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 vdacom a systipus.
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 eth1interfí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 ISOentrada del menú lateral i feu clic al Remove ISObotó. 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/repositoriesutilitzar 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 dockerusuari independent . Podeu fer-ho amb l'ordre següent:
# adduser docker
Nota: aquest nou usuari i tots els usuaris afegits al dockergrup 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' dockerusuari, primer instal·leu el sudopaquet:
# apk add sudo
A continuació, creeu un sudogrup:
# addgroup sudo
Finalment, afegiu l' dockerusuari al sudogrup:
# 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 dockerper 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 Managerservidor. Configurareu aquest servidor com a node gestor del vostre eixam. Si heu triat crear l' dockerusuari 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 Managerque 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:latesti 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 Managerservidor al port 9000mitjançant HTTPS.