Ricerca nel sito web

Come installare il cluster RabbitMQ su Ubuntu 22.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

Su questa pagina

  1. Prerequisiti
  2. Macchine di preparazione
  3. Installazione del server RabbitMQ
  4. Abilitazione del plug-in di gestione RabbitMQ
  5. Impostazione del firewall UFW
  6. Impostazione del cluster RabbitMQ
  7. Impostazione dell'amministratore di RabbitMQ
  8. Impostazione del mirroring della coda classica
  9. Accesso al cluster RabbitMQ tramite il plug-in di gestione
  10. Conclusione

RabbitMQ è un broker di messaggi gratuito e open source. Supportando più protocolli di messaggio, RabbitMQ è il broker di messaggi più utilizzato su Internet. Supporta protocolli come AMQP, STOMP, MQTT, HTTP e WebSocket, oltre a RabbitMQ Stream.

RabbitMQ è completamente conforme allo standard JMS 1.1 ed è adatto a una varietà di scenari di sviluppo, da ambienti di distribuzione piccoli, medi e grandi.

In qualità di broker di messaggi, RabbitMQ si trova tra le applicazioni e consente loro di comunicare tra loro in modo asincrono, affidabile e conveniente. RabbitMQ fornisce l'archiviazione temporanea tra le applicazioni e protegge dalla perdita di dati.

In questo tutorial, installeremo e configureremo il server RabbitMQ tra più macchine Ubuntu 22.04. Imparerai anche come configurare un utente amministratore per RabbitMQ e configurare il mirroring della coda classico tramite la policy HA.

Prerequisiti

Per completare questa guida, avrai bisogno dei seguenti requisiti:

  • Due o più server Ubuntu 22.04: questo esempio utilizza tre macchine Ubuntu, rabbitmq1, rabbitmq2 e rabbitmq3.
  • Un utente non root con privilegi di amministratore sudo/root.

Preparare le macchine

Prima di iniziare, aggiornerai e aggiornerai i tuoi repository di sistema. Quindi impostare il file /etc/hosts su ciascun server in modo che il server possa connettersi tramite il nome host del sistema.

Aggiorna e aggiorna il repository dei pacchetti Ubuntu tramite il comando apt di seguito.

sudo apt update

Successivamente, modifica il file /etc/hosts tramite il comando nano editor di seguito.

sudo nano /etc/hosts

Aggiungi la seguente configurazione e assicurati di modificare ogni indirizzo IP e nome host con i dettagli dell'ambiente corrente.

192.168.5.21    rabbitmq1
192.168.5.22    rabbitmq2
192.168.5.23    rabbitmq3

Salva il file ed esci dall'editor quando hai finito. Con tutti i server Ubuntu preparati, installerai RabbitMQ e configurerai il cluster.

Installazione del server RabbitMQ

Dopo aver preparato le tue macchine Ubuntu, sarai ora pronto per installare il server RabbitMQ su tutte le macchine di destinazione. Il repository Ubuntu 22.04 predefinito fornisce la versione più recente e stabile di RabbitMQ che può essere facilmente installata tramite APT.

Esegui il comando apt di seguito per aggiornare e aggiornare l'indice del tuo pacchetto Ubuntu.

Installa RabbitMQ tramite il seguente comando apt di seguito.

sudo apt install rabbitmq-server

Questo richiederà la conferma, inserire y per confermare e premere INVIO per procedere.

Dopo l'installazione di RabbitMQ, eseguire il seguente comando systemctl per verificare il servizio RabbitMQ e assicurarsi che sia abilitato e in esecuzione.

sudo systemctl is-enabled rabbitmq-server
sudo systemctl status rabbitmq-server

L'output: puoi vedere che RabbitMQ è in esecuzione ed è abilitato. RabbitMQ verrà eseguito automaticamente all'avvio.

Ora che il server RabbitMQ è installato, abiliterai il plug-in RabbitMQ rabbitmq_management.

Abilitazione del plug-in di gestione RabbitMQ

RabbitMQ fornisce un plug-in di gestione che consente di gestire e monitorare nodi e cluster RabbitMQ tramite il browser Web. Il plug-in rabbitmq_management è un'API basata su HTTP con funzionalità simili allo strumento della riga di comando rabbitmqadmin.

Prima di iniziare a configurare il cluster RabbitMQ, abiliterai il plug-in rabbitmq_management sui tuoi computer di destinazione.

Abilita il plug-in RabbitMQ rabbitmq_management utilizzando il seguente comando rabbitmq-plugins. Il seguente comando abiliterà anche i plugin richiesti per rabbitmq_management.

sudo rabbitmq-plugins enable rabbitmq_management

Successivamente, riavvia il servizio RabbitMQ per applicare le nuove modifiche e il plug-in rabbitmq_management è abilitato.

sudo systemctl restart rabbitmq-server

Il plug-in predefinito rabbitmq_management è ora in esecuzione sulla porta predefinita 15672. Esegui il seguente comando ss per assicurarti che la porta rabbitmq_management 15672 sia aperta.

ss -plnt

L'output: la porta rabbitmq_management è attiva e aperta.

Configurazione del firewall UFW

Dopo aver configurato abilitato il plug-in RabbitMQ Management, configurerai il firewall UFW su tutti i sistemi. L'installazione predefinita di Ubuntu viene fornita con il pacchetto UFW installato, quindi puoi facilmente avviare e abilitare il processo del firewall UFW.

Eseguire il seguente comando ufw per aggiungere il servizio OpenSSH e abilitare il firewall ufw.

sudo ufw allow OpenSSH
sudo ufw enable

Quando viene richiesta la conferma, inserire y per confermare e premere INVIO per procedere. E il firewall ufw ora dovrebbe essere in esecuzione e abilitato.

Successivamente, apri alcune porte TCP per il cluster RabbitMQ tramite il seguente comando ufw. Quindi, ricarica il firewall ufw per applicare le nuove modifiche.

sudo ufw allow 15672/tcp
sudo ufw allow 5672/tcp
sudo ufw allow 4369/tcp
sudo ufw allow 25672/tcp
sudo ufw reload

Infine, esegui il seguente comando ufw per verificare che le porte RabbitMQ siano state aggiunte al firewall ufw.

sudo ufw status

L'output: alcune porte che verranno utilizzate per il cluster RabbitMQ aggiunto al firewall ufw.

Configurazione del cluster RabbitMQ

Dopo aver abilitato il plug-in rabbitmq_management e aver configurato il firewall ufw, inizierai ora a creare e configurare il cluster RabbitMQ tramite il comando rabbitmqctl.

In ogni installazione di RabbitMQ, è presente un file .erlangcooke disponibile nella directory /var/lib/rabbitmq. Per impostare il cluster, devi assicurarti che tutti i nodi del cluster abbiano lo stesso file di .erlang.cookie.

Per questo esempio, il rabbitmq1 verrà utilizzato come primo cluster iniziale, quindi dovrai copiare/trasferire il file .erlang.cookie su entrambi i server rabbitmq2 e rabbitmq3.

Sul server rabbitmq1, esegui il seguente comando per verificare il file .erlang.cookie e assicurati che sia disponibile.

ls -lah /var/lib/rabbitmq/

Successivamente, copia/trasferisci il file .erlang.cookie su entrambi i server rabbitmq2 e rabbitmq3. Questo esempio utilizza un comando SCP per copiare il file .erlang.cookie sul server 192.168.5.22 e 192.168.5.23.

scp /var/lib/rabbitmq/.erlang.cookie :/var/lib/rabbitmq/

Dopo che il file .erlang.cookie è stato copiato/trasferito, sposta la sessione del server funzionante su rabbitmq2 e rabbitmq3.

Esegui il seguente comando sia su rabbitmq2 che su rabbitmq3 per riavviare il servizio RabbitMQ e applicare le nuove modifiche. Quindi, arresta l'applicazione RabbitMQ.

sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app

Di seguito è riportato l'output dal server rabbitmq2.

Di seguito è riportato l'output dal server rabbitmq3.

Successivamente, aggiungi i server rabbitmq2 e rabbitmq3 al cluster RabbitMQ tramite il seguente comando. Quindi, avvia l'applicazione RabbitMQ.

sudo rabbitmqctl join_cluster 
sudo rabbitmqctl start_app

Di seguito è riportato l'output quando rabbitmq2 si unisce al cluster RabbitMQ e avvia l'applicazione RabbitMQ.

Di seguito è riportato l'output quando rabbitmq3 si unisce al cluster RabbitMQ e avvia l'applicazione RabbitMQ.

Infine, torna al server rabbitmq1 ed esegui il seguente comando per verificare lo stato del cluster RabbitMQ.

sudo rabbitmqctl cluster_status

Vedrai quindi che il cluster RabbitMQ è stato creato con tre nodi rabbitmq1, rabbitmq2 e rabbitmq3. Puoi anche visualizzare la versione corrente di RabbitMQ su ciascun nodo e lo stato di manutenzione dei nodi nel cluster.

Configurazione dell'amministratore di RabbitMQ

Con il cluster RabbitMQ creato, ora creerai e configurerai un nuovo utente amministratore per il server RabbitMQ tramite rabbitmqctl, la riga di comando principale per la gestione del server RabbitMQ.

Esegui il seguente comando per aggiungere un nuovo utente RabbitMQ. Questo esempio aggiungerà l'utente alice a RbbitMQ. Inoltre, è necessario modificare la password con quella nuova.

sudo rabbitmqctl add_user alice password

Successivamente, il comando seguente rende il nuovo utente alice un amministratore nel cluster RabbitMQ.

sudo rabbitmqctl set_user_tags alice administrator

Imposta l'autorizzazione per l'utente alice per tutte le entità all'interno del cluster RabbitMQ.

sudo rabbitmqctl set_permissions -p / alice ".*" ".*" ".*"

Ora esegui il comando seguente per eliminare l'utente guest predefinito dall'installazione di RabbitMQ.

sudo rabbitmqctl delete_user guest

Verifica l'elenco degli utenti disponibili su RabbitMQ. Vedrai quindi che il nuovo utente alice viene creato e può essere utilizzato come amministratore per il server RabbitMQ.

sudo rabbitmqctl list_users

A questo punto, hai terminato l'installazione e la configurazione del cluster RabbitMQ e hai configurato l'amministratore per RabbitMQ. Successivamente, configurerai il mirroring della coda classico tramite le politiche RabbitMQ.

Impostazione del mirroring della coda classica

RabbitMQ offre due modi per configurare le code di mirroring, puoi utilizzare il mirroring delle code classico tramite la politica RabbitMQ o configurare utilizzando le code del quorum.

Per questo esempio, imparerai come impostare il mirroring delle code tramite le policy RabbitMQ.

Esegui il seguente comando per creare un nuovo criterio ha-all. Questa policy consente di eseguire il mirroring di tutte le code tra i nodi del cluster RabbitMQ.

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

Ora, se desideri specificare le code di cui eseguire il mirroring nel cluster. Questo esempio creerà una nuova policy ha-two- che rispecchierà tutte le code con il nome two.

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

Infine, puoi anche creare una nuova policy che ti consenta di configurare le code per il mirroring su nodi specifici nel cluster RabbitMQ. In questo esempio creerai una nuova policy ha-nodes che rispecchierà tutte le code con il nome nodes. a nodi specifici rabbitmq2 e rabbitmq3.

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

Verifica l'elenco delle policy sul tuo cluster RabbitMQ tramite il seguente comando. Vedrai quindi che le policy ha-all, ha-two e ha-nodes sono disponibili sul cluster RabbitMQ.

sudo rabbitmqctl list_policies

Accesso al cluster RabbitMQ tramite il plug-in di gestione

Apri il tuo browser web e visita l'indirizzo IP del server seguito dalla porta RabbitMQ predefinita 15672 (ad esempio: http://192.168.5.21). Otterrai quindi la pagina di accesso di RabbitMQ.

Accedi con il nuovo utente e la password che hai creato e fai clic su Accedi.

Ora dovresti vedere la dashboard di amministrazione di RabbitMQ fornita dal plug-in rabbitmq_management.

Successivamente, fai clic sulla scheda Admin e fai clic su Criteri per verificare che i criteri RabbitMQ che hai creato siano disponibili.

Nello screenshot qui sotto, puoi vedere tre diversi criteri, ha-all, ha-two e ha-nodes.

Conclusione

Congratulazioni! Ora hai installato il server RabbitMQ e configurato il cluster RabbitMQ con tre server Ubuntu 22.04. Inoltre, hai configurato il firewall UFW per proteggere la distribuzione di RabbitMQ, configurato anche l'utente amministratore per RabbitMQ e creato un mirroring della coda classico sul cluster RabbitMQ tramite criteri RabbitMQ.

Con questo in atto, ora puoi utilizzare RabbitMQ come broker di messaggi per la tua applicazione e infrastruttura. Tuttavia, puoi anche portare la distribuzione di RabbitMQ al livello successivo impostando code di quorum, proteggendo RabbitMQ tramite TLS e molto altro.