RabbitMQ es un software de intermediario de mensajes empresariales gratuito y de código abierto. Está escrito en Erlang e implementa el Protocolo avanzado de cola de mensajes (AMQP). Proporciona bibliotecas de clientes en todos los principales lenguajes de programación. Admite múltiples protocolos de mensajería, colas de mensajes, reconocimiento de entrega, enrutamiento flexible a las colas, múltiples tipos de intercambio. También proporciona HTTP-API fácil de usar, una herramienta de línea de comandos y una interfaz de usuario web para administrar RabbitMQ.
En este tutorial, instalaremos RabbitMQ en el servidor CentOS 7.
Requisito previo
- Servidor CentOS 7 mínimo
- Privilegios de raíz. Esta guía está escrita como usuario root, si ha iniciado sesión como usuario sudo, ejecute sudo -i.
Actualizar sistema base
Antes de instalar cualquier paquete, se recomienda que actualice los paquetes y el repositorio con el siguiente comando.
yum -y update
Una vez que su sistema esté actualizado, continúe para instalar Erlang.
Instalar Erlang
RabbitMQ está escrito en lenguaje Erlang, en este tutorial instalaremos la última versión de Erlang en el servidor. Erlang no está disponible en el repositorio YUM predeterminado, por lo tanto, deberá instalar el repositorio EPEL. Ejecute el siguiente comando para lo mismo.
yum -y install epel-release
yum -y update
Ahora instale Erlang usando el siguiente comando.
yum -y install erlang socat
Ahora puede verificar la versión de Erlang usando el siguiente comando.
erl -version
Obtendrá el siguiente resultado.
[[email protected] ~]# erl -version Erlang (ASYNC_THREADS,HIPE) (BEAM) emulator version 5.10.4
Para cambiar al shell Erlang, puede escribir el siguiente comando.
erl
El shell cambiará y obtendrá el siguiente resultado.
Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] Eshell V5.10.4 (abort with ^G) 1>
Puedes salir del shell presionando ctrl + C dos veces. Erlang ahora está instalado en su sistema, ahora puede proceder a instalar RabbitMQ.
Instalar RabbitMQ
RabbitMQ proporciona un paquete RPM para sistemas Linux empresariales que están precompilados y se pueden instalar directamente. La única dependencia requerida era instalar Erlang en el sistema. Como hemos instalado Erlang, podemos continuar para descargar RabbitMQ. Descargue el paquete Erlang RPM ejecutando.
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
Si no tiene wget instalado, puede ejecutar yum -y install wget. Siempre puede encontrar el enlace a la última versión de la página de descarga de RabbitMQ.
Importe la clave GPG ejecutando:
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
Instale el paquete RPM ejecutando:
rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm
RabbitMQ ya está instalado en su sistema.
Iniciando RabbitMQ
Puede iniciar el proceso del servidor RabbitMQ ejecutando el siguiente comando.
systemctl start rabbitmq-server
Para iniciar RabbitMQ automáticamente en el momento del arranque, ejecute el siguiente comando.
systemctl enable rabbitmq-server
Para verificar el estado del servidor RabbitMQ, ejecute:
systemctl status rabbitmq-server
Debería obtener el siguiente resultado si se inició correctamente.
? rabbitmq-server.service - RabbitMQ broker Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2017-07-15 18:59:14 UTC; 3min 22s ago Main PID: 29006 (beam.smp) Status: "Initialized" CGroup: /system.slice/rabbitmq-server.service ??29006 /usr/lib64/erlang/erts-9.0/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K tr... ??29149 /usr/lib64/erlang/erts-9.0/bin/epmd -daemon ??29283 erl_child_setup 1024 ??29303 inet_gethost 4 ??29304 inet_gethost 4 Jul 15 18:59:13 centos rabbitmq-server[29006]: Starting broker... Jul 15 18:59:14 centos rabbitmq-server[29006]: systemd unit for activation check: "rabbitmq-server.service" Jul 15 18:59:14 centos systemd[1]: Started RabbitMQ broker. Jul 15 18:59:14 centos rabbitmq-server[29006]: completed with 0 plugins.
Modificar reglas de firewall y SELinux
Si tiene firewalld instalado y ejecutándose, deberá permitir el puerto 8161 a través del firewall. Ejecute el siguiente comando para lo mismo.
firewall-cmd --zone=public --permanent --add-port=4369/tcp
firewall-cmd --zone=public --permanent --add-port=25672/tcp
firewall-cmd --zone=public --permanent --add-port=5671-5672/tcp
firewall-cmd --zone=public --permanent --add-port=15672/tcp
firewall-cmd --zone=public --permanent --add-port=61613-61614/tcp
firewall-cmd --zone=public --permanent --add-port=1883/tcp
firewall-cmd --zone=public --permanent --add-port=8883/tcp
firewall-cmd --reload
Si tiene habilitado SELinux, deberá ejecutar el siguiente comando para permitir el servicio RabbitMQ.
setsebool -P nis_enabled 1
Acceder a la consola web
Habilite la consola de administración web RabbitMQ ejecutando:
rabbitmq-plugins enable rabbitmq_management
Proporcione la propiedad de los archivos de RabbitMQ al usuario de RabbitMQ ejecutando:
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
Ahora deberá crear un usuario administrativo para la consola de administración web RabbitMQ. Ejecute los siguientes comandos para el mismo.
rabbitmqctl add_user admin StrongPassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Cambie admin a su nombre de usuario preferido para el usuario administrador. Asegúrese de cambiar StrongPassword a una contraseña muy segura.
Para acceder al panel administrativo de RabbitMQ, use su navegador web favorito y abra la siguiente URL.
http://Your_Server_IP:15672/
Verá la siguiente página de inicio de sesión.
Una vez que haya iniciado sesión, verá el panel administrativo.
Puede encontrar la lista de usuarios, hosts virtuales, políticas en Admin pestaña del tablero. Debe eliminar el Invitado usuario por consideraciones de seguridad.
Puede encontrar la lista de colas de mensajes en Colas pestaña. Puede crear una nueva cola o eliminar una existente a través de esta interfaz.
Puede encontrar la lista de conexiones actuales en Conexiones pestaña
De igual forma, puedes encontrar los canales y los intercambios en sus respectivas pestañas.
Conclusión
Ahora puede instalar fácilmente RabbitMQ para la cola de mensajes entre los procesos, servidores y clientes. Para obtener más información sobre RabbitMQ, puede navegar por el sitio de RabbitMQ.