RabbitMQ je open source software pro zprostředkovatele zpráv, který původně implementoval protokol AMQP (Advanced Message Queuing Protocol), a přestože byl vyvinut a rozšířen, aby podporoval další protokoly, jako je STOMP (Streaming Text Oriented Messaging Protocol) a MQTT ( Přenos telemetrie ve frontě zpráv).
K odesílání a přijímání zpráv mezi distribuovanými systémy, aplikacemi a službami se používá software pro řazení zpráv / zprostředkovatele zpráv. RabbitMQ je napsán v programovacím jazyce Erlang, nabízí podporu klientských rozhraní a knihoven pro všechny hlavní programovací jazyky včetně Pythonu, NodeJS, Java, PHP atd.
V tomto tutoriálu vám ukážu, jak nastavit klastr RabbitMQ na serveru Ubuntu 18.04. Nainstaluji si RabbitMQ Cluster pomocí tří serverů Ubuntu, povolím správu RabbitMQ a nastavím zásady HA pro všechny uzly.
Předpoklady
- 3 nebo více serverů Ubuntu 18.04
- 10.0.15.21 hakase-ubuntu01
- 10.0.15.22 hakase-ubuntu02
- 10.0.15.23 hakase-ubuntu03
- Oprávnění uživatele root
Co uděláme?
- Nastavit soubor Hosts
- Nainstalujte RabbitMQ Server
- Povolit moduly plug-in pro správu
- Nastavení brány UFW Firewall
- Nastavení RabbitMQ Cluster
- Nastavit nového administrátora
- RabbitMQ Setup Queue Mirroring
- Testování
Krok 1 – Nastavení souboru hostitelů
V tomto kroku upravíme soubor '/etc/hosts' na všech serverech a namapujeme IP adresu každého serveru jako název hostitele.
Upravte soubor '/etc/hosts' pomocí editoru vim.
sudo vim /etc/hosts
Nyní tam vložte následující konfiguraci.
10.0.15.21 hakase-ubuntu01 10.0.15.22 hakase-ubuntu02 10.0.15.23 hakase-ubuntu03
Uložte a ukončete.
Krok 2 – Instalace RabbitMQ Server
Před instalací serveru RabbitMQ se ujistěte, že jsou všechna úložiště aktualizována.
Spusťte následující příkaz.
sudo apt update
sudo apt upgrade
Nyní nainstalujte serverové balíčky RabbitMQ z úložiště Ubuntu pomocí příkazu apt níže.
sudo apt install rabbitmq-server -y
A po dokončení instalace spusťte službu RabbitMQ a povolte její spuštění při každém startu systému.
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
RabbitMQ Server byl nainstalován na Ubuntu 18.04.
Krok 3 – Povolení modulů RabbitMQ Management Plugins
V tomto kroku povolíme pluginy pro správu RabbitMQ. Je to rozhraní, které vám umožňuje monitorovat a ovládat RabbitMQ server z webového prohlížeče běžícího na výchozím TCP portu '15672'.
Povolte pluginy pro správu RabbitMQ spuštěním příkazu níže.
sudo rabbitmq-plugins enable rabbitmq_management
Ujistěte se, že nedošlo k žádné chybě, a poté restartujte službu RabbitMQ.
sudo systemctl restart rabbitmq-server
Pluginy RabbitMQ Management byly povoleny.
Krok 4 – Nastavení brány UFW Firewall
V tomto tutoriálu povolíme firewall Ubuntu UFW. Potřebujeme otevřít některé porty, které bude používat server RabbitMQ.
Přidejte službu ssh do brány firewall UFW a povolte službu brány firewall.
sudo ufw allow ssh
sudo ufw enable
Nyní přidejte nové tcp porty RabbitMQ '5672,15672,4369,25672'.
sudo ufw allow 5672,15672,4369,25672/tcp
Poté zkontrolujte seznam portů brány firewall UFW.
sudo ufw status
Konfigurace Ubuntu UFW firewallu byla dokončena a jsme připraveni nastavit RabbitMQ Cluster.
Krok 5 – Nastavení klastru RabbitMQ
Abychom mohli nastavit klastr RabbitMQ, musíme se ujistit, že soubor '.erlang.cookie' je stejný na všech uzlech. Zkopírujeme soubor '.erlang.cookie' v adresáři '/var/lib/rabbitmq' z 'hakase-ubuntu01' do jiného uzlu 'hakase-ubuntu02' a 'hakase-ubuntu03'.
Zkopírujte soubor '.erlang.cookie' pomocí příkazů scp z 'hakase-ubuntu01'.
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
Ujistěte se, že na obou serverech není žádná chyba.
Dále musíme nastavit 'hakase-ubuntu02' a 'hakase-ubuntu03', abychom se připojili ke clusteru 'hakase-ubuntu01'.
Poznámka:
- Spusťte níže uvedené příkazy na serverech hakase-ubuntu02' a 'hakase-ubuntu03'.
Restartujte službu RabbitMQ a zastavte aplikaci.
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
Nyní nechte server RabbitMQ na obou uzlech připojit se ke clusteru na 'hakase-ubuntu01' a poté spusťte aplikaci.
sudo rabbitmqctl join_cluster [email protected]
sudo rabbitmqctl start_app
Po dokončení zkontrolujte stav clusteru RabbitMQ.
sudo rabbitmqctl cluster_status
A získáte výsledky, jak je uvedeno níže.
Byl vytvořen RabbitMQ Cluster, jehož členy jsou hakase-ubuntu01, hakase-ubuntu02 a hakase-ubuntu03.
Krok 6 – Nastavení nového administrátora
V tomto tutoriálu vytvoříme nového administrátora pro náš server RabbitMQ a smažeme výchozího „hostujícího“ uživatele. Vytvoříme nového uživatele z 'hakase-ubuntu01' a bude automaticky replikován do všech uzlů v clusteru.
Přidejte nového uživatele s názvem „hakase“ s heslem „[email protected]“.
sudo rabbitmqctl add_user hakase [email protected]
Nastavte uživatele 'hakase' jako správce.
sudo rabbitmqctl set_user_tags hakase administrator
A udělte uživateli 'hakase' oprávnění upravovat, zapisovat a číst všechny vhosts.
sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"
Nyní smažte výchozího „hostujícího“ uživatele.
sudo rabbitmqctl delete_user guest
A zkontrolujte všechny dostupné uživatele.
sudo rabbitmqctl list_users
A dostanete výsledek, jak je uvedeno níže.
Byl vytvořen nový administrátor RabbitMQ a výchozí uživatel „host“ je smazán.
Krok 7 – RabbitMQ Setup Queue Mirroring
Ve výchozím nastavení je obsah fronty v klastru RabbitMQ umístěn na jediném uzlu (uzlu, na kterém byla fronta deklarována).
Toto nastavení je nutné, musíme nakonfigurovat cluster „ha policy“ pro zrcadlení fronty a replikaci do všech uzlů clusteru. Pokud selže uzel, který je hostitelem hlavního serveru front, nejstarší zrcadlo bude povýšeno na nový hlavní server, pokud bude synchronizováno, v závislosti na zásadách 'ha-mode' a 'ha-params'.
Níže je několik příkladů zásad RabbitMQ ha.
Nastavení má zásady s názvem 'ha-all', které budou všechny fronty v clusteru RabbitMQ zrcadlit do všech uzlů v clusteru.
sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
Nastavení má zásadu s názvem 'ha-two', přičemž všechny názvy fronty začínají 'dvě'. bude zrcadlit do dvou uzlů v clusteru.
sudo rabbitmqctl set_policy ha-two "^two\." \
'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
Nastavte zásadu vysoké dostupnosti s názvem 'ha-nodes', která bude obsahovat všechny fronty, kde název začíná 'nodes'. Budeme zrcadlit dva specifické uzly 'hakase-ubuntu02' a 'hakase-ubuntu03' v clusteru.
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'
Seznam RabbitMQ má zásady.
sudo rabbitmqctl list_policies;
RabbitMQ odstranit konkrétní zásady ha.
sudo rabbitmqctl clear_policy ha-two
Krok 8 – Testování
Otevřete webový prohlížeč a zadejte IP adresu uzlu s portem '15672'.
http://10.0.15.21:15672/
Zadejte uživatelské jméno „hakase“ s heslem „[email protected]“.
A získáte ovládací panel správce RabbitMQ, jak je znázorněno níže.
Stav všech uzlů clusteru je v provozu.
Nyní klikněte na nabídku karty „Správce“ a poté na postranní nabídku „Uživatelé“.
A dostanete uživatele hakase na seznam.
Nyní klikněte na nabídku karty 'Správce' a poté na boční nabídku 'Zásady'.
A získáte všechny zásady RabbitMQ ha, které jsme vytvořili.
Instalace a konfigurace RabbitMQ Cluster na serverech Ubuntu 18.04 byly úspěšně dokončeny.