RabbitMQ je open source software pro zprostředkovatele zpráv, který původně implementuje 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 (Message Zařazení telemetrického přenosu do fronty).
RabbitMQ je software pro řazení zpráv, který nabízí podporu pro odesílání a přijímání zpráv mezi distribuovanými systémy, aplikacemi a službami. Je napsán programovacím jazykem Erlang a podporuje klientská rozhraní a knihovny pro všechny hlavní programovací jazyky včetně Pythonu, NodeJS, Java, PHP atd.
V tomto tutoriálu vám krok za krokem ukážu, jak nastavit RabbitMQ Cluster na serveru CentOS 7. Nastavíme RabbitMQ Cluster pomocí serverů Three CentOS, povolíme správu RabbitMQ a nastavíme politiku HA pro všechny uzly.
Předpoklady
- 3 nebo více serverů CentOS 7
- 10.0.15.21 uzel01
- 10.0.15.22 uzel02
- 10.0.15.23 uzel03
- Oprávnění uživatele root
Co uděláme?
- Nastavit soubor Hosts
- Nainstalujte RabbitMQ Server
- Povolte moduly RabbitMQ Management Plugins
- Nakonfigurujte bránu firewall
- Nastavení RabbitMQ Cluster
- Nakonfigurujte nového administrátora
- Nastavení RabbitMQ 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 node01 10.0.15.22 node02 10.0.15.23 node03
Uložte a ukončete.
Krok 2 – Instalace RabbitMQ Server
V tomto kroku nainstalujeme balíčky RabbitMQ Server z úložiště EPEL (Extra Packages for Enterprise Linux).
Přidejte úložiště EPEL do systému CentOS 7.
sudo yum -y install epel-release
Nyní nainstalujte RabbitMQ Server do všech uzlů 'node01', 'node02' a 'node03' pomocí příkazu yum níže.
sudo yum -y install rabbitmq-server
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 všech uzlových clusterech CentOS 7.
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
A správa RabbitMQ byla povolena.
Krok 4 – Konfigurace brány CentOS Firewalld
V tomto tutoriálu povolíme službu CentOS firewalld, takže musíme otevřít port, který používá server RabbitMQ.
Otevřeme port, který používá server RabbitMQ '5672', port pro správu RabbitMQ '15672' a porty pro cluster RabbitMQ '4369, 25672'.
Spusťte následující příkazy brány firewall.
sudo firewall-cmd --add-port=15672/tcp --permanent
sudo firewall-cmd --add-port=5672/tcp --permanent
sudo firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent
Nyní znovu načtěte firewall a zkontrolujte všechny otevřené porty v seznamu.
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Konfigurace CentOS firewalld 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 'node01' do jiného uzlu 'node02' a 'node03'.
Zkopírujte soubor '.erlang.cookie' pomocí příkazů scp z 'node01'.
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 'node02' a 'node03', abychom se připojili ke clusteru 'node01'.
Spusťte všechny níže uvedené příkazy na serverech 'node02' a 'node03'.
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 'node01' 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.
Na 'node02'.
Na uzlu 'node03'.
Byl vytvořen klastr RabbitMQ, jehož členy jsou node01, node02 a node03.
Krok 6 – Vytvoření 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 'node01' 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 ukázáno níže.
Byl vytvořen nový uživatel RabbitMQ a výchozí uživatel „host“ je smazán.
Krok 7 – RabbitMQ Setup Queue Mirroring
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ásleduje 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"}'
Nastavení má zásadu pojmenovanou 'ha-nodes', přičemž všechny názvy fronty začínají 'nodes'. bude zrcadlit do dvou specifických uzlů 'node02' a 'node03' v clusteru.
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'
Nyní zkontrolujte všechny dostupné zásady pomocí příkazu níže.
sudo rabbitmqctl list_policies;
A pokud chcete zásadu odstranit, použijte následující příkaz.
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 uvedeno 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 serveru CentOS 7 byla úspěšně dokončena.