RabbitMQ je bezplatný a otevřený software pro zprostředkovatele podnikových zpráv. Je napsán v Erlangu a implementuje Advanced Message Queuing Protocol (AMQP). Poskytuje klientské knihovny ve všech hlavních programovacích jazycích. Podporuje více protokolů zasílání zpráv, řazení zpráv do fronty, potvrzení doručení, flexibilní směrování do front, více typů výměn. Poskytuje také snadno použitelné HTTP-API, nástroj příkazového řádku a webové uživatelské rozhraní pro správu RabbitMQ.
V tomto tutoriálu nainstalujeme RabbitMQ na server CentOS 7.
Předpoklad
- Minimální server CentOS 7
- Oprávnění uživatele root. Tato příručka je napsána jako uživatel root, pokud jste přihlášeni jako uživatel sudo, spusťte sudo -i.
Aktualizovat základní systém
Před instalací jakéhokoli balíčku se doporučuje aktualizovat balíčky a úložiště pomocí následujícího příkazu.
yum -y update
Jakmile je váš systém aktualizován, pokračujte v instalaci Erlang.
Instalovat Erlang
RabbitMQ je napsán v jazyce Erlang, v tomto tutoriálu nainstalujeme nejnovější verzi Erlang na server. Erlang není k dispozici ve výchozím úložišti YUM, proto budete muset nainstalovat úložiště EPEL. Pro totéž spusťte následující příkaz.
yum -y install epel-release
yum -y update
Nyní nainstalujte Erlang pomocí následujícího příkazu.
yum -y install erlang socat
Nyní můžete zkontrolovat verzi Erlang pomocí následujícího příkazu.
erl -version
Získáte následující výstup.
[[email protected] ~]# erl -version Erlang (ASYNC_THREADS,HIPE) (BEAM) emulator version 5.10.4
Chcete-li přepnout do prostředí Erlang, můžete zadat následující příkaz.
erl
Shell se změní a dostanete následující výstup.
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>
Shell můžete opustit stisknutím ctrl + C dvakrát. Erlang je nyní nainstalován ve vašem systému, nyní můžete pokračovat v instalaci RabbitMQ.
Instalovat RabbitMQ
RabbitMQ poskytuje balíček RPM pro podnikové systémy Linux, které jsou předkompilovány a lze je přímo nainstalovat. Jedinou požadovanou závislostí bylo nainstalovat Erlang do systému. Jakmile jsme nainstalovali Erlang, můžeme pokračovat ve stahování RabbitMQ. Stáhněte si balíček Erlang RPM spuštěním.
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
Pokud nemáte nainstalovaný wget, můžete spustit yum -y install wget. Vždy můžete najít odkaz na nejnovější verzi stránky ke stažení RabbitMQ.
Importujte klíč GPG spuštěním:
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
Nainstalujte balíček RPM spuštěním:
rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm
RabbitMQ je nyní nainstalován ve vašem systému.
Spouštění RabbitMQ
Proces serveru RabbitMQ můžete spustit spuštěním následujícího příkazu.
systemctl start rabbitmq-server
Chcete-li automaticky spustit RabbitMQ při spouštění, spusťte následující příkaz.
systemctl enable rabbitmq-server
Chcete-li zkontrolovat stav serveru RabbitMQ, spusťte:
systemctl status rabbitmq-server
Při úspěšném spuštění byste měli získat následující výstup.
? 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.
Upravit firewall a pravidla SELinux
Pokud máte nainstalovaný a spuštěný firewall, budete muset povolit port 8161 přes firewall. Pro totéž spusťte následující příkaz.
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
Pokud máte povolený SELinux, budete muset spustit následující příkaz, abyste povolili službu RabbitMQ.
setsebool -P nis_enabled 1
Přístup k webové konzoli
Povolte konzolu pro správu webu RabbitMQ spuštěním:
rabbitmq-plugins enable rabbitmq_management
Poskytněte vlastnictví souborů RabbitMQ uživateli RabbitMQ spuštěním:
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
Nyní budete muset vytvořit administrativního uživatele pro webovou konzolu pro správu RabbitMQ. Pro totéž spusťte následující příkazy.
rabbitmqctl add_user admin StrongPassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Změňte administrátora na preferované uživatelské jméno pro administrátora. Nezapomeňte změnit StrongPassword na velmi silné heslo.
Pro přístup k administrativnímu panelu RabbitMQ použijte svůj oblíbený webový prohlížeč a otevřete následující URL.
http://Your_Server_IP:15672/
Zobrazí se následující přihlašovací stránka.
Jakmile se přihlásíte, zobrazí se vám administrativní panel.
Seznam uživatelů, virtuálních hostitelů a zásad naleznete na Admin záložce palubní desky. Měli byste smazat Host z bezpečnostních důvodů.
Seznam front zpráv najdete na Fronty tab. Prostřednictvím tohoto rozhraní můžete vytvořit novou frontu nebo odstranit stávající.
Seznam aktuálních připojení najdete na Připojení karta
Podobně můžete najít kanály a burzy na jejich příslušných kartách.
Závěr
Nyní můžete snadno nainstalovat RabbitMQ pro řazení zpráv mezi procesy, servery a klienty. Chcete-li se dozvědět více o RabbitMQ, můžete procházet web RabbitMQ.