7.1 Estudiando la red overlay
La red overlay
— es una red distribuida de Docker que permite que los contenedores que se ejecutan en diferentes hosts interactúen entre sí. A menudo se utiliza en el contexto de la orquestación de contenedores como Docker Swarm o Kubernetes, para proporcionar comunicación entre los contenedores que se ejecutan en diferentes nodos. En esta lección veremos cómo crear y usar una red overlay
, además de ejemplos de su aplicación.
La red overlay
crea una red distribuida virtual sobre las redes existentes, uniendo varios hosts en un único espacio de red. Esto permite que los contenedores interactúen como si estuvieran en una misma red local, sin importar la ubicación física de los hosts.
Ventajas de usar la red overlay
:
- Comunicación entre contenedores en diferentes hosts: proporciona interacción en red entre los contenedores que se ejecutan en diferentes nodos.
- Aislamiento: permite crear espacios de red aislados para diferentes aplicaciones.
- Escalabilidad: admite la adición y eliminación dinámica de nodos sin interrupciones en el servicio.
7.2 Creación de una red overlay
Para crear una red overlay
primero tienes que inicializar un clúster de Docker Swarm
. Esto creará un nodo gestor (manager) y permitirá crear redes distribuidas.
Paso 1: Inicializar Docker Swarm
Ejecuta el comando en el host que será el gestor del clúster. Este comando inicializa el clúster Swarm
y muestra el comando para unir otros nodos al clúster.
docker swarm init
Paso 2: Unir nodos de trabajo al clúster
En otros hosts, ejecuta el comando que generó docker swarm init
para unirlos al clúster. Ejemplo del comando:
docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377
Paso 3: Crear la red overlay
Después de inicializar el clúster, crea la red overlay
utilizando el siguiente comando:
docker network create -d overlay my_overlay_network
Paso 4: Comprobar la red
Para verificar que la red se creó correctamente, ejecuta el comando docker network ls
, que mostrará una lista de todas las redes, incluyendo la nueva red overlay
:
docker network ls
Ejemplo del resultado:
NETWORK ID NAME DRIVER SCOPE
a1b2c3d4e5 my_overlay_network overlay swarm
Ahora la red my_overlay_network
está lista para usarse en aplicaciones distribuidas.
7.3 Uso de la red overlay
Ahora que la red está creada, puedes lanzar contenedores y servicios conectados a esta red.
Ejemplo de uso de la red overlay
para servicios
En Docker Swarm
puedes usar servicios para gestionar contenedores. Vamos a crear varios servicios que estarán conectados a la red overlay
.
Paso 1: Crear un servicio de servidor web
docker service create --name webserver --network my_overlay_network -p 8080:80 nginx
Este comando crea el servicio webserver
, conectado a la red my_overlay_network
. El servidor web estará disponible en la dirección http://localhost:8080.
Paso 2: Crear un servicio de base de datos
docker service create --name database --network my_overlay_network -e POSTGRES_PASSWORD=mysecretpassword postgres
Aquí se crea el servicio database
, conectado a la misma red, configurando la variable de entorno POSTGRES_PASSWORD
.
Paso 3: Comprobar conexión entre servicios
Lanza un contenedor temporal para comprobar la conexión entre los servicios:
docker run -it --network my_overlay_network busybox
Dentro del contenedor, usa comandos ping
para verificar la conexión con el servidor web y la base de datos:
ping webserver
ping database
Si la configuración está correcta, el ping mostrará una conexión exitosa, confirmando que los contenedores pueden interactuar usando nombres de hosts.
Paso 4: Verificar el estado de los servicios
Usa el comando docker service ls
para comprobar el estado de los servicios creados:
docker service ls
El resultado esperado mostrará información sobre los servicios lanzados, su estado y el número de réplicas.
Nota: La red overlay
permite que los contenedores en diferentes hosts intercambien datos, siempre que estén conectados al mismo clúster Swarm
.
7.4 Ejemplos de uso de redes overlay
en Docker Compose
Docker Compose
simplifica la gestión de aplicaciones multicontenedor y redes. Puedes definir una red overlay y usarla para la comunicación entre contenedores en el archivo docker-compose.yml
.
Ejemplo de archivo docker-compose.yml
:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my_overlay_network
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
networks:
- my_overlay_network
networks:
my_overlay_network:
driver: overlay
attachable: true
Ejecutando Docker Compose
:
docker stack deploy -c docker-compose.yml mystack
Este comando desplegará el stack usando el archivo docker-compose.yml
y creará servicios conectados a la red my_overlay_network
.
Consejos prácticos:
- Monitoreo de red: Usa herramientas de monitoreo de Docker Swarm, como Docker Dashboard o Prometheus, para seguir el estado de la red y la interacción entre los contenedores.
- Gestión de escalabilidad: La red overlay admite la adición y eliminación dinámica de nodos. Asegúrate de configurar adecuadamente los recursos de red para escalar aplicaciones.
- Respaldo de configuraciones: Guarda regularmente las configuraciones de redes y stacks para una recuperación rápida en caso de fallos.
GO TO FULL VERSION