Introducción
RabbitMQ es un intermediario de mensajes de propósito general establecido. Un corredor facilita el intercambio de mensajes entre un conjunto de microservicios distribuidos y les permite comunicarse de manera eficiente y confiable.
Kubernetes, con su enfoque centrado en API, es un operador ideal para implementar instancias de RabbitMQ en un clúster. Las capacidades de escalabilidad y la implementación automatizada de contenedores de Kubernetes mejoran la confiabilidad de RabbitMQ en un entorno de clúster ampliado.
Este tutorial le muestra cómo instalar una instancia de RabbitMQ en Kubernetes.
Requisitos previos
- Acceso a una ventana de terminal/línea de comando
- Un clúster de Kubernetes
- Los Kubernetes kubectl Herramienta CLI
Implementar RabbitMQ en Kubernetes
La instalación de soluciones de software avanzadas en un clúster de Kubernetes a menudo implica la creación y edición de varios archivos de configuración complejos.
Telmo , el administrador de paquetes de aplicaciones de Kubernetes, puede optimizar el proceso de instalación e implementar recursos en todo el clúster muy rápidamente. Para implementar RabbitMQ con éxito, tendremos que instalar el administrador de paquetes Helm.
Instalar el administrador de paquetes de Helm
Use el siguiente comando para instalar la última versión de Helm en su clúster local de Kubernetes:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Una vez que se haya completado el proceso de instalación, inicie el administrador de paquetes Helm escribiendo el siguiente comando:
helm init
Ahora puede usar Helm para implementar recursos en un clúster con unos pocos comandos breves.
Cree un espacio de nombres para la implementación de RabbitMQ
Todos los recursos de Kubernetes se inician en un espacio de nombres. A menos que se especifique uno, el sistema utiliza el espacio de nombres predeterminado. Para tener un mejor control sobre el proceso de implementación, use el siguiente comando para crear un espacio de nombres distinto:
kubectl create namespace rabbit
Puede utilizar cualquier nombre compatible con DNS. El espacio de nombres que creamos se llama:conejo.
El sistema confirma que el espacio de nombres se ha creado correctamente.
Instalar RabbitMQ en Kubernetes
Con Helm instalado correctamente y un espacio de nombres designado, está listo para iniciar el proceso de implementación de RabbitMQ. Ingrese el siguiente comando para aplicar un estable/rabbitmq predeterminado gráfico de un repositorio de git:
helm install mu-rabbit stable/rabbitmq --namespace rabbit
El comando implementa RabbitMQ en el clúster de Kubernetes en la configuración predeterminada. El deployment se ejecuta en el rabbit espacio de nombres creado previamente.
El terminal proporciona la información que necesita para acceder a la interfaz de administración de RabbitMQ desde sus navegadores, como las credenciales, el número de puerto y la URL.
Comprobar el estado de aprovisionamiento de RabbitMQ
Los contenedores pueden tardar unos minutos en desplegarse. El estado completo de la secuencia de aprovisionamiento puede confirmar si una implementación fue exitosa. Para revisar los detalles de la implementación, ingrese el siguiente comando:
watch kubectl get deployments,pods,services --namespace rabbit
Un caparazón dentro de la terminal proporciona los detalles para el espacio de nombres de conejo.
Una vez que esté listo para salir del shell de monitoreo, presione Ctrl+C .
Configurar servidor RabbitMQ
La configuración del servidor RabbitMQ y sus complementos se editan dentro de los archivos de configuración de RabbitMQ.
Puede usar su editor de texto preferido para acceder y configurar rabbitmq.conf expediente. La sintaxis del archivo de configuración usa sysctl
formato, y hay varios principios básicos a seguir:
- El sistema no ejecuta líneas que comienzan con un
#
carácter, ya que los considera un comentario - Puede definir solo una configuración por línea
- Las líneas usan una Clave =Valor simple estructura
El rabbitmq.conf le permite definir la mayoría de los elementos de configuración necesarios, como puertos, umbrales de memoria, espacio en disco o permisos para conectarse al intermediario.
El repositorio de origen del servidor RabbitMQ proporciona un ejemplo completo de un archivo rabbitmq.conf con comentarios detallados. Es importante tener en cuenta que este archivo de ejemplo representa una guía general y debe adaptarse para reflejar las necesidades específicas de su sistema.
Configuración del complemento de administración de RabbitMQ para habilitar la GUI
El complemento de administración RabbitMQ ya está disponible en la distribución predeterminada. Utilice los rabbitmq-plugins
comando para habilitar el servicio:
rabbitmq-plugins enable rabbitmq_management
Acceda a la interfaz gráfica de RabbitMQ utilizando la IP y el número de puerto del servidor RabbitMQ. Introduzca el siguiente formato de ubicación web en su navegador:
http://rabbitmq-ip-or-server-name:15672/
La IP y el número de puerto se proporcionaron durante el proceso de instalación.
El servicio le pide sus credenciales. Para obtener acceso a la interfaz de usuario, debe ingresar su nombre de usuario y contraseña. En las nuevas instalaciones de RabbitMQ, el nombre de usuario y la contraseña predeterminados están predefinidos como "invitado".
Ahora tiene acceso a un entorno fácil de usar que le permite administrar hosts virtuales, colas, permisos e intercambios.
¿Cómo funciona RabbitMQ en Kubernetes?
El propósito mismo de Kubernetes es orquestar servicios y automatizar trabajos en un clúster altamente distribuido. Un agente de mensajería como RabbitMQ puede mejorar la calidad de las tareas de ejecución prolongada y estabilizar procesos vitales en segundo plano.
RabbitMQ utiliza el Protocolo avanzado de cola de mensajes (AMQP) para estandarizar la mensajería entre productores, corredores y consumidores.
- Un productor publica un mensaje en Exchange .
- El Exchange formatea el mensaje y lo reenvía a una Cola predefinida y seleccionada .
- Un consumidor luego recupera el mensaje formateado y lo consume.
La distribución sistemática de mensajes mejora la comunicación entre aplicaciones y servicios débilmente acoplados.