Amazon MQ에서 RabbitMQ 구성의 자동화 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon MQ에서 RabbitMQ 구성의 자동화

작성자: Yogesh Bhatia(AWS) 및 Afroz Khan(AWS)

환경: PoC 또는 파일럿

기술: 메시징 및 통신 DevOps, 인프라

AWS 서비스: Amazon MQ ; AWS CloudFormation

요약

Amazon MQ는 널리 사용되는 다양한 메시지 브로커와 호환되는 관리형 메시지 브로커 서비스입니다. Amazon MQ를 RabbitMQ와 함께 사용하면 여러 브로커 및 구성 옵션이 있는 Amazon Web Services(AWS) 클라우드에서 관리되는 강력한 RabbitMQ 클러스터가 제공됩니다. Amazon MQ는 가용성이 높고 안전하며 확장 가능한 인프라를 제공하고, 초당 대량의 메시지를 쉽게 처리할 수 있습니다. 여러 애플리케이션이 서로 다른 가상 호스트, 대기열, 교환이 있는 인프라를 사용할 수 있습니다. 하지만 이러한 구성 옵션을 관리하거나 인프라를 수동으로 생성하려면 시간과 노력이 필요할 수 있습니다. 이 패턴은 단일 파일을 통해 RabbitMQ 구성을 한 단계에서 관리하는 방법을 설명합니다. 이 패턴과 함께 제공되는 코드를 Jenkins 또는 Bamboo와 같은 지속적 통합(CI) 도구 내에 포함할 수 있습니다. 

이 패턴을 사용하여 모든 RabbitMQ 클러스터를 구성할 수 있습니다. 필요한 것은 클러스터에 대한 연결뿐입니다. RabbitMQ 구성을 관리하는 다른 방법이 많이 있지만, 이 솔루션은 전체 애플리케이션 구성을 한 단계에서 생성하므로 대기열 및 기타 세부 정보를 쉽게 관리할 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

  • AWS AWS 계정을 가리키도록 설치 및 구성된 명령줄 인터페이스(AWS CLI)(지침은 AWS CLI 설명서 참조)

  • 플레이북을 실행하여 구성을 생성할 수 있도록 하기 위해 설치되는 Ansible

  • rabbitmqadmin 설치됨(지침은 RabbitMQ 설명서를 참조)

  • Amazon MQ 의 RabbitMQ 클러스터로, 정상 Amazon CloudWatch 지표로 생성됨 Amazon MQ

추가 요구 사항

  • 의 일부가 아닌 가상 호스트 및 사용자에 대한 구성을 별도로 생성해야 합니다JSON.

  • 구성JSON이 리포지토리의 일부이고 버전 관리형인지 확인합니다.

  • rabbitmqadminCLI의 버전은 RabbitMQ 서버 버전과 동일해야 하므로 RabbitMQ 콘솔CLI에서 를 다운로드하는 것이 가장 좋습니다.

  • 파이프라인의 일부로 각 실행 전에 JSON 구문이 검증되었는지 확인합니다.

제품 버전

  • AWS CLI 버전 2.0

  • Ansible 버전 2.9.13

  • rabbitmqadmin 버전 3.9.13(RabbitMQ 서버 버전과 동일해야 함)

아키텍처

소스 기술 스택  

  • 기존 온프레미스 가상 머신(VM) 또는 Kubernetes 클러스터에서 실행되는 RabbitMQ 클러스터(온프레미스 또는 클라우드에서)

대상 기술 스택  

  • RabbitMQ용 Amazon MQ의 자동화된 RabbitMQ 구성

대상 아키텍처 

RabbitMQ를 구성하는 방법에는 여러 가지가 있습니다. 이 패턴은 단일 JSON 파일에 모든 구성이 포함된 가져오기 구성 기능을 사용합니다. 이 파일은 모든 설정에 적용되며 Bitbucket 또는 Git와 같은 버전 제어 시스템으로 관리할 수 있습니다. 이 패턴은 Ansible을 사용하여 rabbitmqadminCLI을 통해 구성을 구현합니다.

Amazon MQ에서 RabbitMQ 구성의 자동화

도구

도구

  • rabbitmqadmin은 RabbitMQ HTTP기반 의 명령줄 도구입니다API. RabbitMQ 노드 및 클러스터를 관리하고 모니터링하는 데 사용됩니다.

  • Ansible은 애플리케이션 및 IT 인프라를 자동화하기 위한 오픈소스 도구입니다.

  • AWS CLI 를 사용하면 명령줄 쉘에서 명령을 사용하여 AWS 서비스와 상호 작용할 수 있습니다. 

AWS 서비스

  • Amazon MQ는 관리형 메시지 브로커 서비스로서, 클라우드에서 메시지 브로커를 쉽게 설정하고 운영할 수 있게 해줍니다.

  • AWS CloudFormation 는 AWS 인프라를 설정하고 인프라를 코드로 사용하여 클라우드 프로비저닝 속도를 높입니다.

코드

이 패턴에 사용되는 JSON 구성 파일과 샘플 Ansible 플레이북은 첨부 파일에 제공됩니다.

에픽

작업설명필요한 기술

에서 RabbitMQ 클러스터를 생성합니다AWS.

RabbitMQ 클러스터가 아직 없는 경우 AWS CloudFormation를 사용하여 에서 스택을 생성할 수 있습니다AWS. 또는 Ansible의 Cloudformation 모듈을 사용하여 스택을 생성할 수 있습니다. 후자의 접근 방식을 사용하면 두 가지 작업, 즉 RabbitMQ 인프라 생성 및 구성 관리 작업에 Ansible을 사용할 수 있습니다. 

AWS CloudFormation, Ansible
작업설명필요한 기술

속성 파일을 생성합니다.

첨부 파일에서 JSON 구성 파일(rabbitmqconfig.json)을 다운로드하거나 RabbitMQ 콘솔에서 내보냅니다.  대기열, 교환, 바인딩을 구성하도록 수정합니다. 이 구성 파일은 다음을 보여줍니다.

- 대기열 2개 생성: sample-queue1sample-queue2 

- 교환 2개 생성: sample-exchange1sample-exchange2

- 대기열과 교환 간 바인딩 구현

이러한 구성은 rabbitmqadmin에서 요구하는 대로 루트(/) 가상 호스트에서 수행됩니다. 

JSON

RabbitMQ 인프라에 대한 Amazon MQ의 세부 정보를 검색합니다.

에서 RabbitMQ 인프라에 대한 다음 세부 정보를 검색합니다AWS.

  • 브로커 이름

  • RabbitMQ 호스트

  • RabbitMQ 사용자 이름(클러스터 생성 중에 생성된 관리자 사용자)

  • RabbitMQ 암호

AWS 관리 콘솔 또는 를 사용하여 이 정보를 AWS CLI 검색할 수 있습니다. 이러한 세부 정보를 통해 Ansible 플레이북은 AWS 계정에 연결하고 RabbitMQ 클러스터를 사용하여 명령을 실행할 수 있습니다.

중요 : Ansible 플레이북을 실행하는 컴퓨터는 AWS 계정에 액세스할 수 있어야 하며 사전 조건 섹션에 설명된 대로 이미 구성되어 있어야 AWS CLI 합니다.

AWS CLI, Amazon MQ

hosts_var 파일을 생성합니다.

Ansible용 hosts_var 파일을 생성하고, 파일에 모든 변수가 정의되어 있는지 확인합니다. Ansible 볼트를 사용하여 암호를 저장하는 것을 고려합니다. 다음과 같이 hosts_var 파일을 구성할 수 있습니다(별표를 사용자 정보로 대체).

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

Ansible 플레이북을 생성합니다.

샘플 플레이북은 첨부 파일에서 ansible-rabbit-config.yaml(을)를 참조하십시오. 이 파일을 다운로드하고 저장합니다. Ansible 플레이북은 애플리케이션에 필요한 모든 RabbitMQ 구성(예: 대기열, 교환, 바인딩)을 가져오고 관리합니다. 

암호 보안과 같은 Ansible 플레이북의 모범 사례를 따릅니다. Ansible 볼트를 사용하여 암호를 암호화하고, 암호화된 파일에서 RabbitMQ 암호를 검색합니다.

Ansible
작업설명필요한 기술

플레이북을 실행합니다.

이전 에픽에서 생성한 Ansible 플레이북을 실행합니다.

ansible-playbook ansible-rabbit-config.yaml

RabbitMQ 콘솔의 새 구성을 검증할 수 있습니다.

RabbitMQ, Amazon MQ, Ansible

관련 리소스

첨부

이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.