GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare il cluster RabbitMQ su Ubuntu 20.04

RabbitMQ è un software broker di messaggistica gratuito, open source e multiprotocollo scritto nel linguaggio di programmazione Erlang. Un broker di messaggi viene utilizzato per archiviare i messaggi per un'applicazione. Quando un'applicazione invia dati a un'altra applicazione, l'app pubblica il messaggio nel broker di messaggi. RabbitMQ supporta più protocolli di messaggistica e può essere facilmente distribuito in configurazioni distribuite. Il broker di messaggi funge da intermediario per varie applicazioni Web e viene utilizzato per ridurre i carichi e i tempi di consegna dell'applicazione Web.

In questo tutorial, imposteremo un cluster RabbitMQ a tre nodi sul server Ubuntu 20.04.

Prerequisiti

  • Tre server con Ubuntu 20.04.
  • Su ciascun server è configurata una password di root.

Per iniziare

Prima di iniziare, dovrai aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornarli eseguendo il seguente comando su ciascun nodo:

apt-get update -y

Una volta aggiornati tutti i pacchetti, sarà necessario impostare il file /etc/hosts su ciascun nodo. Così possono comunicare tra loro tramite il nome host.

Modifica il file /etc/hosts su ogni nodo con il seguente comando:

nano /etc/hosts

Aggiungi le seguenti righe:

192.168.0.10 node1
192.168.0.11 node2
192.168.0.12 node3

Salva e chiudi il file quando hai finito. Successivamente, puoi procedere al passaggio successivo.

Installa il server RabbitMQ

Successivamente, dovrai installare il pacchetto RabbitMQ Server su ciascun nodo. Puoi installarlo semplicemente eseguendo il seguente comando:

apt-get install rabbitmq-server -y

Una volta installato, avvia il servizio RabbitMQ e abilitalo all'avvio al riavvio del sistema con il seguente comando:

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

Puoi anche verificare lo stato del servizio RabbitMQ con il seguente comando:

systemctl status rabbitmq-server

Dovresti ottenere il seguente output:

? rabbitmq-server.service - RabbitMQ Messaging Server
     Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-07-21 06:25:07 UTC; 19min ago
   Main PID: 2565 (beam.smp)
     Status: "Initialized"
      Tasks: 87 (limit: 2353)
     Memory: 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

Jul 21 06:24:58 node1 systemd[1]: Starting RabbitMQ Messaging Server...
Jul 21 06:25:07 node1 systemd[1]: rabbitmq-server.service: Supervising process 2565 which is not our child. We'll most likely not notice when >
Jul 21 06:25:07 node1 systemd[1]: Started RabbitMQ Messaging Server.

A questo punto, il server RabbitMQ è installato ed è in esecuzione su ogni nodo. Ora puoi procedere al passaggio successivo.

Abilita plug-in di gestione RabbitMQ

Il plug-in di gestione RabbitMQ fornisce un'API basata su HTTP che può essere utilizzata per monitorare e gestire nodi e cluster RabbitMQ tramite un browser web. Per impostazione predefinita, è in esecuzione sulla porta TCP 15672.

Puoi abilitare il plug-in di gestione RabbitMQ eseguendo il seguente comando su ciascun nodo:

rabbitmq-plugins enable rabbitmq_management

Dovresti vedere il seguente output:

Enabling plugins on node [email protected]:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to [email protected]
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.

Quindi, riavvia il servizio RabbitMQ per applicare le modifiche:

systemctl restart rabbitmq-server

Puoi verificare la porta in ascolto con il seguente comando:

netstat -tunelp | grep 15672

Dovresti vedere il seguente output:

tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      109        23155      2565/beam.smp

Impostazione del cluster RabbitMQ

Per impostazione predefinita, il file /var/lib/rabbitmq/.erlang.cookie è lo stesso su ogni nodo. Per configurare il cluster RabbitMQ, dovrai copiare il file /var/lib/rabbitmq/.erlang.cookie dal node1 ad altri nodi.

Sul node1, esegui il comando seguente per copiare il file /var/lib/rabbitmq/.erlang.cookie negli altri nodi.

scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/

Successivamente, dovrai configurare node1 e node2 per unirsi al cluster node1.

Innanzitutto, riavvia il servizio RabbitMQ e arresta l'app con il comando seguente sia su node2 che su node3:

systemctl restart rabbitmq-server
rabbitmqctl stop_app

Sul nodo2, unisciti al cluster sul nodo1 eseguendo il comando seguente:

rabbitmqctl join_cluster [email protected]

Dovresti vedere il seguente output:

Clustering node [email protected] with [email protected]

Sul node2, avvia l'app con il seguente comando:

rabbitmqctl start_app

Dovresti vedere il seguente output:

Starting node [email protected] ...
 completed with 3 plugins.

Sul nodo3, unisciti al cluster sul nodo1 eseguendo il comando seguente:

rabbitmqctl join_cluster [email protected]

Dovresti vedere il seguente output:

Clustering node [email protected] with [email protected]

Sul node3, avvia l'app con il seguente comando:

rabbitmqctl start_app

Dovresti vedere il seguente output:

Starting node [email protected] ...
 completed with 3 plugins.

Al termine, controlla lo stato del cluster eseguendo il comando seguente su node1:

rabbitmqctl cluster_status

Dovresti vedere il seguente output:

Cluster status of node [email protected] ...
Basics

Cluster name: [email protected]

Disk Nodes

[email protected]
[email protected]
[email protected]

Running Nodes

[email protected]
[email protected]
[email protected]

Versions

[email protected]: RabbitMQ 3.8.2 on Erlang 22.2.7
[email protected]: RabbitMQ 3.8.2 on Erlang 22.2.7
[email protected]: RabbitMQ 3.8.2 on Erlang 22.2.7

Alarms

(none)

Network Partitions

(none)

Listeners

Node: [email protected], interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: [email protected], interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: [email protected], interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: [email protected], interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: [email protected], interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: [email protected], interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: [email protected], interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: [email protected], interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: [email protected], interface: [::], port: 15672, protocol: http, purpose: HTTP API

Feature flags

Flag: drop_unroutable_metric, state: disabled
Flag: empty_basic_get_metric, state: disabled
Flag: implicit_default_bindings, state: enabled
Flag: quorum_queue, state: enabled
Flag: virtual_host_metadata, state: enabled

Imposta utente amministratore

Successivamente, dovrai creare un nuovo utente amministratore per il server RabbitMQ ed eliminare l'utente "ospite" predefinito.

Puoi creare un nuovo utente chiamato "hitesh" e password "password" eseguendo il seguente comando su node1:

rabbitmqctl add_user hitesh password

Dovresti vedere il seguente output:

Adding user "hitesh" ...

Quindi, configura l'utente hitesh come amministratore con il seguente comando:

rabbitmqctl set_user_tags hitesh administrator

Dovresti vedere il seguente output:

Setting tags for user "hitesh" to [administrator] ...

Quindi, concedi all'utente hitesh il permesso di modificare, scrivere e leggere tutti i vhost.

rabbitmqctl set_permissions -p / hitesh ".*" ".*" ".*"

Dovresti vedere il seguente output:

Setting permissions for user "hitesh" in vhost "/" ...

Quindi, elimina l'utente ospite con il seguente comando:

rabbitmqctl delete_user guest

Dovresti ottenere il seguente comando:

Deleting user "guest" ...

Ora puoi elencare tutti gli utenti con il seguente comando:

rabbitmqctl list_users

Dovresti ottenere il seguente output:

Listing users ...
user	tags
hitesh	[administrator]

L'utente che hai creato sul nodo1 verrà automaticamente replicato su tutti i nodi del cluster.

Mirroring della coda di configurazione di RabbitMQ

Per impostazione predefinita, i contenuti di una coda si trovano su un singolo nodo. Quindi dovrai configurare il cluster "ha policy" per il mirroring della coda e la replica su tutti i nodi del cluster.

Per fare ciò, crea una policy ha denominata 'ha-all' che tutte le code nel cluster RabbitMQ eseguiranno il mirroring su tutti i nodi del cluster.

rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'

Uscita:

Setting policy "ha-all" for pattern ".*" to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...

Quindi, crea una politica ha denominata "ha-two" in cui tutti i nomi di coda iniziano con "due". eseguirà il mirroring sui due nodi del cluster.

rabbitmqctl set_policy ha-two "^two\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

Uscita:

Setting policy "ha-two" for pattern "^two\." to "{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}" with priority "0" for vhost "/" ...

Quindi, crea una politica di alta disponibilità denominata "ha-nodes" che conterrà tutte le code in cui il nome inizia con "nodes". Eseguiremo il mirroring su due nodi specifici 'nodo2' e 'nodo3' nel cluster.

rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'

Uscita:

Setting policy "ha-nodes" for pattern "^nodes\." to "{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}" with priority "0" for vhost "/" ...

È ora possibile elencare tutti i criteri configurati eseguendo il comando seguente:

rabbitmqctl list_policies;

Dovresti vedere il seguente output:

Listing policies for vhost "/" ...
vhost	name	pattern	apply-to	definition	priority
/	ha-all	.*	all	{"ha-mode":"all"}	0
/	ha-two	^two\.	all	{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}	0
/	ha-nodes	^nodes\.	all	{"ha-mode":"nodes","ha-params":["[email protected]","[email protected]"]}	0

Una volta terminato, puoi procedere al passaggio successivo.

Accedi al cluster RabbitMQ

Ora puoi accedere all'interfaccia web di RabbitMQ digitando l'indirizzo IP di qualsiasi nodo nel tuo browser web con la porta 15672 come http://192.168.0.10:15672/. Dovresti vedere la pagina di accesso di RabbitMQ:

Fornisci il nome utente e la password dell'amministratore e fai clic su Accedi pulsante. Dovresti vedere la dashboard di RabbitMQ nella schermata seguente:

Quindi, fai clic su "Amministratore ' e fai clic su 'Norme ' menù. Dovresti vedere tutte le policy di RabbitMQ che abbiamo creato nella schermata seguente:

Conclusione

Congratulazioni! hai impostato correttamente il cluster RabbitMQ a tre nodi sul server Ubuntu20.04. Il tuo cluster ora condivide le informazioni di configurazione, comprese le informazioni sulla topologia e sulla sicurezza su tutti i nodi.


Ubuntu
  1. Come installare Logstash su Ubuntu 18.04

  2. Come configurare WireGuard VPN su Ubuntu 20.04

  3. Ubuntu:come impostare un IP statico in Ubuntu?

  4. Come configurare MySQL Cluster su Ubuntu

  5. Come installo e configuro Git su Ubuntu?

Come installare Syncthing su Ubuntu 20.04

Come installare Usermin su Ubuntu 20.04

Come installare Podman su Ubuntu 20.04

Come configurare OpenVPN su Ubuntu 20.04

Come installare RabbitMQ in Ubuntu 20.04

Come configurare il cluster RabbitMQ su Ubuntu/Debian Linux