GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit RabbitMQ Cluster na Ubuntu 20.04

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]"]} 0

Jakmile 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.


Ubuntu
  1. Jak nainstalovat Logstash na Ubuntu 18.04

  2. Jak nastavit WireGuard VPN na Ubuntu 20.04

  3. Jak na Ubuntu nainstaluji a nastavím Git?

  1. Jak nainstalovat Redis na Ubuntu 20.04 / 18.04

  2. Ubuntu – Jak nastavit statickou IP v Ubuntu?

  3. Jak nastavit MySQL Cluster na Ubuntu

  1. Jak nastavit server OpenVPN na Ubuntu 18.04

  2. Jak nastavit DNS Nameservery na Ubuntu 18.04

  3. Jak nastavit WireGuard VPN na Ubuntu 18.04