RabbitMQ
Este documento describe la configuración e implementación del servicio RabbitMQ en el servidor gaia-williams-rmq-prod.
Descripción general
RabbitMQ es un broker de mensajería que permite comunicación asíncrona entre microservicios mediante colas.
En esta implementación se ejecuta en un contenedor Docker, con persistencia de datos en disco y el plugin de administración habilitado.
Ubicación y despliegue
- Servidor:
gaia-williams-rmq-prod - Script de inicio:
/root/apps/rabbitmq/start.sh - Contenedor:
rabbitmq - Imagen usada:
rabbitmq:4.0-management
El contenedor se despliega con el siguiente script:
docker stop rabbitmq; docker rm rabbitmq; docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 --hostname rabbitmq --memory=2g -e RABBITMQ_NODENAME=rabbit@rabbitmq -v /root/apps/rabbitmq/data:/var/lib/rabbitmq --restart unless-stopped rabbitmq:4.0-management
Configuración principal
-
Puertos expuestos:
5672→ Puerto de conexión para clientes y aplicaciones.15672→ Puerto de acceso al panel de administración web.
-
Persistencia de datos:
Los datos de RabbitMQ se almacenan en el directorio local:
/root/apps/rabbitmq/data→ montado en/var/lib/rabbitmqdentro del contenedor. -
Memoria asignada:
El contenedor tiene un límite de 2 GB de RAM. -
Reinicio automático:
Configurado con--restart unless-stoppedpara asegurar alta disponibilidad.
Acceso al panel de administración
El panel de administración web de RabbitMQ está habilitado gracias a la imagen rabbitmq:management.
Se accede en la siguiente URL:
http://<IP-del-servidor>:15672
Desde ahí se pueden gestionar colas, exchanges, usuarios y monitorear el uso del sistema.
Operación y mantenimiento
Iniciar/Detener el servicio
El contenedor puede controlarse con los siguientes comandos:
# Detener RabbitMQ
docker stop rabbitmq
# Iniciar RabbitMQ
docker start rabbitmq
# Reiniciar RabbitMQ
docker restart rabbitmq
Logs del servicio
Para visualizar los logs del contenedor:
docker logs -f rabbitmq
Persistencia
Los datos (colas, mensajes, configuraciones) se guardan en:
/root/apps/rabbitmq/data
Esto asegura que, aunque el contenedor se reinicie o recree, la información no se pierde.