No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Swarm

Curso de Swarm

Guido Vilariño

Guido Vilariño

El Routing Mesh

15/24
Recursos

Routing Mesh nos ayuda a que, teniendo un servicio escalado en swarm que tiene mas nodos que servicios y esos servicios están expuestos en un puerto; cuando hacemos un request a un servicio en ese puerto de alguna manera la petición llega y no se pierden en algún nodo que no puede contenerlo en ese puerto o en un contenedor.

Routing Mesh ayuda a llevar la petición y que esta no se pierda si la cantidad de los contenedores es diferente a la cantidad de nodos.

Aportes 8

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

-Routing mesh habilita cada nodo de swarm para aceptar conexiones en puertos publicados para cualquier servicio corriendo en swarm, incluso si no hay tareas corriendo en el nodo.

  • Routing mesh rutea todos los requests en lo puertos publicados en los nodos disponibles en un contenedor activo.

Entendido

docker service scale app=6
docker service ps app
docker ps
docker network ls
docker service create --name app --publish 3000:3000 --replicas=3 baezdavidsan/swarm-hostname:latest

Cuando se tenia un contenedor el en puerto 3000 y se volvía a crear otro contenedor con el mismo puerto 3000, nos mostraba un error, ya que el puerto ya estaba ocupado.
Que pasa cuando creamos o escalamos los servicios con el mismo puerto: Swarm crea una Red llamada “ingress” que implementa el Routing Mesh para el uso de un puerto como balanceador de carga.

No se puede tener mas de un servicio escuchando en el mismo puerto, pero si es posible tener múltiples tareas del mismo servicio compartiendo el puerto.

  • Routing Mesh ayuda a llevar la petición y que esta no se pierda si la cantidad de los contenedores es diferente a la cantidad de nodos. Todos los nodos participan en un ingress routing mesh. routing mesh habilita para que cada nodo swarm acepte conexiones en los puertos publicados de cada servicio swarm.

Para mas detalles: https://docs.docker.com/engine/swarm/ingress/

Cual es la magia que hace docker swarm para que nosotros teniendo un servicio escalado en un swarm de muchos mas nodos que la cantidad de servicios que tengamos y esos servicios expuestos en un puerto hace que cuando hacemos un request en ese puerto, de alguna manera la peticion llega y no se pierde cayendo en algun nodo que no tiene ese puerto o contenedor atendiendo ese puerto.

Un docker swarm en cualquier de sus nodos que recibe una peticion para un puerto determinado, lo que va a tratar de hacer es fijarse si en el nodo donde recibe esa peticion.

Routing Mersh: hara que es decir okay me estan haciendo una meticion para este servicio en algun puerto, pero que no esta en este nodo, me fijo si hay un servicio en otro nodo escuchando este puerto y lo que hace es encontrar esos si existen y deriva la peticion ahi.

– Escalar para 6 tareas, habra mas de un contenedor en un nodo

docker service scale app=6

– Listamos servicios, fijamos que alguno tenga mas de un contenedor e ingresamos a la terminal de ese worker (docker ps) miramos que tiene el puerto 3000 consumido por dos contenedores

docker service ps app

docker service scale app=6
docker service ps app
docker ps
docker network ls
docker service create --name app --publish 3000:3000 --replicas=3 NombreUser/swarm-hostname:latest

\*\*Routing Mesh\*\* nos ayuda a que, teniendo un servicio escalado en swarm que tiene mas nodos que servicios y esos servicios están expuestos en un puerto; cuando hacemos un request a un servicio en ese puerto de alguna manera la petición llega y no se pierden en algún nodo que no puede contenerlo en ese puerto o en un contenedor. Routing Mesh ayuda a llevar la petición y que esta no se pierda si la cantidad de los contenedores es diferente a la cantidad de nodos. `docker service scale app=6``docker service ps app``docker ps``docker network ls``docker service create --name app --publish 3000:3000 --replicas=3 \<your-user-id>/swarm-hostname:latest`