Automatizza la configurazione di RabbitMQ in Amazon MQ - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Automatizza la configurazione di RabbitMQ in Amazon MQ

Creato da Yogesh Bhatia (AWS) e Afroz Khan (AWS)

Ambiente: PoC o pilota

Tecnologie: messaggistica e comunicazioni DevOps; Infrastruttura

Servizi AWS: Amazon MQ; AWS CloudFormation

Riepilogo

Amazon MQ è un servizio di broker di messaggi gestito che offre compatibilità con molti broker di messaggi popolari. L'uso di Amazon MQ con RabbitMQ fornisce un robusto cluster RabbitMQ gestito nel cloud Amazon Web Services (AWS) con più broker e opzioni di configurazione. Amazon MQ fornisce un'infrastruttura altamente disponibile, sicura e scalabile e può elaborare un gran numero di messaggi al secondo con facilità. Più applicazioni possono utilizzare l'infrastruttura con diversi host virtuali, code e scambi. Tuttavia, la gestione di queste opzioni di configurazione o la creazione manuale dell'infrastruttura possono richiedere tempo e impegno. Questo modello descrive un modo per gestire le configurazioni per RabbitMQ in un unico passaggio, tramite un singolo file. È possibile incorporare il codice fornito con questo pattern in qualsiasi strumento di integrazione continua (CI) come Jenkins o Bamboo. 

È possibile utilizzare questo modello per configurare qualsiasi cluster RabbitMQ. Tutto ciò che serve è la connettività al cluster. Sebbene esistano molti altri modi per gestire le configurazioni di RabbitMQ, questa soluzione crea intere configurazioni di applicazioni in un unico passaggio, in modo da poter gestire facilmente code e altri dettagli.

Prerequisiti e limitazioni

Prerequisiti

  • AWS Command Line Interface (AWS CLI) installata e configurata in modo che punti al tuo account AWS (per istruzioni, consulta la documentazione AWS CLI)

  • Ansible è installato, quindi puoi eseguire i playbook per creare la configurazione

  • rabbitmqadmin installato (per istruzioni, consultate la documentazione di RabbitMQ)

  • Un cluster RabbitMQ in Amazon MQ, creato con parametri Amazon affidabili CloudWatch

Requisiti aggiuntivi

  • Assicurati di creare le configurazioni per gli host e gli utenti virtuali separatamente e non come parte di JSON.

  • Assicurati che la configurazione JSON faccia parte del repository e sia controllata dalla versione.

  • La versione della CLI di rabbitmqadmin deve essere la stessa del server RabbitMQ, quindi l'opzione migliore è scaricare la CLI dalla console RabbitMQ.

  • Come parte della pipeline, assicurati che la sintassi JSON sia convalidata prima di ogni esecuzione.

Versioni del prodotto

  • AWS CLI versione 2.0

  • Ansible versione 2.9.13

  • rabbitmqadmin versione 3.9.13 (deve essere la stessa della versione del server RabbitMQ)

Architettura

Stack tecnologico di origine

  • Un cluster RabbitMQ in esecuzione su una macchina virtuale (VM) locale esistente o su un cluster Kubernetes (in locale o nel cloud)

Stack tecnologico Target

  • Configurazioni RabbitMQ automatizzate su Amazon MQ per RabbitMQ

Architettura Target

Esistono molti modi per configurare RabbitMQ. Questo modello utilizza la funzionalità di importazione di configurazione, in cui un singolo file JSON contiene tutte le configurazioni. Questo file applica tutte le impostazioni e può essere gestito da un sistema di controllo delle versioni come Bitbucket o Git. Questo modello utilizza Ansible per implementare la configurazione tramite la CLI rabbitmqadmin.

Automazione della configurazione di RabbitMQ in Amazon MQ

Strumenti

Strumenti

Servizi AWS

  • Amazon MQ è un servizio di broker di messaggi gestito che semplifica la configurazione e la gestione di broker di messaggi nel cloud.

  • AWS ti CloudFormation aiuta a configurare la tua infrastruttura AWS e ad accelerare il provisioning del cloud con l'infrastruttura come codice.

Codice

Il file di configurazione JSON utilizzato in questo modello e un esempio di playbook Ansible sono forniti in allegato.

Epiche

AttivitàDescrizioneCompetenze richieste

Crea un cluster RabbitMQ su AWS.

Se non disponi già di un cluster RabbitMQ, puoi utilizzare AWS CloudFormation per creare lo stack su AWS. In alternativa, puoi utilizzare il modulo Cloudformation in Ansible per creare lo stack. Con quest'ultimo approccio, puoi utilizzare Ansible per entrambe le attività: creare l'infrastruttura RabbitMQ e gestire le configurazioni. 

AWS CloudFormation, Ansible
AttivitàDescrizioneCompetenze richieste

Creare un file delle proprietà.

Scarica il file di configurazione JSON (rabbitmqconfig.json) nell'allegato o esportalo dalla console RabbitMQ.  Modificalo per configurare code, scambi e associazioni. Questo file di configurazione dimostra quanto segue:

- Crea due code: e sample-queue1 sample-queue2 

- Crea due scambi: sample-exchange1 e sample-exchange2

- Implementa l'associazione tra le code e gli scambi

Queste configurazioni vengono eseguite sull'host virtuale root (/), come richiesto da rabbitmqadmin. 

JSON

Recupera i dettagli dell'infrastruttura Amazon MQ for RabbitMQ.

Recupera i seguenti dettagli per l'infrastruttura RabbitMQ su AWS:

  • Nome broker

  • Host RabbitMQ

  • nome utente RabbitMQ (l'utente amministratore creato durante la creazione del cluster)

  • Password RabbitMQ

Puoi utilizzare la Console di gestione AWS o la CLI AWS per recuperare queste informazioni. Questi dettagli consentono al playbook Ansible di connettersi al tuo account AWS e utilizzare il cluster RabbitMQ per eseguire comandi.

Importante: il computer che esegue il playbook Ansible deve essere in grado di accedere al tuo account AWS e la CLI AWS deve essere già configurata, come descritto nella sezione Prerequisiti.

CLI AWS, Amazon MQ

Crea il file hosts_var.

Crea il hosts_var file per Ansible e assicurati che tutte le variabili siano definite nel file. Prendi in considerazione l'utilizzo di Ansible Vault per memorizzare la password. Puoi configurare il hosts_var file come segue (sostituisci gli asterischi con le tue informazioni):

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

Crea un playbook Ansible.

Per un playbook di esempio, vedi ansible-rabbit-config.yaml in allegato. Scarica e salva questo file. Il playbook Ansible importa e gestisce tutte le configurazioni di RabbitMQ, come code, scambi e associazioni, richieste dalle applicazioni. 

Segui le migliori pratiche per i playbook Ansible, come la protezione delle password. Usa Ansible Vault per la crittografia delle password e recupera la password di RabbitMQ dal file crittografato.

Ansible
AttivitàDescrizioneCompetenze richieste

Esegui il playbook.

Esegui il playbook Ansible che hai creato nell'epopea precedente.

ansible-playbook ansible-rabbit-config.yaml

Puoi verificare le nuove configurazioni sulla console RabbitMQ.

RabbitMQ, Amazon MQ, Ansible

Risorse correlate

Allegati

Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip