RabbitMQ est un logiciel de courtage de messages open source qui implémente à 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 (Message Mise en file d'attente du transport de télémétrie).
RabbitMQ est le logiciel de mise en file d'attente de messages qui prend en charge l'envoi et la réception de messages entre des systèmes, des applications et des services distribués. Il est écrit avec le langage de programmation Erlang et prend en charge les interfaces client et les bibliothèques pour tous les principaux langages de programmation, y compris Python, NodeJS, Java, PHP, etc.
Dans ce tutoriel, je vais vous montrer étape par étape comment configurer le cluster RabbitMQ sur un serveur CentOS 7. Nous allons configurer le cluster RabbitMQ à l'aide de trois serveurs CentOS, activer la gestion RabbitMQ et configurer la politique HA pour tous les nœuds.
Prérequis
- 3 serveurs CentOS 7 ou plus
- 10.0.15.21 node01
- 10.0.15.22 node02
- 10.0.15.23 node03
- Privilèges root
Qu'allons-nous faire ?
- Fichier d'hôtes de configuration
- Installer le serveur RabbitMQ
- Activer les plugins de gestion RabbitMQ
- Configurer le pare-feu
- Configurer le cluster RabbitMQ
- Configurer un nouvel utilisateur administrateur
- Configurer la mise en miroir de la file d'attente 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 node01 10.0.15.22 node02 10.0.15.23 node03
Enregistrez et quittez.
Étape 2 - Installer le serveur RabbitMQ
Dans cette étape, nous allons installer les packages RabbitMQ Server à partir du référentiel EPEL (Extra Packages for Enterprise Linux).
Ajoutez le référentiel EPEL au système CentOS 7.
sudo yum -y install epel-release
Installez maintenant RabbitMQ Server sur tous les nœuds 'node01', 'node02' et 'node03' à l'aide de la commande yum ci-dessous.
sudo yum -y install rabbitmq-server
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 tous les clusters de nœuds CentOS 7.
É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
Et la gestion RabbitMQ a été activée.
Étape 4 - Configurer le pare-feu CentOSd
Dans ce didacticiel, nous allons activer le service de pare-feu CentOS, nous devons donc ouvrir le port utilisé par le serveur RabbitMQ.
Nous allons ouvrir le port qui utilise le serveur RabbitMQ '5672', le port pour la gestion RabbitMQ '15672' et les ports pour le cluster RabbitMQ '4369, 25672'.
Exécutez les commandes firewalld suivantes.
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
Maintenant, rechargez firewalld et vérifiez tous les ports ouverts de la liste.
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
La configuration du pare-feu CentOS 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 'node01' vers les autres nœuds 'node02' et 'node03'.
Copiez le fichier '.erlang.cookie' en utilisant les commandes scp du 'node01'.
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 'node02' et 'node03' pour rejoindre le cluster 'node01'.
Exécutez toutes les commandes ci-dessous sur les serveurs 'node02' et 'node03'.
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 'node01', 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 comme indiqué ci-dessous.
Sur le 'noeud02'.
Sur le 'noeud03'.
Le cluster RabbitMQ a été créé, avec node01, node02 et node03 comme membres.
Étape 6 - Créer 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 'node01', 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 comme indiqué ci-dessous.
Un nouvel utilisateur 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
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'.
Voici 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 la politique ha nommée "ha-nodes" dont tous les noms de file d'attente commencent par "nodes". sera mis en miroir sur deux nœuds spécifiques 'node02' et 'node03' sur le cluster.
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["[email protected]", "[email protected]"]}'
Vérifiez maintenant toutes les stratégies disponibles à l'aide de la commande ci-dessous.
sudo rabbitmqctl list_policies;
Et si vous souhaitez supprimer la stratégie, utilisez la commande suivante.
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 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 le serveur CentOS 7 ont été effectuées avec succès.