Configurar-Ecosistema-Swarm

Swarm

Nota: (Para afrontar este laboratorio se necesita dos hosts Ubuntu que pueden comunicarse a través de una red, con Docker instalado la dirección IP de la máquina del administrador puertos abiertos entre los hosts).

-. En estos apuntes analizaremos las características del modo-Swarm de Docker-Engine, Usare los comandos de la CLI de Docker-Engine ingresados en la línea de comandos de una ventana de terminal.

 

Dos máquinas host en Networ (Red):

-. Dos hosts-Ubuntu que tengan Docker instalado y puedan comunicarse a través de una red. Pueden ser máquinas físicas, máquinas virtuales, instancias de Amazon , Google o de alguna otra forma. Incluso puede usar Docker-Machine desde un host de Linux, Mac o Windows.

. Una de estas máquinas es un administrador (master1) y la otra trabajador (worker1). Podemos usar los hosts que queramos, en esta ocasión dispongo de dos, con estas maquinas podemos inicializar un Docker-Swarm, crear Servicios y escalarlos.

Instalar Docker-Engine en máquinas Linux-Ubuntu:

-. Si utilizo Maquinas-físicas basadas en Linux o Maquinas-Virtuales en la nube como hosts, simplemente siga las instrucciones de instalación de Linux para su plataforma (Docker-Docs). Encendemos las dos máquinas y estará listo. Podemos probar Ecosistema-Swarm de un solo nodo y de varios nodos en máquinas Linux.

IP-Máquina-Administradora:

  1. . Esta IP debe asignarse a una Interfaz-Red disponible para el sistema operativo del Administrador . Todos los nodos-Swarm deben conectarse al Administrador en la dirección IP.
  2. . Debido a que otros nodos se comunican con el nodo-administrador en su dirección IP, debe usar una dirección IP fija. Ejecutar (ifconfig) para ver una lista de las interfaces de red disponibles.
  3. . Si está utilizando Docker-Machine, puede obtener la IP del administrador con docker-machine ls o docker-machine ip <MACHINE-NAME>, (docker-machine ip master1). Utilizare como Administrador master1: 192.168.99.100.

Abrir Protocolos y Puertos entre las Maquinas:

-. Estos puertos deben estar disponibles. En Ubuntu estos puertos están abiertos de forma predeterminada.

  1. . TCP 2377 para comunicaciones de gestión de clústeres
  2. . TCP y UDP 7946 para comunicación entre nodos
  3. . UDP 4789 para tráfico de red superpuesto

. Si usamos Network-Overlay con cifrado (–opt encrypted), tenemos verificar el Protocolo IP 50 ( ESP ).

En este diagrama visualizamos las configuraciones anteriormente expuestas.

Crear-Swarm

-. Después de terminar los pasos de configuración del entorno, pasemos a crear un Docker-Swarm . Asegúrese de que el Daemon-Docker-Engine esté iniciado en las Máquinas1-host.

-. Abrir un terminal y SSH en la máquina donde desea ejecutar su Nodo-Administrador. Usaremos una máquina llamada (master1). Conectarse a través de SSH usando el siguiente comando:

# docker-machine ssh master1

-. Ejecute el siguiente comando para crear un nuevo Docker-Swarm:

# docker swarm init –advertise-addr <MANAGER-IP>

-. Para probar el Docker-Swarm de un solo Nodo, simplemente ejecútelo docker swarm init sin argumentos. No es necesario especificar –advertise-addren este caso , si lo haremos:

-. Pasemos a nuestro terminal Cli para interactuar con Docker-Swarm (recordemos que estos comandos usan la Api-Docker) .

Nota: nos podemos en contra el siguiente error si tenemos instalaciones anteriores:

  1. In: root@juan-Aspire-ES1-512:/# docker swarm init –advertise-addr 192.168.1.36
  2. Out: Respuesta de error del demonio: este nodo ya es parte de un enjambre. Utilice «docker swarm leave» para dejar este enjambre y unirse a otro.
  3. In: root@juan-Aspire-ES1-512:/# docker swarm leave –force
  4. Out: Node left the swarm.

Volvamos a empezar:

  1. In: root@juan-Aspire-ES1-512:/# docker swarm init –advertise-addr 192.168.1.36
  2. Out: Swarm initialized: current node (c44g0uwla17b052f920fbc2xv) is now a manager.

Agregar un worker a este Swarm:

  1. Out: docker swarm join –token SWMTKN-1-54v5io5jxb01dgs1nh0nv4g5r9cehcxwcffm7fqv9xdab4fudh-f5i0n0x9jj57utto91txiwgh0 192.168.1.36:2377
  2. Out: To add a manager to this swarm, rundocker swarm join-token manager‘ and follow the instructions.

-. La –advertise-addr bandera configura el Nodo-Administrador para publicar su dirección como 192.168.1.36 Los otros Nodos-Swarm deben poder acceder al administrador en la dirección IP. La salida incluye los comandos para unir nuevos Nodos-Swarm. Los Nodos se unirán como gerentes (Master) o trabajadores (Worker) según el valor de la –token bandera.

Con docker info para ver el estado actual del Docker-Swarm:

  • In: root@juan-Aspire-ES1-512:/# docker info
  • Swarm: active
  • NodeID: c44g0uwla17b052f920fbc2xv
  • Is Manager: true
  • ClusterID: w8e30fzbffhqkkqx1lukaydsz
  • Managers: 1
  • Nodes: 1
  • Default Address Pool: 10.0.0.0/8
  • SubnetSize: 24
  • Data Path Port: 4789
  • Orchestration:
  • Task History Retention Limit: 5
  • Node Address: 192.168.1.36.100
  • Manager Addresses:
  • 192.168.1.36:2377

Con docker node ls información sobre los Nodos:

  1. In: root@juan-Aspire-ES1-512:/# docker node ls
  2. Out: c44g0uwla17b052f920fbc2xv * juan-Aspire-ES1-512 Ready-Active-Leader-20.10.7

-. El *siguiente al ID del Nodo indica que actualmente está conectado a este Nodo. El Modo-Swarm de Docker-Engine nombra automáticamente el Nodo para el nombre de host de la máquina.

Agregar Nodes a Docker-Swarm

-. Una vez que haya creado un Docker-Swarm con un Nodo-Administrador (Nodos-Master), estará listo para agregar Nodos-Trabajadores (Nodos-Worker). Abril un Terminal y SSH en la máquina donde desea ejecutar un Nodo-Worker .

. Ejecute el –token producido por el docker swarm init resultado del paso anterior, para crear un Nodo-worker1 unido al Docker-Swarm existente:

  1. Out: docker swarm join –token SWMTKN-1-4wmziuzt7dxklveemns3zjfqe75vv05xl3sba2efsrylsqa0dr-6vo305hvrctufuzcee1uaafy1 192.168.99.100:2377

Si no tiene el –token disponible, puede ejecutar el siguiente comando en un Nodo-Administrador para recuperar el comando de unión para un Node-Worker:

  1. In: root@juan-Aspire-ES1-512:/# docker swarm join-token worker
  2. Out: To add a worker to this swarm, run the following command:
  3. Out: docker swarm join –token SWMTKN-1-54v5io5jxb01dgs1nh0nv4g5r9cehcxwcffm7fqv9xdab4fudh-f5i0n0x9jj57utto91txiwgh0 192.168.1.36:2377

Pegamos el –Token:

  1. In: root@serve–hp8100:/# docker swarm join –token SWMTKN-154v5io5jxb01dgs1nh0nv4g5r9cehcxwcffm7fqv9xdab4fudh-f5i0n0x9jj57utto91txiwgh0 192.168.1.36:2377
  2. Out: This node joined a swarm as a worker.

Listamos los Nodes:

  1. In: root@juan-Aspire-ES1-512:/# docker node ls
  2. Out: wao71z6yum7hisrju30wdski * juan-Aspire-ES1-512 Ready -Active-Leader- 20.10.7
  3. Out: u4minr7o6l3sqm0gkooajiorj serve–hp8100 Ready-Active -20.10.7

 

Implementar Servicios en Docker-Swarm

-.Servicios es la definición de tareas a ejecutar en los Nodos-Master-Worker. Especifica que imagen de contenedor usar, Después de crear un Docker-Swarm , implementar un Servicio-Swarm. también agregamos Nodo o Nodos-Worker , pero que hemos echo , mas que crear una network-Overlay que se componen según podemos ver en :

  1. In: root@juan-Aspire-ES1-512:/# docker network ls

-. Se genera una network-Overlay-ingress y network-Overlay-docker_gwbridge . Después de crear network-Overlay-Swarm , puedemos implementar un servicio al Swarm. También podemos agregar Nodos-Worker.

-. Abrir un terminal y en la máquina donde ejecuta su Nodo-Administrador .Usare el mismo que utiliza como ejemplo en Docker-Docs .

Ejecute el siguiente comando:

  1. In: root@juan-Aspire-ES1-512:/# docker service create –replicas 1 –name helloworld alpine ping docker.com
  2. Out: n4crgviz00smffbfrlvjpkeze

 

  • docker service create comando crea el servicio.
  • –name bandera nombra el servicio helloworld .
  • –replicas bandera especifica el estado deseado de 1 instancia en ejecución.

-. Los argumentos alpine ping docker.com definen el servicio como un contenedor de Alpine Linux que ejecuta el comando ping docker.com. La imagen de Docker de Alpine Linux tiene ventajas sobre la imagen de Ubuntu debido a su tamaño relativamente menor y proporciona casi todas las funcionalidades que una imagen de Ubuntu puede ofrecer

Lista de servicios en ejecución docker service ls :

  1. In: root@juan-Aspire-ES1-512:/# docker service ls
  2. Out: n4crgviz00sm helloworld replicated -1/1-alpine:latest

Recopilando:

En primer lugar hemos creado la arquitectura de las dos maquinas para crear los dos (Nodo-Master), (Node-Worker). Creamos Docker-Swarm con el comando (doker swarm init) con lo cual creamos el Nodo-Master y posteriormente agregamos el Nodo-Worker continuación implementamos los Servicios con (docker service create) con la imagen alpine:latest la cual es muy interesante sobre todo para laboratorios.

Referencias: (Entorno-Moreluz)

Referencias: (Docker)