View a markdown version of this page

Automatisez la configuration de RabbitMQ dans Amazon MQ - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Automatisez la configuration de RabbitMQ dans Amazon MQ

Yogesh Bhatia et Afroz Khan, Amazon Web Services

Résumé

Amazon MQ est un service de messagerie géré qui assure la compatibilité avec de nombreux courtiers de messages populaires. L'utilisation d'Amazon MQ avec RabbitMQ fournit un cluster RabbitMQ robuste géré avec plusieurs courtiers et options de configuration. AWS Cloud Amazon MQ fournit une infrastructure hautement disponible, sécurisée et évolutive, et peut traiter facilement un grand nombre de messages par seconde. Plusieurs applications peuvent utiliser l'infrastructure avec différents hôtes virtuels, files d'attente et échanges. Cependant, la gestion de ces options de configuration ou la création manuelle de l'infrastructure peuvent demander du temps et des efforts. Ce modèle décrit un moyen de gérer les configurations de RabbitMQ en une seule étape, via un seul fichier. Vous pouvez intégrer le code fourni avec ce modèle dans n'importe quel outil d'intégration continue (CI) tel que Jenkins ou Bamboo. 

Vous pouvez utiliser ce modèle pour configurer n'importe quel cluster RabbitMQ. Tout ce dont elle a besoin, c'est d'une connectivité au cluster. Bien qu'il existe de nombreuses autres manières de gérer les configurations de RabbitMQ, cette solution crée des configurations d'applications complètes en une seule étape, ce qui vous permet de gérer facilement les files d'attente et autres détails.

Conditions préalables et limitations

Conditions préalables

Exigences supplémentaires

  • Assurez-vous de créer les configurations pour les hôtes virtuels et les utilisateurs séparément et non dans le cadre de JSON.

  • Assurez-vous que le JSON de configuration fait partie du référentiel et qu'il est contrôlé par version.

  • La version de la CLI rabbitmqadmin doit être identique à celle du serveur RabbitMQ. La meilleure option est donc de télécharger la CLI depuis la console RabbitMQ.

  • Dans le cadre du pipeline, assurez-vous que la syntaxe JSON est validée avant chaque exécution.

Versions du produit

  • AWS CLI version 2.0

  • Version 2.9.13 d'Ansible

  • rabbitmqadmin version 3.9.13 (doit être identique à la version du serveur RabbitMQ)

Architecture

Pile technologique source

  • Un cluster RabbitMQ exécuté sur une machine virtuelle (VM) locale existante ou sur un cluster Kubernetes (sur site ou dans le cloud)

Pile technologique cible

  • Configurations automatisées de RabbitMQ sur Amazon MQ pour RabbitMQ

Architecture cible

Il existe de nombreuses façons de configurer RabbitMQ. Ce modèle utilise la fonctionnalité de configuration d'importation, dans laquelle un seul fichier JSON contient toutes les configurations. Ce fichier applique tous les paramètres et peut être géré par un système de contrôle de version tel que Bitbucket ou Git. Ce modèle utilise Ansible pour implémenter la configuration via la CLI rabbitmqadmin.

Automatisation de la configuration de RabbitMQ dans Amazon MQ

Outils

Services AWS

  • Amazon MQ est un service géré de courtage de messages qui facilite la configuration et le fonctionnement des courtiers de messages dans le cloud.

  • AWS CloudFormationvous aide à configurer votre AWS infrastructure et à accélérer le provisionnement dans le cloud grâce à l'infrastructure sous forme de code.

  • AWS CLIvous permet d'interagir avec Services AWS en utilisant des commandes dans un shell de ligne de commande. 

Autres outils

  • rabbitmqadmin est un outil de ligne de commande pour l'API HTTP de RabbitMQ. Il est utilisé pour gérer et surveiller les nœuds et les clusters RabbitMQ.

  • Ansible est un outil open source permettant d'automatiser les applications et l'infrastructure informatique.

Référentiel de code

Le fichier de configuration JSON utilisé dans ce modèle et un exemple de playbook Ansible sont fournis en pièce jointe.

Épopées

Sous-tâcheDescriptionCompétences requises

Créez un cluster RabbitMQ sur. AWS

Si vous n'avez pas encore de cluster RabbitMQ, vous pouvez l'utiliser AWS CloudFormationpour créer le stack on. AWS Vous pouvez également utiliser le CloudFormation module dans Ansible pour créer la pile. Avec cette dernière approche, vous pouvez utiliser Ansible pour les deux tâches : pour créer l'infrastructure RabbitMQ et pour gérer les configurations. 

Informations générales sur AWS, Ansible
Sous-tâcheDescriptionCompétences requises

Créez un fichier de propriétés.

Téléchargez le fichier de configuration JSON (rabbitmqconfig.json) dans la pièce jointe ou exportez-le depuis la console RabbitMQ.  Modifiez-le pour configurer les files d'attente, les échanges et les liaisons. Ce fichier de configuration illustre les éléments suivants :

  • Crée deux files d'attente : sample-queue1 et sample-queue2 

  • Crée deux échanges : sample-exchange1 et sample-exchange2

  • Implémente la liaison entre les files d'attente et les échanges

Ces configurations sont effectuées sous l'hôte virtuel root (/), comme l'exige rabbitmqadmin

JSON

Récupérez les détails de l'infrastructure Amazon MQ pour RabbitMQ.

Récupérez les informations suivantes pour l'infrastructure RabbitMQ sur : AWS

  • Nom de l'agent

  • Hôte RabbitMQ

  • Nom d'utilisateur RabbitMQ (l'utilisateur administrateur créé lors de la création du cluster)

  • Mot de passe RabbitMQ

Vous pouvez utiliser le AWS Management Console ou le AWS CLI pour récupérer ces informations. Ces informations permettent au playbook Ansible de se connecter à votre cluster RabbitMQ Compte AWS et d'utiliser le cluster RabbitMQ pour exécuter des commandes.

Important

L'ordinateur qui exécute le playbook Ansible doit être en mesure d'accéder à votre Compte AWS, et AWS CLI doit déjà être configuré, comme décrit dans la section Conditions préalables.

AWS général

Créez le fichier hosts_var.

Créez le hosts_var fichier pour Ansible et assurez-vous que toutes les variables sont définies dans le fichier. Envisagez d'utiliser Ansible Vault pour stocker le mot de passe. Vous pouvez configurer le hosts_var fichier comme suit (remplacez les astérisques par vos informations) :

RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com" RABBITMQ_VHOST: "/" RABBITMQ_USERNAME: "admin" RABBITMQ_PASSWORD: "*******"
Ansible

Créez un playbook Ansible.

Pour un exemple de playbook, voir ansible-rabbit-config.yaml la pièce jointe. Téléchargez et enregistrez ce fichier. Le playbook Ansible importe et gère toutes les configurations RabbitMQ, telles que les files d'attente, les échanges et les liaisons, dont les applications ont besoin. 

Suivez les meilleures pratiques relatives aux playbooks Ansible, telles que la sécurisation des mots de passe. Utilisez Ansible Vault pour le chiffrement du mot de passe et récupérez le mot de passe RabbitMQ dans le fichier chiffré.

Ansible
Sous-tâcheDescriptionCompétences requises

Lancez le playbook.

Lancez le playbook Ansible que vous avez créé dans l'épopée précédente.

ansible-playbook ansible-rabbit-config.yaml

Vous pouvez vérifier les nouvelles configurations sur la console RabbitMQ.

Informations générales sur AWS, RabbitMQ, Ansible

Ressources connexes

Pièces jointes

Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip