RabbitMQ는 AMQP (Advanced Message Queuing Protocol)를 이용한 Message Queue Broker이다.

이번 포스팅은 RabbitMQ 서버 설치와 클러스터링 구축에 대하여 설명한다.
 

 

1. RabbitMQ 설치

$ sudo apt-get install rabbitmq-server

 

 

2. 관리자 계정 추가

$ sudo rabbitmqctl add_user {ID} {Password}
  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 rabbitmq-plugins enable rabbitmq_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대에 동일하게 수정한다.

$ cat /var/lib/rabbitmq/.erlang.cookie

 

  - Hostname 수정

$ vi /etc/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 파일 수정

$ vi /etc/hosts

 

  - 다음과 같이 각각의 RabbitMQ 서버에 다음과 같이 hosts 파일을 수정한다.

 

 

 

5. Clustering 구성하기

가운데 Server인 RabbitMQ-Server-2를 Master로 두고 RabbitMQ-Server-1과  RabbitMQ-Server-3을 RabbitMQ-Server-2에 연결할 것이다.

 

  - Server 상태 확인 명령어

$ rabbitmqctl cluster_status

 

    = 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 stop_app

$ 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 상태 체크

$ rabbitmqctl cluster_status

 

 

 

 - Web에서의 Clustering 상태 체크

 

 

 

 - RabbitMQ-Server-1, RabbitMQ-Server-3 노드 삭제 명령어

   (rabbitmqctl reset 명령어를 사용할 경우, 기존에 등록했던 계정들도 삭제되므로 사용 시 주의한다.)

$ rabbitmqctl stop_app

$ rabbitmqctl reset

$ rabbitmqctl start_app

 

    = RabbitMQ-Server-1

 

 

 

    = RabbitMQ-Server-3

 

 

 

 - RabbitMQ-Server-2 Clustering 상태 체크

$ rabbitmqctl cluster_status

 

 

 

 

테스트 환경 : Ubuntu 16.04

+ Recent posts