RabbitMQ est un logiciel de courtage de messages open source qui implémentait à l'origine le protocole AMQP (Advanced Message Queuing Protocol), et bien qu'il ait été développé et étendu afin de prendre en charge d'autres protocoles tels que STOMP (Streaming Text Oriented Messaging Protocol) et MQTT ( Transport de télémétrie Message Queuing).
Un logiciel de mise en file d'attente de messages/courtier de messages est utilisé pour envoyer et recevoir des messages entre des systèmes, des applications et des services distribués. RabbitMQ est écrit dans le langage de programmation Erlang, il offre une prise en charge des interfaces client et des bibliothèques pour tous les principaux langages de programmation, y compris Python, NodeJS, Java, PHP, etc.
Dans ce tutoriel, je vais vous montrer comment configurer un cluster RabbitMQ sur le serveur Ubuntu 18.04. Je vais installer un cluster RabbitMQ à l'aide de trois serveurs Ubuntu, activer la gestion RabbitMQ et configurer la stratégie HA pour tous les nœuds.
Prérequis
- 3 serveurs Ubuntu 18.04 ou plus
- 10.0.15.21 hakase-ubuntu01
- 10.0.15.22 hakase-ubuntu02
- 10.0.15.23 hakase-ubuntu03
- Privilèges root
Qu'allons-nous faire ?
- Fichier d'hôtes de configuration
- Installer le serveur RabbitMQ
- Activer les plugins de gestion
- Configurer le pare-feu UFW
- Configurer le cluster RabbitMQ
- Configurer un nouvel utilisateur administrateur
- Mise en miroir de la file d'attente de configuration de RabbitMQ
- Test
Étape 1 - Configurer le fichier Hosts
Dans cette étape, nous allons modifier le fichier '/etc/hosts' sur tous les serveurs et mapper chaque adresse IP de serveur en tant que nom d'hôte.
Modifiez le fichier "/etc/hosts" à l'aide de l'éditeur vim.
sudo vim /etc/hosts
Collez-y maintenant la configuration suivante.
10.0.15.21 hakase-ubuntu01 10.0.15.22 hakase-ubuntu02 10.0.15.23 hakase-ubuntu03
Enregistrez et quittez.
Étape 2 - Installer le serveur RabbitMQ
Avant d'installer le serveur RabbitMQ, assurez-vous que tous les référentiels sont mis à jour.
Exécutez la commande suivante.
sudo apt update
sudo apt upgrade
Installez maintenant les packages du serveur RabbitMQ à partir du référentiel Ubuntu à l'aide de la commande apt ci-dessous.
sudo apt install rabbitmq-server -y
Et une fois l'installation terminée, démarrez le service RabbitMQ et activez-le pour qu'il se lance à chaque démarrage du système.
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
Le serveur RabbitMQ a été installé sur Ubuntu 18.04.
Étape 3 - Activer les plugins de gestion RabbitMQ
Dans cette étape, nous allons activer les plugins de gestion RabbitMQ. Il s'agit d'une interface qui vous permet de surveiller et de gérer le serveur RabbitMQ à partir du navigateur Web, s'exécutant sur le port TCP par défaut '15672'.
Activez les plugins de gestion RabbitMQ en exécutant la commande ci-dessous.
sudo rabbitmq-plugins enable rabbitmq_management
Assurez-vous qu'il n'y a pas d'erreur, puis redémarrez le service RabbitMQ.
sudo systemctl restart rabbitmq-server
Les plug-ins de gestion RabbitMQ ont été activés.
Étape 4 - Configurer le pare-feu UFW
Dans ce tutoriel, nous allons activer le pare-feu Ubuntu UFW. Nous devons ouvrir certains ports qui seront utilisés par le serveur RabbitMQ.
Ajoutez le service ssh au pare-feu UFW et activez le service de pare-feu.
sudo ufw allow ssh
sudo ufw enable
Ajoutez maintenant les nouveaux ports tcp RabbitMQ '5672,15672,4369,25672'.
sudo ufw allow 5672,15672,4369,25672/tcp
Vérifiez ensuite la liste des ports du pare-feu UFW.
sudo ufw status
La configuration du pare-feu Ubuntu UFW est terminée et nous sommes prêts à configurer le cluster RabbitMQ.
Étape 5 - Configurer le cluster RabbitMQ
Afin de configurer le cluster RabbitMQ, nous devons nous assurer que le fichier '.erlang.cookie' est le même sur tous les nœuds. Nous allons copier le fichier '.erlang.cookie' dans le répertoire '/var/lib/rabbitmq' de 'hakase-ubuntu01' vers l'autre nœud 'hakase-ubuntu02' et 'hakase-ubuntu03'.
Copiez le fichier '.erlang.cookie' en utilisant les commandes scp du 'hakase-ubuntu01'.
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
Assurez-vous qu'il n'y a pas d'erreur sur les deux serveurs.
Ensuite, nous devons configurer 'hakase-ubuntu02' et 'hakase-ubuntu03' pour rejoindre le cluster 'hakase-ubuntu01'.
Remarque :
- Exécutez les commandes ci-dessous sur les serveurs hakase-ubuntu02' et 'hakase-ubuntu03'.
Redémarrez le service RabbitMQ et arrêtez l'application.
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
Laissez maintenant le serveur RabbitMQ sur les deux nœuds rejoindre le cluster sur 'hakase-ubuntu01', puis démarrez l'application.
sudo rabbitmqctl join_cluster [email protected]
sudo rabbitmqctl start_app
Une fois terminé, vérifiez l'état du cluster RabbitMQ.
sudo rabbitmqctl cluster_status
Et vous obtiendrez les résultats ci-dessous.
Le cluster RabbitMQ a été créé, avec hakase-ubuntu01, hakase-ubuntu02 et hakase-ubuntu03 comme membres.
Étape 6 - Configurer un nouvel utilisateur administrateur
Dans ce didacticiel, nous allons créer un nouvel utilisateur administrateur pour notre serveur RabbitMQ et supprimer l'utilisateur "invité" par défaut. Nous allons créer un nouvel utilisateur à partir de "hakase-ubuntu01", et il sera automatiquement répliqué sur tous les nœuds du cluster.
Ajoutez un nouvel utilisateur nommé 'hakase' avec le mot de passe '[email protected]'.
sudo rabbitmqctl add_user hakase [email protected]
Configurez l'utilisateur 'hakase' en tant qu'administrateur.
sudo rabbitmqctl set_user_tags hakase administrator
Et accordez à l'utilisateur 'hakase' la permission de modifier, d'écrire et de lire tous les vhosts.
sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"
Supprimez maintenant l'utilisateur "invité" par défaut.
sudo rabbitmqctl delete_user guest
Et vérifiez tous les utilisateurs disponibles.
sudo rabbitmqctl list_users
Et vous obtiendrez le résultat ci-dessous.
Un nouvel utilisateur administrateur RabbitMQ a été créé et l'utilisateur "invité" par défaut est supprimé.
Étape 7 - Mise en miroir de la file d'attente de configuration de RabbitMQ
Par défaut, le contenu d'une file d'attente au sein d'un cluster RabbitMQ est situé sur un seul nœud (le nœud sur lequel la file d'attente a été déclarée).
Cette configuration est indispensable, nous devons configurer le cluster "ha policy" pour la mise en miroir de la file d'attente et la réplication sur tous les nœuds du cluster. Si le nœud qui héberge le maître de file d'attente échoue, le miroir le plus ancien sera promu au nouveau maître tant qu'il est synchronisé, cela dépend des politiques 'ha-mode' et 'ha-params'.
Ci-dessous quelques exemples sur les politiques ha de RabbitMQ.
Configurez la 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.
sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
Configurez la politique 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.
sudo rabbitmqctl set_policy ha-two "^two\." \
'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
Configurez une politique 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 'hakase-ubuntu02' et 'hakase-ubuntu03' dans le cluster.
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'
RabbitMQ répertorie les politiques ha.
sudo rabbitmqctl list_policies;
RabbitMQ supprime une politique ha spécifique.
sudo rabbitmqctl clear_policy ha-two
Étape 8 - Tester
Ouvrez votre navigateur Web et tapez l'adresse IP du nœud avec le port '15672'.
http://10.0.15.21:15672/
Tapez le nom d'utilisateur 'hakase' avec le mot de passe '[email protected]'.
Et vous obtiendrez le tableau de bord d'administration RabbitMQ comme indiqué ci-dessous.
L'état de tous les nœuds du cluster est opérationnel.
Cliquez maintenant sur le menu de l'onglet "Admin", puis cliquez sur le menu "Utilisateurs" sur le côté.
Et vous obtiendrez l'utilisateur hakase sur la liste.
Cliquez maintenant sur le menu de l'onglet "Admin", puis cliquez sur le menu "Politiques" sur le côté.
Et vous obtiendrez toutes les politiques ha RabbitMQ que nous avons créées.
L'installation et la configuration de RabbitMQ Cluster sur les serveurs Ubuntu 18.04 ont été effectuées avec succès.