tag run hub docker load-balancing docker-swarm-mode

hub - docker run



Cómo se realiza el equilibrio de carga en el modo Docker-Swarm (1)

Estoy trabajando en un proyecto para configurar una arquitectura en la nube usando docker-swarm. Sé que con Swarm podría implementar réplicas de un servicio, lo que significa que se ejecutarán múltiples contenedores de esa imagen para atender las solicitudes.

También leí que la ventana acoplable tiene un equilibrador de carga interno que administra esta distribución de solicitudes.

Sin embargo, necesito ayuda para entender lo siguiente:

Digamos que tengo un contenedor que expone un servicio como una API REST o digo que es una aplicación web. Y si tengo varios contenedores (réplicas) implementados en el enjambre y tengo otros contenedores (ejecutando algunas aplicaciones) que hablan con este servicio HTTP / REST.

Luego, cuando escribo esas aplicaciones, ¿qué combinación de IP: PORT utilizo? ¿Es alguna de las direcciones IP del nodo trabajador que ejecuta estos servicios? ¿Se encargará de distribuir la carga de manera adecuada incluso entre otros trabajadores / gerentes que ejecutan el mismo servicio?

¿O debería llamar al administrador que a su vez se encarga de enrutar adecuadamente (incluso si el nodo del administrador no tiene un contenedor que ejecute este servicio específico)?

Gracias.


Cuando escribo esas aplicaciones, ¿qué combinación de IP: PORT utilizo? ¿Es alguna de las direcciones IP del nodo trabajador que ejecuta estos servicios?

Puede usar cualquier nodo que esté participando en el enjambre, incluso si no hay ninguna réplica del servicio en cuestión que existe en ese nodo. Así que Node:HostPort combinación Node:HostPort . La malla de enrutamiento de ingreso enrutará la solicitud a un contenedor activo.

Una imagen vale diez mil palabras

¿Se encargará de distribuir la carga de manera adecuada incluso entre otros trabajadores / gerentes que ejecutan el mismo servicio?

El controlador de ingreso hará round robin por defecto.

Ahora los clientes deben usar dns round robin para acceder al servicio en los nodos de enjambre de la ventana acoplable. Se producirá el problema clásico de caché de DNS. Para evitar eso podemos usar balanceadores de carga externos como HAproxy.