RabbitMQ Clustering 구성하기

OS 는 ubuntu 16.04(xenial) 으로 설치한다.

erlang 설치

$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb$ sudo dpkg -i erlang-solutions_1.0_all.deb$ sudo apt-get update$ sudo apt-get install erlang erlang-nox

RabbitMQ 설치

현재(2018년 3월 29일) 최신버전인 v1.7.4–1 을 설치 한다.

$ echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list$ wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -$ sudo apt-get update$ sudo apt-get install rabbitmq-server

클러스터 구성

$ sudo rabbitmqctl stop_app$ sudo rabbitmqctl join_cluster rabbit@rabbit1$ sudo rabbitmqctl start_app

클러스터 구성 확인

$ sudo rabbitmqctl cluster_status

미러링 구성

$ sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all", "ha-sync-mode":"automatic"}'

클러스터에 묶여 있는 모든 호스트에 미러링하며 모든 큐를 대상으로 한다.

DNS 를 사용한 Load Balancing 및 Failover

아래 스크립트를 사용하여 Healthcheck 데이터를 Cloudwatch 에 전달하고 DNS 의 Failover 의 기준으로 활용한다.

#!/bin/bashINST_ID=i-0585d39be611fc72bSTATUS_OK=`curl http://guest:guest@localhost:15672/api/aliveness-test/%2F`function healthcheck {if [ "$STATUS_OK" == '{"status":"ok"}' ]; thenaws cloudwatch put-metric-data --metric-name "RabbitMQ staging UP/DOWN" --unit Count --value 1 --dimensions InstanceId=$INST_ID --namespace Rabbitmqecho "UP"elseaws cloudwatch put-metric-data --metric-name "RabbitMQ staging UP/DOWN" --unit Count --value 0 --dimensions InstanceId=$INST_ID --namespace Rabbitmqecho "DOWN"fi}healthchecksleep 30healthcheck

Cron 스케줄에 등록해 준다.

* * * * * bash /home/ubuntu/alive.sh >> /home/ubuntu/alive.log 2>&1

VM Instance Type 변경

rabbit1, rabbit2, rabbit3 차례 대로 Instance Type 을 변경해 준다.

RabbitMQ 서버를 정지하고 AWS Console 에서 해당 Instance 정지 및 Instance Type 을 변경한다.

$ sudo service rabbitmq-server stop

Instance Type 변경 후 재시작 해주면 별도로 서버에 Remote 로그인하여 해줄 작업은 없다. RabbitMQ 서버가 알아서 기존 Cluster 에 바인드 된다.



Wiley Choi

Written by




Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade