RabbitMQ Clustering하기 (w. Docker)

🔥Log·2024년 6월 11일
0

RabbitMQ

목록 보기
6/9

💻 클러스터링


1) docker-compose

services:
  rabbitmq-1:
    image: rabbitmq:3.13.3-management
    container_name: rabbitmq-1
    hostname: rabbitmq-1
    environment:
      - RABBITMQ_ERLANG_COOKIE=hellorabbitmq
    ports:
      - 15672:15672
      - 5672:5672
  rabbitmq-2:
    image: rabbitmq:3.13.3-management
    container_name: rabbitmq-2
    hostname: rabbitmq-2
    depends_on:
      - rabbitmq-1
    environment:
      - RABBITMQ_ERLANG_COOKIE=hellorabbitmq
  rabbitmq-3:
    image: rabbitmq:3.13.3-management
    container_name: rabbitmq-3
    hostname: rabbitmq-3
    depends_on:
      - rabbitmq-1
    environment:
      - RABBITMQ_ERLANG_COOKIE=hellorabbitmq

3개의 RabbitMQ 노드를 띄우는 yml파일이다. 이 파일을 docker-compose로 실행하자.

그러면 이렇게 3개의 컨테이너가 정상적으로 생성된 것을 확인할 수 있다.

2) 클러스터로 Join

그리고, 아래 명령어들을 통해서 2번째, 3번째 노드를 클러스터에 붙여주자.

docker exec -it rabbitmq-2 rabbitmqctl stop_app
docker exec -it rabbitmq-2 rabbitmqctl reset
docker exec -it rabbitmq-2 rabbitmqctl join_cluster rabbit@rabbitmq-1
docker exec -it rabbitmq-2 rabbitmqctl start_app

docker exec -it rabbitmq-3 rabbitmqctl stop_app
docker exec -it rabbitmq-3 rabbitmqctl reset
docker exec -it rabbitmq-3 rabbitmqctl join_cluster rabbit@rabbitmq-1
docker exec -it rabbitmq-3 rabbitmqctl start_app

위 명령어들을 수행하면, 첫번째 RabbitMQ 노드에 나머지 2개가 클러스터로 Join하게 된다.

3) 결과 확인

RabbitMQ Management UI에 접속해보면, 이렇게 3개의 노드가 출력되는 것을 확인할 수 있다.



💻 Scale-In


위에서는 rabbitmqctljoin_cluster명령어를 통해서 Scale out을 해보았다면, 이번에는 Scale in을 해보도록 하겠다.

1) 3번째 노드 중지

docker exec -it rabbitmq-3 rabbitmqctl stop_app

위 명령어를 통해서 먼저 3번째 노드를 중지하자.

2) 3번째 노드를 클러스터에서 제거

docker exec -it rabbitmq-2 rabbitmqctl forget_cluster_node rabbit@rabbitmq-3

첫번째 또는 두번째 노드에 위 명령어를 수행하면 3번째 노드는 클러스터에서 제거된다.
나는 두번째 노드에 명령어를 실행했다.

3) 결과 확인

세번째 노드가 클러스터에서 빠지고, 2개의 노드만 클러스터로 묶여 있는 것을 확인할 수 있다.

4) 또 다른 방법

docker exec -it rabbitmq-3 rabbitmqctl stop_app
docker exec -it rabbitmq-3 rabbitmqctl reset

제외할 노드를 중지하고 Reset해도 클러스터에서 제거할 수 있다.



🙏 참고


0개의 댓글

관련 채용 정보