Antes de comenzar
-
Completar esta guía requerirá al menos dos Linodes ubicados en el mismo centro de datos. Las instrucciones de esta guía se escribieron para Ubuntu 16.04, pero se pueden usar otras distribuciones; los Linodes no necesitan usar la misma distribución.
-
Siga nuestra guía de configuración y protección de una instancia informática para actualizar su sistema. También puede establecer la zona horaria, configurar su nombre de host, crear una cuenta de usuario limitada y fortalecer el acceso SSH.
-
Instale Docker en cada Linode. Consulte nuestra guía Instalación de Docker e Implementación de una pila LAMP o los documentos de instalación de Docker para obtener más información.
Nota Los pasos de esta guía requieren privilegios de root. Asegúrese de ejecutar los pasos a continuación comoroot
o consudo
prefijo. Para obtener más información sobre los privilegios, consulte nuestra guía de usuarios y grupos.
Aumente el poder de Docker creando un clúster de hosts de Docker, llamado Docker Swarm. Necesita un Linode para que funcione como Docker Swarm Manager y algunos hosts de Docker para unirse a Swarm como nodos.
En esta guía, configurará un Docker Swarm Manager y conectará nodos para una implementación de contenedores escalable. Esto requiere varios Linodes con Docker instalados y ejecutándose en el mismo centro de datos. No es necesario que ejecuten la misma distribución.
Crear Docker Swarm Manager
El propósito de Docker Swarm Manager es recibir comandos en nombre del clúster y asignar contenedores a los nodos. Swarm Manager utiliza el algoritmo de consenso de Raft para administrar los estados de Swarm. El algoritmo de consenso de Raft garantiza que todos los nodos administradores que están a cargo de administrar y programar tareas en un clúster almacenen el mismo estado coherente. Si ocurre una falla, un solo nodo asume las tareas y restaura el estado estable.
En esta guía, creamos un solo Swarm Manager. Si su objetivo es la alta disponibilidad, puede crear varios administradores.
-
Inicie sesión en el Linode que ha elegido para el administrador de Swarm e inicialice el administrador. Reemplazar
PUBLIC_IP
en este ejemplo con la dirección IP pública de Linode:docker swarm init --advertise-addr PUBLIC_IP
Docker responde con el comando necesario para que los nodos se unan al Swarm:
-
Usar
docker info
para verificar que su Swarm está funcionando y activo:docker info
Unir nodos al administrador
En el paso 1 de la sección anterior, el docker swarm init
El comando genera instrucciones sobre cómo unirse al administrador.
docker swarm join --token TOKEN PUBLIC_IP:2377
Donde TOKEN
es la larga cadena de caracteres que se le presentó cuando inicializó Swarm, y PUBLIC_IP
es la dirección IP pública de su Swarm Manager Linode. Si no recuerda el token, ejecute join-token
en el administrador para ver la información del swarm init
comando:
docker swarm join-token worker
-
Para unir el nodo al Swarm, ejecute
docker swarm join
del nodo. CambiarTOKEN
al token del Paso 1 en la sección anterior, yPUIBLIC_IP
a la IP pública del administrador:docker swarm join --token TOKEN PUBLIC_IP:2377
El resultado muestra que el nodo se ha unido al enjambre como trabajador. Ahora tiene un pequeño clúster de Docker Swarm, con un administrador y un nodo:
-
Repita el Paso 1 para unir tantos nodos al Swarm como sea necesario.
-
En el administrador, use
docker node ls
para ver información sobre el administrador y una lista de todos los nodos:docker node ls
Implementar un servicio con Docker Swarm
Para implementar un servicio con Docker Swarm, use el administrador para preparar un solo nodo, luego escale la configuración para satisfacer sus necesidades. En este ejemplo, instalará NGINX en un nodo y luego lo ampliará a un clúster (enjambre) de tres nodos.
-
Desde Swarm Manager, use
service create
para implementar un servicio en un nodo. Cambiarnginxexample
a lo que quieras:docker service create -p 80:80 --name nginxexample nginx
-
Escale el servicio NGINX a tres nodos:
docker service scale nginxexample=3
-
Verifique que el servicio se haya implementado con
docker ps -a
desde cualquier nodo:docker ps -a
-
Para detener el
nginxexample
servicio, use elservice remove
comando:docker service remove nginxexample
Más información
Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.
- Documentos de Docker
- Tutorial de prueba de Docker
- Centro acoplable