IAW - Práctica 17

IAW - Implantación de Aplicaciones Web

José Juan Sánchez Hernández

IES Celia Viñas (Almería) - 2022/2023

2 Práctica 17: Balanceo de carga con HAProxy

En esta práctica vamos a modificar los archivos docker-compose.yml que hemos creado en las prácticas 15 y 16, y vamos a incluir un nuevo contenedor Docker con HAProxy para balancear la carga de los contenedores que ejecutan la aplicación web.

Posteriormente deberá realizar la implantación de ambos sitios web en Amazon Web Services (AWS) haciendo uso de contenedores Docker y de la herramienta Docker Compose.

2.1 Cómo escalar los servicios definidos en un archivo docker-compose.yml

Cuando ejecutamos docker-compose tenemos la posibilidad de indicar el número de instancias que queremos tener de cada uno de los servicios que vamos a crear.

El comando sería el siguiente:

docker-compose up --scale SERVICE=NUM

Donde:

Ejemplo:

En el siguiente ejemplo estaríamos iniciando todos los servicios que están definidos en el archivo docker-compose.yml y para el servicio de wordpress estaríamos creando 4 instancias.

docker-compose up --scale wordpress=4

2.2 Ejemplo de un archivo docker-compose.yml con un balanceador de carga

A continuación se muestra un fragmento de un archivo docker-compose.yml que incluye un servicio de balanceo de carga con HAProxy que nos puede servir de ejemplo:

services:
  lb:
    image: dockercloud/haproxy <1>
    ports:
      - 80:80 <2>
      - 1936:1936 <3>
    links:
      - apache <4>
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock <5>

  apache:
    ...

<1> Utilizaremos la imagen dockercloud/haproxy que está disponible en Docker Hub.

<2> El puerto 80 será el puerto del servicio que queremos balancear.

<3> El puerto 1936 nos permite acceder a una página web con información estadística del balanceador.

<4> Creamos un enlace con el servicio que queremos balancear. Los enlaces permiten que los contenedores se descubran entre sí y transfieran de manera segura información sobre un contenedor a otro contenedor.

<5> Es necesario montar el socket UNIX del Docker daemon (/var/run/docker.sock) para que el contenedor lb pueda comunicarse con el Docker daemon y obtener información del resto de contenedores.

2.3 Archivo de configuración haproxy.cfg

El archivo de configuración que utiliza HAProxy es haproxy.cfg.

Localice el archivo haproxy.cfg dentro del contenedor que ejecuta el balanceo de carga y estudie los parámetros de configuración que está utilizando.

2.4 Referencias

3 Licencia

Licencia de Creative Commons
Esta página forma parte del curso Implantación de Aplicaciones Web de José Juan Sánchez y su contenido se distribuye bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.