본문 바로가기

OpenSource/RabbitMQ

Docker로 RabbitMQ 클러스터 구성하기

728x90
반응형

RabbitMQ는 인프라 유지보수, 업그레이드 및 장애로부터 데이터베이스와 데이터를 보호하기 위해 복제, 장애 복구 및 고가용성 기능을 제공합니다.

배치에는 세 개의 노드가 있는 클러스터가 포함되어 있으며 사용자, 가상 호스트, 큐, 교환, 바인딩, 런타임 매개변수 및 기타 분산 상태가 세 개의 모든 노드에서 공유됩니다.

노드가 실패하면 노드가 삭제되거나 다시 시작된 후 해당 노드 또는 새 노드가 클러스터에 재동기화 됩니다 .

docker pull rabbitmq:management

docker network 생성

docker network create prod

3대의 RabbitMQ 컨테이너 실행

docker run -d --name rabbitmq_node1 -h rabbitmq_node1 -it --network prod -p "15672:15672" -p "5672:5672" -p "25672:25672" -p "35197:35197" -e RABBITMQ_DEFAULT_USER="admin" -e RABBITMQ_DEFAULT_PASS="admin" -e RABBITMQ_ERLANG_COOKIE="mycookie" rabbitmq:management

docker run -d --name rabbitmq_node2 -h rabbitmq_node2 -it --network prod -p "15673:15672" -p "5673:5672" -p "25673:25672" -p "35198:35197" -e RABBITMQ_DEFAULT_USER="admin" -e RABBITMQ_DEFAULT_PASS="admin" -e RABBITMQ_ERLANG_COOKIE="mycookie" rabbitmq:management

docker run -d --name rabbitmq_node3 -h rabbitmq_node3 -it --network prod -p "15674:15672" -p "5674:5672" -p "25674:25672" -p "35199:35197" -e RABBITMQ_DEFAULT_USER="admin" -e RABBITMQ_DEFAULT_PASS="admin" -e RABBITMQ_ERLANG_COOKIE="mycookie" rabbitmq:management

 

node2, node3 bash에 접속

$ docker exec -it {node2 or node3} /bin/bash

# rabbitmq 앱 종료
$ rabbitmqctl stop_app

# join_cluster를 이용해 조인
$ rabbitmqctl join_cluster rabbit@rabbitmq_node1

# 앱 실행
$ rabbitmqctl start_app

 

node1에서 cluster_status 확인

$ docker exec -it {node1} /bin/bash

$ rabbitmqctl cluster_status

RabbitMQ Dashboard 확인

http://localhost:15672

 

728x90
반응형