Automatisieren Sie die RabbitMQ-Konfiguration in Amazon MQ - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Automatisieren Sie die RabbitMQ-Konfiguration in Amazon MQ

Erstellt von Yogesh Bhatia (AWS) und Afroz Khan (AWS)

Umgebung: PoC oder Pilot

Technologien: Nachrichtenübermittlung und Kommunikation DevOps; Infrastruktur

AWS-Dienste: Amazon MQ; AWS CloudFormation

Übersicht

Amazon MQ ist ein verwalteter Message Broker-Service, der Kompatibilität mit vielen gängigen Message Brokern bietet. Die Verwendung von Amazon MQ mit RabbitMQ bietet einen robusten RabbitMQ-Cluster, der in der Amazon Web Services (AWS) -Cloud mit mehreren Brokern und Konfigurationsoptionen verwaltet wird. Amazon MQ bietet eine hochverfügbare, sichere und skalierbare Infrastruktur und kann problemlos eine große Anzahl von Nachrichten pro Sekunde verarbeiten. Mehrere Anwendungen können die Infrastruktur mit unterschiedlichen virtuellen Hosts, Warteschlangen und Exchanges nutzen. Die Verwaltung dieser Konfigurationsoptionen oder die manuelle Erstellung der Infrastruktur kann jedoch Zeit und Mühe erfordern. Dieses Muster beschreibt eine Möglichkeit, Konfigurationen für RabbitMQ in einem Schritt über eine einzige Datei zu verwalten. Sie können den mit diesem Muster bereitgestellten Code in jedes Continuous Integration (CI) -Tool wie Jenkins oder Bamboo einbetten. 

Du kannst dieses Muster verwenden, um jeden RabbitMQ-Cluster zu konfigurieren. Alles, was es benötigt, ist Konnektivität zum Cluster. Obwohl es viele andere Möglichkeiten gibt, RabbitMQ-Konfigurationen zu verwalten, erstellt diese Lösung ganze Anwendungskonfigurationen in einem Schritt, sodass Sie Warteschlangen und andere Details einfach verwalten können.

Voraussetzungen und Einschränkungen

Voraussetzungen

Zusätzliche Anforderungen

  • Stellen Sie sicher, dass Sie die Konfigurationen für virtuelle Hosts und Benutzer separat und nicht als Teil von JSON erstellen.

  • Stellen Sie sicher, dass das Konfigurations-JSON Teil des Repositorys ist und versionsgesteuert ist.

  • Die Version der rabbitmqadmin-CLI muss mit der Version des RabbitMQ-Servers identisch sein, daher ist es am besten, die CLI von der RabbitMQ-Konsole herunterzuladen.

  • Stellen Sie im Rahmen der Pipeline sicher, dass die JSON-Syntax vor jedem Lauf validiert wird.

Produktversionen

  • AWS-CLI Version 2.0

  • Ansible Version 2.9.13

  • rabbitmqadmin Version 3.9.13 (muss mit der RabbitMQ-Serverversion identisch sein)

Architektur

Quelltechnologie-Stack

  • Ein RabbitMQ-Cluster, der auf einer vorhandenen lokalen virtuellen Maschine (VM) oder einem Kubernetes-Cluster (vor Ort oder in der Cloud) ausgeführt wird

Zieltechnologie-Stack

  • Automatisierte RabbitMQ-Konfigurationen auf Amazon MQ für RabbitMQ

Zielarchitektur

Es gibt viele Möglichkeiten, RabbitMQ zu konfigurieren. Dieses Muster verwendet die Importkonfigurationsfunktion, bei der eine einzelne JSON-Datei alle Konfigurationen enthält. Diese Datei wendet alle Einstellungen an und kann von einem Versionskontrollsystem wie Bitbucket oder Git verwaltet werden. Dieses Muster verwendet Ansible, um die Konfiguration über die rabbitmqadmin-CLI zu implementieren.

Automatisieren der RabbitMQ-Konfiguration in Amazon MQ

Tools

Tools

  • rabbitmqadmin ist ein Befehlszeilentool für die HTTP-basierte RabbitMQ-API. Es wird zur Verwaltung und Überwachung von RabbitMQ-Knoten und -Clustern verwendet.

  • Ansible ist ein Open-Source-Tool zur Automatisierung von Anwendungen und IT-Infrastruktur.

  • Mit AWS CLI können Sie mithilfe von Befehlen in einer Befehlszeilen-Shell mit AWS-Services interagieren. 

AWS-Services

  • Amazon MQ ist ein verwalteter Message Broker-Service, der es einfach macht, Message Broker in der Cloud einzurichten und zu betreiben.

  • AWS CloudFormation hilft Ihnen dabei, Ihre AWS-Infrastruktur einzurichten und die Cloud-Bereitstellung mit Infrastruktur als Code zu beschleunigen.

Code

Die in diesem Muster verwendete JSON-Konfigurationsdatei und ein Beispiel für ein Ansible-Playbook sind im Anhang enthalten.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen RabbitMQ-Cluster auf AWS.

Wenn Sie noch keinen RabbitMQ-Cluster haben, können Sie AWS verwenden, um den Stack CloudFormation auf AWS zu erstellen. Oder Sie können das Cloudformation-Modul in Ansible verwenden, um den Stack zu erstellen. Bei letzterem Ansatz können Sie Ansible für beide Aufgaben verwenden: zum Erstellen der RabbitMQ-Infrastruktur und zum Verwalten von Konfigurationen. 

AWS CloudFormation, Ansible
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine Eigenschaftendatei.

Laden Sie die JSON-Konfigurationsdatei (rabbitmqconfig.json) im Anhang herunter oder exportieren Sie sie aus der RabbitMQ-Konsole.  Ändern Sie sie, um Warteschlangen, Austauschvorgänge und Bindungen zu konfigurieren. Diese Konfigurationsdatei zeigt Folgendes:

- Erzeugt zwei Warteschlangen: sample-queue1 und sample-queue2 

- Erzeugt zwei Börsen: sample-exchange1 und sample-exchange2

- Implementiert die Bindung zwischen den Warteschlangen und den Börsen

Diese Konfigurationen werden gemäß den Anforderungen von rabbitmqadmin unter dem virtuellen Root-Host (/) ausgeführt. 

JSON

Rufen Sie die Details der Amazon MQ for RabbitMQ-Infrastruktur ab.

Rufen Sie die folgenden Details für die RabbitMQ-Infrastruktur auf AWS ab:

  • Broker-Name

  • RabbitMQ-Host

  • RabbitMQ-Benutzername (der Administratorbenutzer, der bei der Clustererstellung erstellt wurde)

  • RabbitMQ-Passwort

Sie können die AWS-Managementkonsole oder die AWS-CLI verwenden, um diese Informationen abzurufen. Diese Details ermöglichen es dem Ansible-Playbook, eine Verbindung zu Ihrem AWS-Konto herzustellen und den RabbitMQ-Cluster zum Ausführen von Befehlen zu verwenden.

Wichtig: Der Computer, auf dem das Ansible-Playbook ausgeführt wird, muss auf Ihr AWS-Konto zugreifen können, und die AWS-CLI muss bereits konfiguriert sein, wie im Abschnitt Voraussetzungen beschrieben.

AWS-CLI, Amazon MQ

Erstellen Sie die Datei hosts_var.

Erstellen Sie die hosts_var Datei für Ansible und stellen Sie sicher, dass alle Variablen in der Datei definiert sind. Erwägen Sie, Ansible Vault zum Speichern des Passworts zu verwenden. Sie können die hosts_var Datei wie folgt konfigurieren (ersetzen Sie die Sternchen durch Ihre Informationen):

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

Erstellen Sie ein Ansible-Playbook.

Ein Beispiel-Playbook finden Sie ansible-rabbit-config.yaml im Anhang. Laden Sie diese Datei herunter und speichern Sie sie. Das Ansible-Playbook importiert und verwaltet alle RabbitMQ-Konfigurationen, wie Warteschlangen, Exchanges und Bindungen, die Anwendungen benötigen. 

Folgen Sie den bewährten Methoden für Ansible-Playbooks, z. B. zum Sichern von Passwörtern. Verwenden Sie Ansible Vault für die Passwortverschlüsselung und rufen Sie das RabbitMQ-Passwort aus der verschlüsselten Datei ab.

Ansible
AufgabeBeschreibungErforderliche Fähigkeiten

Führen Sie das Playbook aus.

Führen Sie das Ansible-Playbook aus, das Sie im vorherigen Epos erstellt haben.

ansible-playbook ansible-rabbit-config.yaml

Sie können die neuen Konfigurationen auf der RabbitMQ-Konsole überprüfen.

RabbitMQ, Amazon MQ, Ansible

Zugehörige Ressourcen

Anlagen

Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip