Cómo exponer múltiples aplicaciones de contenedores en el mismo puerto con equilibrio de carga

Cómo exponer múltiples aplicaciones de contenedores en el mismo puerto con equilibrio de carga
La utilidad de la línea de comandos de composición de Docker de la solución Docker nos permite ejecutar múltiples aplicaciones de contenedores y otros microservicios en contenedores separados. Pero es imposible ejecutar directamente más de un contenedor en el mismo puerto. Para este propósito, los usuarios de Docker usan diferentes técnicas, como algunos esquemas de enrutamiento, SO_REUSEPORT o Balanceo de proxy/carga inversa.

Este blog ilustrará cómo exponer e implementar múltiples aplicaciones de contenedores en el mismo puerto utilizando el equilibrio de carga.

Cómo exponer múltiples aplicaciones de contenedores en el mismo puerto con equilibrio de carga?

El equilibrio de carga o el proxy inverso es una técnica para distribuir el tráfico de diferentes contenedores en un servidor. El equilibrio de carga puede usar diferentes algoritmos de enrutamiento, como el algoritmo de round robin, para asignar el tiempo de correo no deseado para ejecutar el primer contenedor, luego el segundo contenedor, y nuevamente vuelva al primer contenedor, y así sucesivamente. Esto puede aumentar la disponibilidad, capacidad y confiabilidad de la aplicación.

Para la ilustración, utilice el procedimiento mencionado.

Paso 1: Crea DockerFile

Primero, cree un DockerFile para contener la aplicación. Por ejemplo, hemos definido las instrucciones para contener el "principal.ir"Aplicación:

De Golang: 1.8
WorkDir/Go/SRC/App
Copia principal.ir .
Ejecutar ir compilación -o servidor web .
PUNTO DE ENTRADA ["./Servidor web"]

Aquí tenemos dos diferentes "principal.ir"Programas en dos directorios diferentes. En nuestro escenario, el primer programa utilizará DockerFile para configurar el servicio:

El segundo programa también tiene el mismo dockerfile en su directorio. Usando este archivo, hemos creado la nueva imagen de Docker "GO1-IMAGE"Eso se utilizará para configurar el segundo servicio en el archivo de composición. Para crear o construir la imagen, puede revisar nuestro artículo asociado:

Paso 2: Crear archivo de composición

A continuación, cree un archivo de composición llamado "compuesto de acopolador.YML"Archivo que contiene las siguientes instrucciones:

  • "servicios"Configure los tres servicios diferentes"web","Web1", y "nginx". El servicio "web" ejecutará el primer programa, el servicio "Web1" ejecutará el segundo programa y "nginx"Se ejecutará como saldo de carga para equilibrar o administrar el tráfico desde diferentes contenedores.
  • "Web" utilizará DockerFile para contenedorizar el servicio. Sin embargo, el servicio "Web1" utilizará la imagen "GO1-IMG"Para contener el segundo programa.
  • "volúmenesLa tecla se utiliza para conectar el Nginx.Archivo conf a la nginx contenedor para aguas arriba los servicios.
  • "depende de"La clave especifica que la"nginx"El servicio depende de los servicios" web "y" web1 ".
  • "puerto"La clave define el puerto de exposición del equilibrador de carga NGINX donde se ejecutarán los servicios ascendentes:
Versión: "Alpine"
servicios:
web:
construir: .
Web1:
Imagen: GO1-IMG
Nginx:
Imagen: Nginx: Último
Volúmenes:
- ./nginx.conf:/etc/nginx/nginx.conf: Ro
depende de:
- web
- Web1
Puertos:
- 8080: 8080

Paso 3: Crear "Nginx.archivo conf ”

Después de eso, cree el "nginx.confusión"Archivo y configure los servicios ascendentes, el puerto de escucha del equilibrador de carga y defina el proxy"http: // all/"Para administrar los servicios ascendentes:

usuario nginx;
eventos
Worker_Connections 1000;

http
aguas arriba todos
Web del servidor: 8080;
Servidor Web1: 8080;

servidor
Escucha 8080;
ubicación /
proxy_pass http: // all/;


Paso 4: enciende los contenedores

Ejecutar el "Docker-compuesto"Comando para encender los servicios en contenedores separados. Aquí "-escala"La opción se usa para generar las dos réplicas del primero o"web" servicio:

Docker -compuesto up -scale web = 2

Para la verificación, vaya al puerto de exposición del "nginx"Contenedor de servicio y verifique si está aceptando la transmisión de los servicios especificados o no:

Desde la salida dada anteriormente, se puede observar que hemos ejecutado con éxito múltiples contenedores o servicios en el mismo puerto.

Conclusión

Para ejecutar o exponer las múltiples aplicaciones de contenedores en el mismo puerto utilizando un equilibrador de carga/proxy inverso, primero, cree un "nginx.confusión"Archivo para configurar las configuraciones de Balancer de carga, como servicios ascendentes, puertos de escucha y proxy para aguas arriba del servicio. Luego, configure el servicio de equilibrio de carga en el archivo de composición. Este blog ha demostrado cómo exponer y ejecutar múltiples contenedores o servicios en el mismo puerto.