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

Disponibilidad de nodos

17/24
Recursos

En el visualizer podemos ver que todas las tareas siguen corriendo en el "鈥渨orker 1"鈥, esto sucede porque el planificador de Docker Swarm no va a replanificar o redistribuir la carga de un servicio o de contenedores a menos que tenga que hacerlo; para solucionar esto, debemos forzar un redeployment o una actualizaci贸n que se logra cambiando el valor de una variable que no sirva para nada.

docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app

docker service ps app

Aportes 13

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Entendido

docker node ls
docker  node inspect --pretty swarmwork02
docker node update --availability drain swarmwork02
docker node update --availability active swarmwork02
docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app
docker service rm app

![](

como para hacer un cluster con raspberry 馃き

Disponibilidad de un nodo:

  • active. El nodo trabaja de forma coordinada con el Swarm y puede recibir nuevas tareas.
  • pause. El nodo deja de recibir nuevas tareas de manera indefinida, pero no desecha las que ya tiene corriendo.
  • drain. Le indica a Swarm que vac铆e todas las tareas del nodo y lo mantenga as铆 de manera indefinida. Si un servicio requiere un n煤mero definido de r茅plicas, Swarm redistribuye la respectiva carga del nodo drenado a otro nodo disponible.

Ver m谩s en Administrar nodos de Swarm.

鈥 Como hacemos decirle que esto de aqui sacamelo

docker node ls
docker node inspect --pretty worker2

鈥 Le pasamos las replicas a los otros workers, es decir le quitamos replicas nuestro worker2

docker node update --availability drain worker2

鈥 Vamos a nuestro worker1 y observamos que tiene mucha carga

鈥 Vamos a nuestro manager, verificamos que nuetro worker2 esta en modo DRAIN y lo cambiamos a ACTIVE (observamos que no redistribuye las replicas a worker2)

docker node ls
docker node update --availability active worker2

鈥 Con este metodo podemos redistribuir, enviando las tareas a otros workers

docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app
docker service ps app

Porque no se deber铆a aplicar lo de parallelism en un entorno productivo?

# inspect node
docker node ls
docker node inspect --pretty wrkr2

# mode drain (clean load) and mode availability
docker node update --availability drain wrkr2
docker node update --availability active wrkr2

# Force redistribution 
docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app
docker service ps app

me surgio una duda con el ejemplo que dio, en caso de que detectaramos que un nodo tiene problemas de conectividad, supongo que poderia ser de acceso a internet, entonces como podriamos hacer para mandar instrucciones a travez del nodo a docker swarm si justamente esta teniendo problemsa de conexion, es decir, si en la maquina donde esta corriendo ese nodo se corta internet entonces los comandos que ponga no le van a llegar al swarm, ya que justamente no tiene acceso a internet

Si no quieren agregar una variable de entorno nueva para redistribuir el servicio a los workers cada vez que activan uno node worker pueden usar nada mas:

docker service update app --force

en lugar de:

docker service update -d --env-add VAR=value app
docker node update --availability drain workder2
docker node update --availability active workder2
# Actualizar alguna variable de entorno para forzar la redistribuci贸n de contenedores
docker service update -d --env-add UNA_VARIABLE=de-entorno app

Eliminar containers

docker service rm app

en este video hay un fallo y es que cuando pasamos un node a drain y queremos actualizar el servicio para balancear la carga debemos debemos pasar nuetro worker2 a active o si no cuando hagamos update queda todo en el worker 1

docker node ls
docker node inspect --pretty swarmwork02
docker node update --availability drain swarmwork02
docker node update --availability active swarmwork02
docker service update -d --env-add UNA_VARIABLE=de-entorno --update-parallelism=0 app
docker service ps app
docker service rm app

Genial 馃槂 yo me di el trabajo de hacerlo en un entorno local