GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer le cluster RabbitMQ sur Ubuntu 20.04

RabbitMQ est un logiciel de courtage de messagerie gratuit, open source et multiprotocole écrit dans le langage de programmation Erlang. Un courtier de messages est utilisé pour stocker des messages pour une application. Lorsqu'une application envoie des données à une autre application, l'application publie le message sur le courtier de messages. RabbitMQ prend en charge plusieurs protocoles de messagerie et peut être facilement déployé dans des configurations distribuées. Le courtier de messages agit en tant qu'intermédiaire pour diverses applications Web et est utilisé pour réduire les charges et les délais de livraison de l'application Web.

Dans ce didacticiel, nous allons configurer un cluster RabbitMQ à trois nœuds sur le serveur Ubuntu 20.04.

Prérequis

  • Trois serveurs exécutant Ubuntu 20.04.
  • Un mot de passe root est configuré sur chaque serveur.

Mise en route

Avant de commencer, vous devrez mettre à jour vos packages système vers la dernière version. Vous pouvez les mettre à jour en exécutant la commande suivante sur chaque nœud :

apt-get update -y

Une fois tous les packages mis à jour, vous devrez configurer le fichier /etc/hosts sur chaque nœud. Ils peuvent donc communiquer entre eux par nom d'hôte.

Modifiez le fichier /etc/hosts sur chaque nœud avec la commande suivante :

nano /etc/hosts

Ajoutez les lignes suivantes :

192.168.0.10 nœud1192.168.0.11 nœud2192.168.0.12 nœud3

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vous pouvez passer à l'étape suivante.

Installer le serveur RabbitMQ

Ensuite, vous devrez installer le package RabbitMQ Server sur chaque nœud. Vous pouvez l'installer en exécutant simplement la commande suivante :

apt-get install rabbitmq-server -y

Une fois installé, démarrez le service RabbitMQ et activez-le au redémarrage du système avec la commande suivante :

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

Vous pouvez également vérifier l'état du service RabbitMQ avec la commande suivante :

état de systemctl rabbitmq-server

Vous devriez obtenir le résultat suivant :

 ? rabbitmq-server.service - Serveur de messagerie RabbitMQ chargé :chargé (/lib/systemd/system/rabbitmq-server.service ; activé ; préréglage du fournisseur :activé) Actif :actif (en cours d'exécution) depuis le mar. 2020-07-21 06:25 :07 UTC ; Il y a 19min PID principal :2565 (beam.smp) Statut :"Initialisé" Tâches :87 (limite :2353) Mémoire :83,5 Mo 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 4juil 21 06:24:58 node1 systemd[1] :démarrage du serveur de messagerie RabbitMQ...juil 21 06:25:07 node1 systemd[1] :rabbitmq- server.service :Processus de supervision 2565 qui n'est pas notre enfant. Nous ne remarquerons probablement pas quand>21 juillet 06:25:07 node1 systemd[1] :Démarrage de RabbitMQ Messaging Server.

À ce stade, le serveur RabbitMQ est installé et en cours d'exécution sur chaque nœud. Vous pouvez maintenant passer à l'étape suivante.

Activer les plugins de gestion RabbitMQ

Le plug-in de gestion RabbitMQ fournit une API basée sur HTTP qui peut être utilisée pour surveiller et gérer les nœuds et les clusters RabbitMQ via un navigateur Web. Par défaut, il s'exécute sur le port TCP 15672.

Vous pouvez activer le plugin de gestion RabbitMQ en exécutant la commande suivante sur chaque nœud :

rabbitmq-plugins active rabbitmq_management

Vous devriez voir le résultat suivant :

Activation des plugins sur le nœud [email protected] :rabbitmq_managementLes plugins suivants ont été configurés :rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatchApplying plugin configuration to [email protected]Les plugins suivants ont été activés :rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatchstarted 3 plugins.

Ensuite, redémarrez le service RabbitMQ pour appliquer les modifications :

systemctl redémarrer rabbitmq-server

Vous pouvez vérifier le port d'écoute avec la commande suivante :

netstat -tunelp | grep 15672

Vous devriez voir le résultat suivant :

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

Configurer le cluster RabbitMQ

Par défaut, le fichier /var/lib/rabbitmq/.erlang.cookie est le même sur chaque nœud. Afin de configurer le cluster RabbitMQ, vous devrez copier le fichier /var/lib/rabbitmq/.erlang.cookie du node1 vers d'autres nodes.

Sur le node1, exécutez la commande suivante pour copier le fichier /var/lib/rabbitmq/.erlang.cookie sur les autres nodes.

scp /var/lib/rabbitmq/.erlang.cookie [protégé par e-mail] :/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [protégé par e-mail] :/var /lib/rabbitmq/

Ensuite, vous devrez configurer node1 et node2 pour rejoindre le cluster node1.

Tout d'abord, redémarrez le service RabbitMQ et arrêtez l'application avec la commande suivante sur node2 et node3 :

systemctl redémarrer rabbitmq-server
rabbitmqctl stop_app

Sur le nœud 2, rejoignez le cluster sur le nœud 1 en exécutant la commande suivante :

rabbitmqctl join_cluster [email protected]

Vous devriez voir le résultat suivant :

Nœud de clustering [email protected] avec [email protected]

Sur le node2, démarrez l'application avec la commande suivante :

rabbitmqctl start_app

Vous devriez voir le résultat suivant :

Nœud de départ [email protected] ... complété par 3 plugins.

Sur le nœud 3, rejoignez le cluster sur le nœud 1 en exécutant la commande suivante :

rabbitmqctl join_cluster [email protected]

Vous devriez voir le résultat suivant :

Nœud de clustering [email protected] avec [email protected]

Sur le node3, démarrez l'application avec la commande suivante :

rabbitmqctl start_app

Vous devriez voir le résultat suivant :

Nœud de départ [email protected] ... complété par 3 plugins.

Une fois que vous avez terminé, vérifiez l'état du cluster en exécutant la commande suivante sur node1 :

rabbitmqctl cluster_status

Vous devriez voir le résultat suivant :

Statut du cluster du nœud [email protected] ...BasicsNom du cluster :[email protected]Nœuds de disque[email protected][email protected][email protected]Nœuds en cours d'exécution[email protected][email protected][email protected]Versions [email protected] :RabbitMQ 3.8.2 sur Erlang 22.2.7[email protected] :RabbitMQ 3.8.2 sur Erlang 22.2.7[email protected] :RabbitMQ 3.8.2 sur Erlang 22.2.7Alarmes (aucune) Partitions réseau (aucune) ListenersNode :[email protected], interface :[::], port :25672, protocol :clustering, purpose :inter-noeud and CLI tool communicationNode :[email protected], interface :[::], port :5672, protocol :amqp, objectif :AMQP 0-9-1 et AMQP 1.0Noeud :[email protected], interface :[::], port :15672, protocole :http, objectif :HTTP APINode :[email protected], interface :[: :], port :25672, protocole :clustering, objectif :communication entre les nœuds et l'outil CLINœud :[email protected], interface :[::], port :5672, protocole :amqp, objectif :AMQP 0-9-1 et AMQP 1.0Nœud :[protégé par e-mail], interface :[: :], port :15672, protocole :http, objectif :API HTTPNœud :[email protected], interface :[::], port :25672, protocole :clustering, objectif :communication entre les nœuds et l'outil CLINœud :[email protected], interface :[::], port :5672, protocole :amqp, objectif :AMQP 0-9-1 et AMQP 1.0Node :[email protected], interface :[::], port :15672, protocole :http, objectif :HTTP APIFeature flagsFlag :drop_unroutable_metric, état :disabledFlag :empty_basic_get_metric, état :disabledFlag :implicite_default_bindings, état :enabledFlag :quorum_queue, état :enabledFlag :virtual_host_metadata, état :activé

Utilisateur administrateur de configuration

Ensuite, vous devrez créer un nouvel utilisateur administrateur pour le serveur RabbitMQ et supprimer l'utilisateur "invité" par défaut.

Vous pouvez créer un nouvel utilisateur nommé "hitesh" et le mot de passe "password" en exécutant la commande suivante sur node1 :

rabbitmqctl add_user hitesh mot de passe

Vous devriez voir le résultat suivant :

Ajout de l'utilisateur "hitesh" ...

Ensuite, configurez l'utilisateur hitesh en tant qu'administrateur avec la commande suivante :

rabbitmqctl set_user_tags hitesh administrateur

Vous devriez voir le résultat suivant :

Définition des balises pour l'utilisateur "hitesh" sur [administrateur] ...

Ensuite, accordez à l'utilisateur hitesh l'autorisation de modifier, d'écrire et de lire tous les vhosts.

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

Vous devriez voir le résultat suivant :

Définition des autorisations pour l'utilisateur "hitesh" dans vhost "/" ...

Ensuite, supprimez l'utilisateur invité avec la commande suivante :

rabbitmqctl delete_user invité

Vous devriez obtenir la commande suivante :

Suppression de l'utilisateur "invité"...

Vous pouvez maintenant lister tous les utilisateurs avec la commande suivante :

rabbitmqctl list_users

Vous devriez obtenir le résultat suivant :

Liste des utilisateurs ...user tagshitesh [administrateur]

Votre utilisateur que vous avez créé sur le nœud 1 sera automatiquement répliqué sur tous les nœuds du cluster.

Mise en miroir de la file d'attente de configuration de RabbitMQ

Par défaut, le contenu d'une file d'attente se trouve sur un seul nœud. Vous devrez donc configurer le cluster "ha policy" pour la mise en miroir des files d'attente et la réplication sur tous les nœuds du cluster.

Pour ce faire, créez une politique ha nommée "ha-all" que toutes les files d'attente du cluster RabbitMQ mettront en miroir sur tous les nœuds du cluster.

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

Sortie :

Définition de la règle "ha-all" pour le modèle ".*" sur "{"ha-mode":"all"}" avec la priorité "0" pour vhost "/" ...

Ensuite, créez une stratégie ha nommée "ha-two" dont tous les noms de file d'attente commencent par "two". sera mis en miroir sur les deux nœuds du cluster.

rabbitmqctl set_policy ha-deux "^deux\." '{"ha-mode":"exactement","ha-params":2,"ha-sync-mode":"automatique"}'

Sortie :

Définition de la règle "ha-two" pour le modèle "^two\." à "{"ha-mode":"exactement","ha-params":2,"ha-sync-mode":"automatic"}" avec priorité "0" pour vhost "/" ...

Ensuite, créez une règle de haute disponibilité nommée "ha-nodes" qui contiendra toutes les files d'attente dont le nom commence par "nodes". Nous mettrons en miroir deux nœuds spécifiques 'node2' et 'node3' dans le cluster.

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

Sortie :

Définition de la règle "ha-nodes" pour le modèle "^nodes\." à "{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}" avec la priorité "0" pour vhost "/" ... 

Vous pouvez maintenant répertorier toutes les stratégies configurées en exécutant la commande suivante :

rabbitmqctl list_policies ;

Vous devriez voir le résultat suivant :

Politiques de liste pour vhost "/" ...modèle de nom de vhost s'applique à la définition priority/ ha-all .* all {"ha-mode":"all"} 0/ ha-two ^two\. tous {"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"} 0/ ha-nodes ^nodes\. tous {"ha-mode":"nodes","ha-params":["[email protected]","[email protected]"]} 0

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Accéder au cluster RabbitMQ

Vous pouvez maintenant accéder à l'interface Web RabbitMQ en tapant l'adresse IP de n'importe quel nœud dans votre navigateur Web avec le port 15672 comme http://192.168.0.10:15672/. Vous devriez voir la page de connexion RabbitMQ :

Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur et cliquez sur Connexion bouton. Vous devriez voir le tableau de bord RabbitMQ dans l'écran suivant :

Ensuite, cliquez sur 'Admin ', puis cliquez sur l'onglet 'Politiques ' menu. Vous devriez voir toutes les politiques ha de RabbitMQ que nous avons créées dans l'écran suivant :

Conclusion

Toutes nos félicitations! vous avez configuré avec succès le cluster RabbitMQ à trois nœuds sur le serveur Ubuntu20.04. Votre cluster partage désormais les informations de configuration, y compris les informations de topologie et de sécurité sur tous les nœuds.


Ubuntu
  1. Comment installer Logstash sur Ubuntu 18.04

  2. Comment configurer WireGuard VPN sur Ubuntu 20.04

  3. Ubuntu - Comment définir une adresse IP statique dans Ubuntu ?

  4. Comment configurer MySQL Cluster sur Ubuntu

  5. Comment installer et configurer Git sur Ubuntu ?

Comment installer Syncthing sur Ubuntu 20.04

Comment installer Usermin sur Ubuntu 20.04

Comment installer Podman sur Ubuntu 20.04

Comment configurer OpenVPN sur Ubuntu 20.04

Comment installer RabbitMQ dans Ubuntu 20.04

Comment configurer le cluster RabbitMQ sur Ubuntu/Debian Linux