RabbitMQ è un software di brokeraggio di messaggi open source che implementa originariamente il protocollo AMQP (Advanced Message Queuing Protocol), mentre è stato sviluppato ed esteso per supportare altri protocolli come STOMP (Streaming Text Oriented Messaging Protocol) e MQTT (Message Accodamento del trasporto di telemetria).
RabbitMQ è il software di accodamento messaggi che offre supporto per l'invio e la ricezione di messaggi tra sistemi distribuiti, applicazioni e servizi. È scritto con il linguaggio di programmazione Erlang e supporta interfacce client e librerie per tutti i principali linguaggi di programmazione inclusi Python, NodeJS, Java, PHP ecc.
In questo tutorial, ti mostrerò passo dopo passo come configurare il cluster RabbitMQ su un server CentOS 7. Configurare il cluster RabbitMQ utilizzando tre server CentOS, abilitare la gestione RabbitMQ e configurare la politica HA per tutti i nodi.
Prerequisiti
- 3 o più server CentOS 7
- 10.0.15.21 nodo01
- 10.0.15.22 nodo02
- 10.0.15.23 nodo03
- Privilegi di root
Cosa faremo?
- File di configurazione degli host
- Installa il server RabbitMQ
- Abilita i plug-in di gestione RabbitMQ
- Configura Firewalld
- Impostazione del cluster RabbitMQ
- Configura un nuovo utente amministratore
- Imposta il mirroring della coda di RabbitMQ
- Test
Passaggio 1 - Configurazione del file host
In questo passaggio, modificheremo il file '/etc/hosts' su tutti i server e mapperemo ogni indirizzo IP del server come nome host.
Modifica il file '/etc/hosts' utilizzando l'editor vim.
sudo vim /etc/hosts
Ora incolla lì la seguente configurazione.
10.0.15.21 node01 10.0.15.22 node02 10.0.15.23 node03
Salva ed esci.
Passaggio 2 - Installa il server RabbitMQ
In questo passaggio, installeremo i pacchetti RabbitMQ Server dal repository EPEL (Extra Packages for Enterprise Linux).
Aggiungi il repository EPEL al sistema CentOS 7.
sudo yum -y install epel-release
Ora installa RabbitMQ Server su tutti i nodi 'node01', 'node02' e 'node03' usando il comando yum di seguito.
sudo yum -y install rabbitmq-server
E al termine dell'installazione, avvia il servizio RabbitMQ e abilitalo per l'avvio ogni volta all'avvio del sistema.
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
Il server RabbitMQ è stato installato su tutti i cluster di nodi CentOS 7.
Passaggio 3 - Abilita i plug-in di gestione RabbitMQ
In questo passaggio, abiliteremo i plug-in di gestione di RabbitMQ. È un'interfaccia che ti consente di monitorare e gestire il server RabbitMQ dal browser web, in esecuzione sulla porta TCP predefinita '15672'.
Abilita i plug-in di gestione di RabbitMQ eseguendo il comando seguente.
sudo rabbitmq-plugins enable rabbitmq_management
Assicurati che non ci siano errori, quindi riavvia il servizio RabbitMQ.
sudo systemctl restart rabbitmq-server
E la Gestione RabbitMQ è stata abilitata.
Passaggio 4 - Configura CentOS Firewalld
In questo tutorial, abiliteremo il servizio firewalld CentOS, quindi dobbiamo aprire la porta utilizzata dal server RabbitMQ.
Apriremo la porta che utilizza il server RabbitMQ '5672', la porta per la gestione RabbitMQ '15672' e le porte per il cluster RabbitMQ '4369, 25672'.
Esegui i seguenti comandi firewalld.
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
Ora ricarica firewalld e controlla tutte le porte aperte nell'elenco.
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
La configurazione del firewalld CentOS è stata completata e siamo pronti per configurare il cluster RabbitMQ.
Passaggio 5:configurazione del cluster RabbitMQ
Per configurare il cluster RabbitMQ, dobbiamo assicurarci che il file '.erlang.cookie' sia lo stesso su tutti i nodi. Copieremo il file '.erlang.cookie' nella directory '/var/lib/rabbitmq' da 'node01' all'altro nodo 'node02' e 'node03'.
Copia il file '.erlang.cookie' usando i comandi scp dal 'node01'.
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
Assicurati che non ci siano errori su entrambi i server.
Successivamente, dobbiamo configurare 'node02' e 'node03' per entrare a far parte del cluster 'node01'.
Esegui tutti i comandi seguenti sui server 'node02' e 'node03'.
Riavvia il servizio RabbitMQ e arresta l'app.
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
Ora lascia che il server RabbitMQ su entrambi i nodi si unisca al cluster su "node01", quindi avvia l'app.
sudo rabbitmqctl join_cluster [email protected]
sudo rabbitmqctl start_app
Al termine, controlla lo stato del cluster RabbitMQ.
sudo rabbitmqctl cluster_status
E otterrai i risultati come mostrato di seguito.
Sul 'nodo02'.
Sul 'nodo03'.
Il Cluster RabbitMQ è stato creato, con node01, node02 e node03 come membri.
Passaggio 6:crea un nuovo utente amministratore
In questo tutorial creeremo un nuovo utente amministratore per il nostro server RabbitMQ ed elimineremo l'utente "ospite" predefinito. Creeremo un nuovo utente da 'node01' e verrà automaticamente replicato su tutti i nodi del cluster.
Aggiungi un nuovo utente chiamato "hakase" con la password "[email protected]".
sudo rabbitmqctl add_user hakase [email protected]
Configura l'utente 'hakase' come amministratore.
sudo rabbitmqctl set_user_tags hakase administrator
E concedi all'utente 'hakase' il permesso di modificare, scrivere e leggere tutti i vhost.
sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"
Ora elimina l'utente "ospite" predefinito.
sudo rabbitmqctl delete_user guest
E controlla tutti gli utenti disponibili.
sudo rabbitmqctl list_users
E otterrai il risultato come mostrato di seguito.
È stato creato un nuovo utente RabbitMQ e l'utente predefinito "ospite" è stato eliminato.
Passaggio 7 - Mirroring della coda di configurazione di RabbitMQ
Questa configurazione è necessaria, è necessario configurare il cluster "ha policy" per il mirroring della coda e la replica su tutti i nodi del cluster. Se il nodo che ospita il queue master si guasta, il mirror più vecchio verrà promosso al nuovo master purché sia sincronizzato, dipende dalle politiche 'ha-mode' e 'ha-params'.
Di seguito sono riportati alcuni esempi sulle politiche di RabbitMQ ha.
Imposta la policy ha denominata 'ha-all' di cui tutte le code nel cluster RabbitMQ eseguiranno il mirroring su tutti i nodi del cluster.
sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
Imposta la politica ha denominata 'ha-two' in cui tutti i nomi di coda iniziano con 'two.' eseguirà il mirroring sui due nodi del cluster.
sudo rabbitmqctl set_policy ha-two "^two\." \
'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
Imposta la politica ha denominata 'ha-nodes' in cui tutti i nomi di coda iniziano con 'nodi.' eseguirà il mirroring su due nodi specifici 'node02' e 'node03' sul cluster.
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'
Ora controlla tutte le politiche disponibili usando il comando qui sotto.
sudo rabbitmqctl list_policies;
E se vuoi rimuovere la politica, usa il seguente comando.
sudo rabbitmqctl clear_policy ha-two
Fase 8 - Test
Apri il tuo browser web e digita l'indirizzo IP del nodo con la porta '15672'.
http://10.0.15.21:15672/
Digita il nome utente "hakase" con la password "[email protected]".
E otterrai la dashboard di amministrazione di RabbitMQ come di seguito.
Lo stato di tutti i nodi del cluster è attivo e funzionante.
Ora fai clic sul menu della scheda "Amministrazione" e fai clic sul menu "Utenti" a lato.
E otterrai l'utente hakase nell'elenco.
Ora fai clic sul menu della scheda "Amministrazione" e fai clic sul menu "Politiche" a lato.
E otterrai tutte le politiche RabbitMQ ha che abbiamo creato.
L'installazione e la configurazione di RabbitMQ Cluster sul server CentOS 7 sono state completate correttamente.