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
Die AWS-Befehlszeilenschnittstelle (AWS CLI) wurde so installiert und konfiguriert, dass sie auf Ihr AWS-Konto verweist (Anweisungen finden Sie in der AWS-CLI-Dokumentation)
Ansible ist installiert, sodass Sie Playbooks ausführen können, um die Konfiguration zu erstellen
rabbitmqadmin ist installiert (Anweisungen finden Sie in der RabbitMQ-Dokumentation)
Ein RabbitMQ-Cluster in Amazon MQ, erstellt mit gesunden Amazon-Metriken CloudWatch
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](images/pattern-img/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/images/292e1284-5c9e-4c82-bb41-010fa84d8d74.png)
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
Aufgabe | Beschreibung | Erforderliche 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 | AWS CloudFormation, Ansible |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Eigenschaftendatei. | Laden Sie die JSON-Konfigurationsdatei ( - Erzeugt zwei Warteschlangen: - Erzeugt zwei Börsen: - 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:
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
| Ansible |
Erstellen Sie ein Ansible-Playbook. | Ein Beispiel-Playbook finden Sie 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 |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Führen Sie das Playbook aus. | Führen Sie das Ansible-Playbook aus, das Sie im vorherigen Epos erstellt haben.
Sie können die neuen Konfigurationen auf der RabbitMQ-Konsole überprüfen. | RabbitMQ, Amazon MQ, Ansible |
Zugehörige Ressourcen
Migration von RabbitMQ zu Amazon MQ
(AWS-Blogbeitrag) Management-Befehlszeilentool
(RabbitMQ-Dokumentation) Einen CloudFormation AWS-Stack erstellen oder löschen
(Ansible-Dokumentation) Migration nachrichtengesteuerter Anwendungen zu Amazon MQ für RabbitMQ
(AWS-Blogbeitrag)