RabbitMQ는 AMQP (Advanced Message Queuing Protocol)를 이용한 Message Queue Broker이다.
이번 포스팅은 RabbitMQ 서버 설치와 클러스터링 구축에 대하여 설명한다.
1. RabbitMQ 설치
2. 관리자 계정 추가
ex) sudo rabbitmqctl add_user programist programist123
$ sudo rabbitmqctl set_user_tags {ID} administrator
ex) sudo rabbitmqctl set_user_tags programist administrator
3. Management 활성화 및 접속
$ sudo service rabbitmq-server restart
- Management Plugin 활성화를 하면 다음과 같이 enable된 목록을 확인할 수 있다.
- http://Localhost:15672로 접속하면 다음과 같이 로그인 창이 나오며, 추가된 관리자 계정으로 로그인을 하면 RabbitMQ 서버의 상태 및 설정을 웹으로 조종할 수 있다.
4. RabbitMQ Clustering을 위한 환경 구성
- RabbitMQ Clustering 구성을 위해 다음과 같이 3대의 RabbitMQ Server 3대를 구성하였다.
RabbitMQ 노드는 쿠키를 사용하여 서로 통신 할 수 있는지 여부를 결정하며, 두 노드가 통신 할 수 있으려면 Erlang 쿠키라고하는 동일한 공유 암호가 있어야한다. 일반적으로 로컬 파일에 저장되며, 모든 클러스터 노드에는 동일한 쿠키가 있어야한다.
- RabbitMQ 쿠키 설정
= 3대의 RabbitMQ Server중 하나를 선택하여 cookie 값을 나머지 2대에 동일하게 수정한다.
- Hostname 수정
ex) RabbitMQ-Server-1
- 각각의 서버에 다음과 같이 hostname을 지정하였다.
= 192.168.0.101 : RabbitMQ-Server-1
= 192.168.0.102 : RabbitMQ-Server-2
= 192.168.0.103 : RabbitMQ-Server-3
- hosts 파일 수정
- 다음과 같이 각각의 RabbitMQ 서버에 다음과 같이 hosts 파일을 수정한다.
5. Clustering 구성하기
가운데 Server인 RabbitMQ-Server-2를 Master로 두고 RabbitMQ-Server-1과 RabbitMQ-Server-3을 RabbitMQ-Server-2에 연결할 것이다.
- Server 상태 확인 명령어
= RabbitMQ-Server-1
= RabbitMQ-Server-2
= RabbitMQ-Server-3
RabbitMQ-Server-2에 RabbitMQ-Server-1과 RabbitMQ-Server-3 노드 연결하기 위해서는 rabbitmqctl 명령어를 이용하여 RabbitMQ-Server-1, RabbitMQ-Server-3에서 가동되고 있는 서버를 일단 중지시켜야 한다.
- RabbitMQ-Server-1, RabbitMQ-Server-3 노드 추가 명령어
$ rabbitmqctl join_cluster --ram rabbit@{hostname}
ex) rabbitmqctl join_cluster --ram rabbit@RabbitMQ-Server-2
$ rabbitmqctl start_app
= RabbitMQ-Server-1
= RabbitMQ-Server-3
- RabbitMQ-Server-2 Clustering 상태 체크
- Web에서의 Clustering 상태 체크
- RabbitMQ-Server-1, RabbitMQ-Server-3 노드 삭제 명령어
(rabbitmqctl reset 명령어를 사용할 경우, 기존에 등록했던 계정들도 삭제되므로 사용 시 주의한다.)
$ rabbitmqctl reset
$ rabbitmqctl start_app
= RabbitMQ-Server-1
= RabbitMQ-Server-3
- RabbitMQ-Server-2 Clustering 상태 체크
테스트 환경 : Ubuntu 16.04
'Network' 카테고리의 다른 글
DNS 서버 설치 및 테스트 (0) | 2018.10.27 |
---|---|
Suricata NIDS/IPS 환경 설치 및 테스트 (0) | 2017.05.03 |
Apache Kafka 클러스터링 설치 및 테스트 (2) | 2017.05.03 |
MQTT 프로토콜을 활용한 Mosquitto Broker Server 설치 및 테스트 (0) | 2017.05.03 |