RabbitMQ je bezplatný software zprostředkovatele zpráv s otevřeným zdrojovým kódem a více protokoly napsaný v programovacím jazyce Erlang. Zprostředkovatel zpráv se používá k ukládání zpráv pro aplikaci. Když aplikace odešle data jiné aplikaci, aplikace publikuje zprávu na zprostředkovateli zpráv. RabbitMQ podporuje více protokolů zasílání zpráv a lze je snadno nasadit v distribuovaných konfiguracích. Zprostředkovatel zpráv funguje jako prostředník pro různé webové aplikace a používá se ke snížení zatížení a doby doručení webové aplikace.
V tomto tutoriálu nastavíme tříuzlový RabbitMQ Cluster na serveru Ubuntu 20.04.
Předpoklady
- Tři servery se systémem Ubuntu 20.04.
- Na každém serveru je nakonfigurováno heslo uživatele root.
Začínáme
Než začnete, budete muset aktualizovat systémové balíčky na nejnovější verzi. Můžete je aktualizovat spuštěním následujícího příkazu na každém uzlu:
apt-get update -y
Jakmile jsou všechny balíčky aktualizovány, budete muset na každém uzlu nastavit soubor /etc/hosts. Mohou spolu tedy komunikovat pomocí názvu hostitele.
Upravte soubor /etc/hosts na každém uzlu pomocí následujícího příkazu:
nano /etc/hosts
Přidejte následující řádky:
192.168.0.10 uzel1192.168.0.11 uzel2192.168.0.12 uzel3
Po dokončení uložte a zavřete soubor. Dále můžete přejít k dalšímu kroku.
Instalovat RabbitMQ Server
Dále budete muset nainstalovat balíček RabbitMQ Server na každý uzel. Můžete jej nainstalovat pouhým spuštěním následujícího příkazu:
apt-get install rabbitmq-server -y
Po instalaci spusťte službu RabbitMQ a povolte její spuštění při restartu systému pomocí následujícího příkazu:
systemctl spustit králičímq-server
systemctl povolit králičímq-server
Stav služby RabbitMQ můžete také ověřit pomocí následujícího příkazu:
stav systemctl rabbitmq-server
Měli byste získat následující výstup:
? rabbitmq-server.service - RabbitMQ Messaging Server Načteno:načteno (/lib/systemd/system/rabbitmq-server.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od Út 2020-07-21 06:25:07 UTC; Před 19 minutami Hlavní PID:2565 (beam.smp) Stav:"Inicializováno" Úkoly:87 (limit:2353) Paměť:83,5M CGroup:/system.slice/rabbitmq-server.service ??2551 /bin/sh /usr/ sbin/rabbitmq-server ??2565 /usr/lib/erlang/erts-10.6.4/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1> ??2828 erl_child_setup 65536 ??2921 inet_gethost 4 ??2922 inet_gethost 4. července 21 06:24:58 node1 systemd[1]:Spouštění serveru zpráv RabbitMQ...21. července 06:25:07 systém node15:07 server.service:Dohlížející proces 2565, což není naše dítě. S největší pravděpodobností si nevšimneme, až>21. července 06:25:07 node1 systemd[1]:Spuštěn server RabbitMQ Messaging Server.
V tomto okamžiku je server RabbitMQ nainstalován a spuštěn na každém uzlu. Nyní můžete přejít k dalšímu kroku.
Povolit moduly RabbitMQ Management Plugins
Plugin pro správu RabbitMQ poskytuje API založené na HTTP, které lze použít k monitorování a správě uzlů a klastrů RabbitMQ prostřednictvím webového prohlížeče. Ve výchozím nastavení běží na TCP portu 15672.
Zásuvný modul pro správu RabbitMQ můžete povolit spuštěním následujícího příkazu na každém uzlu:
rabbitmq-plugins umožňují králičímq_management
Měli byste vidět následující výstup:
Povolení zásuvných modulů v uzlu [chráněno e-mailem]:rabbitmq_managementByly nakonfigurovány následující zásuvné moduly:králíkmq_management králíčímq_management_agent králíčímq_web_dispatchPoužití konfigurace zásuvného modulu na [e-mail chráněno]Byly povoleny následující zásuvné moduly:králíčímq_management_pre králíků_management králíčímq_patmqwebmanagement.
Poté restartujte službu RabbitMQ, aby se změny projevily:
systemctl restart rabbitmq-server
Naslouchací port můžete ověřit pomocí následujícího příkazu:
netstat -tunelp | grep 15672
Měli byste vidět následující výstup:
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 109 23155 2565/beam.smp
Nastavení klastru RabbitMQ
Ve výchozím nastavení je soubor /var/lib/rabbitmq/.erlang.cookie na každém uzlu stejný. Chcete-li nastavit cluster RabbitMQ, budete muset zkopírovat soubor /var/lib/rabbitmq/.erlang.cookie z node1 do jiných uzlů.
Na node1 spusťte následující příkaz pro zkopírování souboru /var/lib/rabbitmq/.erlang.cookie do ostatních uzlů.
scp /var/lib/rabbitmq/.erlang.cookie [chráněno e-mailem]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [chráněno e-mailem]:/var /lib/rabbitmq/
Dále budete muset nastavit node1 a node2, abyste se připojili ke clusteru node1.
Nejprve restartujte službu RabbitMQ a zastavte aplikaci pomocí následujícího příkazu na node2 i node3:
systemctl restart rabbitmq-server
rabbitmqctl stop_app
Na node2 se připojte ke clusteru na node1 spuštěním následujícího příkazu:
rabbitmqctl join_cluster [chráněno e-mailem]
Měli byste vidět následující výstup:
Clustering uzel [email protected] s [email protected]
Na node2 spusťte aplikaci následujícím příkazem:
rabbitmqctl start_app
Měli byste vidět následující výstup:
Počáteční uzel [chráněno e-mailem] ... dokončeno pomocí 3 pluginů.
Na node3 se připojte ke clusteru na node1 spuštěním následujícího příkazu:
rabbitmqctl join_cluster [chráněno e-mailem]
Měli byste vidět následující výstup:
Clustering uzel [email protected] s [email protected]
Na node3 spusťte aplikaci následujícím příkazem:
rabbitmqctl start_app
Měli byste vidět následující výstup:
Počáteční uzel [chráněno e-mailem] ... dokončeno pomocí 3 pluginů.
Po úspěšném dokončení zkontrolujte stav clusteru spuštěním následujícího příkazu na node1:
rabbitmqctl cluster_status
Měli byste vidět následující výstup:
Stav klastru uzlu [chráněno e-mailem] ...Základy Název klastru:[chráněno e-mailem]Uzly disku[chráněno e-mailem][chráněno e-mailem]Spuštěné uzly[chráněno e-mailem][chráněno e-mailem]Verze [chráněno e-mailem]:RabbitMQ 3.8.2 na Erlang 22.2.7[chráněno e-mailem]:RabbitMQ 3.8.2 na Erlang 22.2.7[chráněné e-mailem]:RabbitMQ 3.8.2 na Erlang 22.2.7 Alarmy (žádné) Síťové oddíly ListenersNode:[chráněno e-mailem], rozhraní:[::], port:25672, protokol:clustering, účel:komunikace mezi uzly a nástrojem CLI:[e-mailem chráněno], rozhraní:[::], port:5672, protokol:amqp, účel:AMQP 0-9-1 a AMQP 1.0Uzel:[chráněno e-mailem], rozhraní:[::], port:15672, protokol:http, účel:HTTP APINode:[chráněno e-mailem], rozhraní:[::], port:25672, protokol:shlukování, účel:komunikace mezi uzly a nástrojem CLIUzel:[chráněno e-mailem], rozhraní:[::], port:5672, protokol:amqp, účel:AMQP 0-9-1 a AMQP 1.0Uzel:[chráněno e-mailem], rozhraní:[::], port:15672, protokol:http, účel:HTTP APINode:[chráněno e-mailem], rozhraní:[::], port:25672, protokol:clustering, účel:komunikace mezi uzly a nástrojem CLIUzel:[chráněno e-mailem], rozhraní:[::], port:5672, protokol:amqp, účel:AMQP 0-9-1 a AMQP 1.0Node:[chráněno e-mailem], rozhraní:[::], port:15672, protokol:http, účel:HTTP APIFeature flagsFlag:drop_unroutable_metric, stav:disabledFlag:empty_basic_get_metric, state:disabledFlag:implicit_default_bindings, state:enabledFlag:quorum_queue, state:enabledFlag:virtual_host_metadata, state:enabled
Nastavení uživatele správce
Dále budete muset vytvořit nového administrátora pro server RabbitMQ a smazat výchozího „hostujícího“ uživatele.
Můžete vytvořit nového uživatele s názvem "hitesh" a heslo "password" spuštěním následujícího příkazu na node1:
rabbitmqctl add_user hitesh heslo
Měli byste vidět následující výstup:
Přidávání uživatele "hitesh" ...
Dále nakonfigurujte uživatele hitesh jako správce pomocí následujícího příkazu:
rabbitmqctl set_user_tags správce hitesh
Měli byste vidět následující výstup:
Nastavení značek pro uživatele „hitesh“ na [administrátor] ...
Dále udělte uživateli hitesh oprávnění upravovat, zapisovat a číst všechny vhosts.
rabbitmqctl set_permissions -p / hitesh ".*" ".*" ".*"
Měli byste vidět následující výstup:
Nastavení oprávnění pro uživatele "hitesh" ve vhost "/" ...
Dále odstraňte uživatele typu guest pomocí následujícího příkazu:
rabbitmqctl delete_user guest
Měli byste získat následující příkaz:
Mazání uživatele "host" ...
Nyní můžete zobrazit seznam všech uživatelů pomocí následujícího příkazu:
rabbitmqctl seznam_uživatelů
Měli byste získat následující výstup:
Výpis uživatelů ...uživatel tagshitesh [administrátor]
Váš uživatel, kterého jste vytvořili na node1, bude automaticky replikován do všech uzlů v clusteru.
RabbitMQ Setup Queue Mirroring
Ve výchozím nastavení je obsah fronty umístěn na jednom uzlu. Budete tedy muset nastavit cluster 'ha policy' pro zrcadlení fronty a replikaci do všech uzlů clusteru.
Chcete-li to provést, vytvořte zásadu ha s názvem 'ha-all', kterou budou všechny fronty v clusteru RabbitMQ zrcadlit do všech uzlů v clusteru.
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
Výstup:
Nastavení zásady "ha-all" pro vzor ".*" na "{"ha-mode":"all"}" s prioritou "0" pro vhost "/" ...
Dále vytvořte zásadu ha s názvem 'ha-two', přičemž všechny názvy fronty začínají na 'dvě'. bude zrcadlit do dvou uzlů v clusteru.
rabbitmqctl set_policy ha-two "^two\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
Výstup:
Nastavení zásady "ha-dva" pro vzor "^two\." na "{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}" s prioritou "0" pro vhost "/" ...
Dále vytvořte zásadu vysoké dostupnosti s názvem 'ha-nodes', která bude obsahovat všechny fronty, kde název začíná 'nodes'. Budeme zrcadlit do dvou specifických uzlů 'node2' a 'node3' v clusteru.
rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["[e-mail chráněn]", "[e-mail chráněn]"]}'
Výstup:
Nastavení zásady "ha-nodes" pro vzor "^nodes\." na "{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}" s prioritou "0" pro vhost "/" ...Nyní můžete vypsat všechny nakonfigurované zásady spuštěním následujícího příkazu:
rabbitmqctl list_policies;Měli byste vidět následující výstup:
Výpis zásad pro vhost "/" ...vhost název vzor použít-na definici priorita/ ha-all .* all {"ha-mode":"all"} 0/ ha-two ^dva\. vše {"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"} 0/ ha-nodes ^uzly\. all {"ha-mode":"nodes","ha-params":["[email protected]","[email protected]"]} 0Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Přístup ke klastru RabbitMQ
Nyní můžete přistupovat k webovému rozhraní RabbitMQ zadáním IP adresy libovolného uzlu do webového prohlížeče s portem 15672 jako http://192.168.0.10:15672/. Měli byste vidět přihlašovací stránku RabbitMQ:
Zadejte své administrátorské uživatelské jméno, heslo a klikněte na Přihlásit knoflík. Na následující obrazovce byste měli vidět řídicí panel RabbitMQ:
Dále klikněte na 'Admin ' a klikněte na 'Zásady ' Jídelní lístek. Na následující obrazovce byste měli vidět všechny zásady RabbitMQ ha, které jsme vytvořili:
Závěr
Gratulujeme! úspěšně jste nastavili tříuzlový cluster RabbitMQ na serveru Ubuntu20.04. Váš cluster nyní sdílí konfigurační informace včetně informací o topologii a zabezpečení napříč všemi uzly.
Jak nainstalovat platformu sociální sítě Friendica na Ubuntu 20.04 Nainstalujte a nakonfigurujte PHP OPcache na Ubuntu 20.04Ubuntu