기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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을 통해 구성을 구현합니다.
도구
도구
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 모듈 | AWS CloudFormation, Ansible |
작업 | 설명 | 필요한 기술 |
---|---|---|
속성 파일을 생성합니다. | 첨부 파일에서 JSON 구성 파일( - 대기열 2개 생성: - 교환 2개 생성: - 대기열과 교환 간 바인딩 구현 이러한 구성은 rabbitmqadmin에서 요구하는 대로 루트(/) 가상 호스트에서 수행됩니다. | JSON |
RabbitMQ 인프라에 대한 Amazon MQ의 세부 정보를 검색합니다. | 에서 RabbitMQ 인프라에 대한 다음 세부 정보를 검색합니다AWS.
AWS 관리 콘솔 또는 를 사용하여 이 정보를 AWS CLI 검색할 수 있습니다. 이러한 세부 정보를 통해 Ansible 플레이북은 AWS 계정에 연결하고 RabbitMQ 클러스터를 사용하여 명령을 실행할 수 있습니다. 중요 : Ansible 플레이북을 실행하는 컴퓨터는 AWS 계정에 액세스할 수 있어야 하며 사전 조건 섹션에 설명된 대로 이미 구성되어 있어야 AWS CLI 합니다. | AWS CLI, Amazon MQ |
hosts_var 파일을 생성합니다. | Ansible용
| Ansible |
Ansible 플레이북을 생성합니다. | 샘플 플레이북은 첨부 파일에서 암호 보안과 같은 Ansible 플레이북의 모범 사례를 따릅니다. Ansible 볼트를 사용하여 암호를 암호화하고, 암호화된 파일에서 RabbitMQ 암호를 검색합니다. | Ansible |
작업 | 설명 | 필요한 기술 |
---|---|---|
플레이북을 실행합니다. | 이전 에픽에서 생성한 Ansible 플레이북을 실행합니다.
RabbitMQ 콘솔의 새 구성을 검증할 수 있습니다. | RabbitMQ, Amazon MQ, Ansible |
관련 리소스
RabbitMQ에서 Amazon MQ로 마이그레이션
(AWS 블로그 게시물) 관리 명령줄 도구
(RabbitMQ 설명서) AWS CloudFormation 스택 생성 또는 삭제
(사용 가능한 설명서) 메시지 기반 애플리케이션을 Amazon MQ for RabbitMQ로 마이그레이션
(AWS 블로그 게시물)
첨부
이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.