Docker Machine es una herramienta que proporciona soluciones mediante la implementación de un clúster de Docker que se ejecuta en una computadora local o una plataforma en la nube. Puede usar Docker Swarm para mejorar el rendimiento asignándolo a diferentes hosts de Docker en un clúster.

La función de clúster es una función esencial para la alta disponibilidad. Permite al usuario administrar clústeres en lo que se conoce como administrador de clústeres de enjambres. Esto permite al usuario aumentar aún más el número de instancias de contenedor para una sola aplicación.

En este caso, estamos usando Docker 1.12, que no requiere un servicio de descubrimiento externo ya que tiene un almacén de valor de clave de almacenamiento incorporado para este propósito. Intentaremos configurar el clúster Docker Swarm en la versión 16.04 de Ubuntu.

Para comenzar, necesitará:

  • Conocimiento de Docker y Ubuntu versión 16.04
  • Al menos dos nodos con Docker instalado.
  • Una dirección IP configurada en el nodo trabajador y el nodo administrador.

Echemos un vistazo a los nudos

Los clústeres de Docker constan de dos partes principales:

Nodo administrador: Se ocupan de la administración de clústeres, incluido el mantenimiento del estado de los clústeres, la preparación de servicios y el mantenimiento de puntos finales en modo enjambre (API HTTP). Una función importante en el quórum de administradores, en la que se almacenan datos importantes sobre el grupo de enjambres.

Nodo trabajador: Estos ejecutan contenedores. No participa en las decisiones de planificación. Un nodo trabajador debe tener al menos un nodo administrador. Es posible actualizar un nodo trabajador a un nodo administrador si está recibiendo servicio.

Antes de comenzar, asegúrese de que su sistema de repositorio esté actualizado. Utilice el siguiente comando para actualizarlo:

sudo apt-get update -y && sudo apt-get upgrade -y

Una vez que su sistema se haya actualizado con el sistema de repositorio actual, reinicie su computadora para aplicar estas actualizaciones.

Paso 1: instalar Docker

Instale la computadora Docker en cada uno de los nodos. Dado que Docker Swarm no existe en el modo estándar de la versión 16.04 de Ubuntu, primero deberá ejecutarlo.

Ejecute el siguiente comando para instalar los paquetes necesarios:

sudo apt-get install apt-transport-https software-properties-common ca-certificates -y

No olvide proporcionar la clave GPG para usar su Docker:

wget https://download.docker.com/linux/ubuntu/gpg && sudo apt-key add gpg

También agregue el repositorio Docker Swarm y actualice el sistema:

sudo echo "deb [arch=amd64]
https://download.docker.com/linux/ubuntu xenial stable" >>
/etc/apt/sources.list
sudo apt-get update -y

Finalmente, use el siguiente comando para instalar el motor Docker:

sudo apt-get install docker-ce -y

Una vez completada la instalación del motor de Docker, ejecute Docker y déjelo funcionar dentro del tiempo de inicio:

sudo systemctl start docker && sudo systemctl enable docker

En el modo estándar, el demonio de Docker solo puede ejecutarse como usuario root del sistema, por lo que otros usuarios solo pueden acceder a él cuando lo están usando. sudo. A continuación, le indicamos cómo ejecutar su Docker sin sudodeberá crear un grupo unificado llamado Dockers y luego agregar la cantidad de usuarios que desee. Para que el proceso sea exitoso, ejecute el siguiente comando:

sudo groupadd docker && sudo usermod -aG docker dockeruser

Cierre sesión en el sistema y luego inicie sesión para actualizar su membresía. Ejecute el comando para cada nodo individualmente.

Paso 2: configurar el firewall

Un clúster determinado debe tener al menos un nodo que actúe como nodo administrador. Sin embargo, se deben utilizar tres gerentes para un proceso sin problemas. En este tutorial, tomamos el primer nodo como administrador de enjambre, mientras que los dos nodos restantes representan los nodos trabajadores.

A continuación, debe abrir puertos de red en estos nodos para formar parte de un clúster para que la aplicación funcione correctamente. Si está utilizando el firewall UFW, puede acceder a los siguientes puertos 80, 2377, 2376, 2376, 4789 y 7946. Luego ejecuta el siguiente comando::

sudo ufw allow 2376/tcp && sudo ufw allow 7946/udp && 
sudo ufw allow 7946/tcp && sudo ufw allow 80/tcp && 
sudo ufw allow 2377/tcp && sudo ufw allow 4789/udp

Ahora vuelva a cargar el firewall y configúrelo para que comience después de que comience:

sudo ufw reload && sudo ufw enable

Reinicie su sistema Docker para aplicar las nuevas reglas:

sudo systemctl restart docker

Paso 3: creación del clúster de Docker

En este caso, hemos decidido que nuestro administrador de clústeres es el nodo 1. Por lo tanto, inicie sesión en su nodo de la siguiente manera:

docker-machine ssh node-1

Después de ejecutar este mensaje, el sistema cambiará para indicar que ha iniciado sesión en este nodo. Ejecute el siguiente comando para identificar el nodo como administrador de enjambres:

root@node-1:˜# docker swarm init --advertise-addr node_ip_address

En este caso, nope_ip_address Especifica la dirección IP del nodo.

La salida debería verse así:

Ejecute el siguiente comando para agregar un trabajador a este enjambre:

docker swarm join --token SWMTKN-1-5p5f6p6tv1cmjzq9ntx3zmck9kpgt355qq0uaqoj2ple629dl4-5880qso8jio78djpx5mzbqcfu 192.168.0.103:2377

Para agregar un administrador a este enjambre, ejecute Docker Swarm Join Token Manager y siga las instrucciones.

Este token es útil para agregar nodos al clúster de enjambre en el siguiente proceso. La computadora Docker se une al clúster de enjambre según el token proporcionado para el comando.

Ahora verifique el estado del nodo administrador ingresando el siguiente comando:

docker info

Compruebe si la salida se parece a esto:

Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: active
NodeID: iwjtf6u951g7rpx6ugkty3ksa
Is Manager: true
ClusterID: fo24c1dvp7ent771rhrjhplnu
Managers: 1
Nodes: 1
Orchestration:
 Task History Retention Limit: 5
Raft:
 Snapshot Interval: 10000
 Number of Old Snapshots to Retain: 0
 Heartbeat Tick: 1
 Election Tick: 3
Dispatcher:
 Heartbeat Period: 5 seconds
CA Configuration:
 Expiry Duration: 3 months
 Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 192.168.0.103
Manager Addresses:
 192.168.0.103:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 06b9cb35161009dcb7123345749fef02f7cea8e0
runc version: 3f2f8b84a77f73d38244dd690525642a72156c64
init version: 949e6fa
Security Options:
apparmor
seccomp
 Profile: default
Kernel Version: 4.4.0-45-generic
Operating System: Ubuntu 16.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 992.5MiB
Name: Manager-Node
ID: R5H4:JL3F:OXVI:NLNY:76MV:5FJU:XMVM:SCJG:VIL5:ISG4:YSDZ:KUV4
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false

Paso 4: agregar nodos trabajadores al clúster de enjambre

Una vez que se haya configurado el nodo trabajador, agréguelo al clúster.

Empiece por conectarse también Nodo-2 desde su computadora local:

$ docker-machine ssh node-2

Luego completa el comando con el texto your_swarm_token Este es el token que recibió cuando creó el clúster manager_node_ip_address representa la dirección IP del administrador de enjambres:

Una vez que el comando se ejecutó correctamente, verá el siguiente resultado:

Cierre sesión en el nodo 2, inicie sesión en el nodo administrador y ejecute el siguiente comando para listar:

docker node ls

El nodo trabajador debería verse así:

Paso 5: inicie los servicios en Docker Swarm

Ahora que ha instalado con éxito Docker Swarm, es hora de probar el contenedor y ver cómo lo maneja Swarm Manager.

Configure un servicio web en su nodo administrador con el siguiente comando:

docker service create --name webserver -p 80:80 httpd

Con este comando, queremos mapear el puerto 80 en el contenedor al puerto 80 en el clúster para tener acceso completo al modo estándar en el servidor Apache..

Verifique si el servicio se está ejecutando ingresando este comando:

docker service ls

Debería ver un resultado como este:

ID NOMBRE MODO REPLICAS PUERTOS DE IMAGEN
El servidor web nnt7i1lipo0h replica 0/1 Apache: el más nuevo *: 80-> 80 / tcp

Paso 6: probar el enjambre de Docker

El servidor Apache ahora debería estar funcionando bien en el nodo administrador. Se puede acceder al servidor web redirigiendo su navegador a http: // dirección_ip_nodo-1.

Debería ver el siguiente resultado::

Ahora hay un servidor Apache disponible en cada nodo.

El servicio Docker puede escalar un servicio. Para probar la alta disponibilidad del servidor, detenga la ejecución de Docker en el nodo trabajador:

sudo systemctl stop docker

Utilice el siguiente comando para averiguar el estado del servidor Apache:

docker service ps webserver

Un nuevo contenedor en el nodo administrador debe comenzar con el siguiente resultado:

ID                          NAME                     IMAGE                 NODE     DESIRED STATE   CURRENT STATE  ERROR     PORTS
ia2qc8a5f5n4        webserver.1         httpd:latest        Manager-Node        Ready               Ready 1 second ago                           
7roily9zpjvq         _ webserver.1     httpd:latest        Worker-Node         Shutdown            Running 15 seconds ago                       
r7nzo325cu73        webserver.2         httpd:latest        Manager-Node        Running             Running 23 minutes ago

Conclusión

¡Felicidades! Así de simple. Ahora tiene una configuración completa de Docker Swarm en Ubuntu versión 16.04. Además, ahora sabe cómo realizar varias tareas administrativas en Swarm Cluster. Con eso en mente, aún necesita configurar su clúster de Docker con múltiples nodos de administrador según sus necesidades de administración.

Consulte los 3 mejores servicios VPS: