RabbitMQ 클러스터 무작정 따라하기

 RabbitMQ는 AMQP(Advanced Message Queuing Protocol)는 클라이언트 어플리케이션이 메세지 미들웨어 브로커와 메시지를 주고 받을 수 있는 네트워크 프로토콜입니다.

STOMP (Streaming Text Oriented Messaging Protocol) 및 MQTT (Message와 같은 다른 프로토콜을 지원하기 위해 개발 및 확장 된) 오픈 소스 메시지 브로커 소프트웨어입니다.

 

대기 원격 전송 RabbitMQ는 분산 시스템, 응용 프로그램 및 서비스 간의 메시지 송수신을 지원하는 메시지 대기열 소프트웨어입니다. Erlang 프로그래밍 언어로 작성되었으며 Python, NodeJS, Java, PHP 등 모든 주요 프로그래밍 언어에 대한 클라이언트 인터페이스 및 라이브러리를 지원합니다.

이 설정은 CentOS7 서버에서 RabbitMQ 클러스터를 설정하는 방법을 단계별로 보여줍니다. 2개의 CentOS서버를 사용하여 RabbitMQ 클러스터를 설정하고 RabbitMQ 관리를 활성화하며 모든 노드에 대한 HA 정책을 설정합니다.

 

전제 조건

 

  • 2개 이상의 서버
    • 172.19.10.40 node 01
    • 172.19.10.41 node 02
  • 루트 권한

어떤 구성을 할 것인가?

  • 설치 호스트 파일
  • RabbitMQ 서버 설치
  • RabbitMQ 관리 플러그인 활성화
  • 방화벽 구성
  • RabbitMQ 클러스터 설정
  • 새 관리자 사용자 구성
  • RabbitMQ 큐 미러링 설정
  • 테스팅

1단계 호스트 파일 설정

 

이 단계에서는 모든 서버에서 '/etc/hosts'파일을 편집하고 각 서버 IP 주소를 호스트 이름으로 매핑합니다.

vim편집기를 사용하여 '/etc/hosts'파일을 편집해주세요.

 

  - vim /etc/hosts

[hosts 파일 수정]

내용을 추가하여 주세요.

172.19.10.40 node01 
172.19.10.41 node02

[노드 서버 이름 설명]

2단계 RabbitMQ 서버 설치

이 단계에서는 EPEL(Enterprise Linux for Enterprise Linux)저장소에서 RabbitMQ Server 패키지를 설치합니다.

EPEL 저장소를 CentOS7 시스템에 추가하십시오.

  - sudo yum -y install epel-release

[EPEL 저장소 추가]

아래의 yum 명령을 사용하여 RabbitMQ Server를 모든 노드 'node01', 'node02'에 설치해주세요.

  - sudo yum -y install rabbitmq-server

[rabbitmq-server 설치]

설치가 완료된 후 RabbitMQ 서비스를 시작하고 시스템 부팅 시마다 서비스를 시작할 수 있도록해주세요. 설치가 완료되면 서비스를 시작하고, 이후 시스템 부팅 시 자동으로 서비스가 시작될 수 있도록 를 추가해 줍니다.

  - systemctl start rabbitmq-server && sudo systemctl enable rabbitmq-server

[RabbitMQ 서버 설치]

RabbitMQ서버는 모든 노드 클러스터 CentOS에 설치완료 되었습니다.

 

3단계 RabbitMQ 관리 플러그인 사용

이 단계에서는 RabbitMQ 관리 플러그인을 활성화합니다. 기본 TCP 포트 '15672'에서 실행되는 웹 브라우저에서 RabbitMQ 서버를 모니터링하고 처리 할 수있는 인터페이스입니다. 아래 명령을 실행하여 RabbitMQ 관리 플러그인을 활성화 해주세요.

  - sudo rabbitmq-plugins enable rabbitmq_management

[Rabbit-mq 관리 플러그인 활성화]

오류가 없는지 확인한 다음 RabbitMQ 서비스를 다시 시작하세요.

[rabbitmq-server 재시작]

RabbitMQ 관리가 활성화되었습니다. 메세지 지연 큐를 활용하기 위해서 plugin을 설치하여 줍니다.

 - dl.bintray.com/rabbitmq/community-plugins/3.6.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171215-3.6.x.zip

 - unzip rabbitmq_delayed_message_exchange-20171215-3.6.x.zip -d /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.15/plugins/

 

4단계 RabbitMQ 방화벽 활성화

CentOS 방화벽 서비스를 활성화하므로 RabbitMQ 서버에서 사용하는 포트를 열어야합니다. RabbitMQ서버 '5672'를 사용하는 포트, RabbitMQ 관리 '15672'및 RabbitMQ 클러스터 '4369, 25672'용 포트를 엽니다.

다음 방화벽 명령을 실행하세요

 

  - sudo firewall-cmd --add-port=15672/tcp --permanent

  - sudo firewall-cmd --add-port=5672/tcp --permanent

  - sudo firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent

  - sudo firewall-cmd --reload   //정책 적용

  - sudo firewall-cmd --list-all   //정책 확인

 

※ AWS의 경우는 시큐리티 그룹에 해당 정책을 설정해주시면 됩니다.

[방화벽 정책 적용]

방화벽 구성이 완료되었으며 RabbitMQ 클러스터를 설정할 준비가되었습니다.

 

5단계 RabbitMQ 클러스터 설정

RabbitMQ 클러스터를 설정하려면 모든 노드에서 '.erlang.cookie'파일이 동일한지 확인해야합니다. '/var/lib/rabbitmq' 디렉토리의 '.erlang.cookie'파일을 'node01'에서 다른 노드 'node02'로 복사합니다. 'node01'에서 scp 명령을 사용하여 '.erlang.cookie'파일을 복사해주세요.

  - scp /var/lib/rabbitmq/.erlang.cookie root@node02:/var/lib/rabbitmq/

 

두 서버 모두에 오류가 없는지 확인해주세요. 다음으로 클러스터 'node01'에 가입하려면 'node02'을 설정합니다.

 

'node02'서버에서 아래의 모든 명령을 실행하십시오.

  - RabbitMQ 서비스를 다시 시작하고 앱을 중지하세요

  - sudo systemctl restart rabbitmq-server

  - sudo rabbitmqctl stop_app

이제 두 노드의 RabbitMQ 서버가 'node01'의 클러스터에 참여한 다음 앱을 시작하세요

  - sudo rabbitmqctl join_cluster rabbit@node01

  - sudo rabbitmqctl start_app

완료된 후 RabbitMQ 클러스터 상태를 확인하세요

  - sudo rabbitmqctl cluster_status

node01, node02을 멤버로 사용하여 RabbitMQ 클러스터가 작성되었습니다.

 

6단계 새 관리자 사용자 작성

RabbitMQ 서버에 대한 새 관리자를 작성하고 기본 '게스트'사용자를 삭제합니다. 'node01'에서 새 사용자를 만들고 클러스터의 모든 노드에 자동으로 복제됩니다.

'boris'라는 사용자아이디와 비밀번호'boris123@'인 새 사용자를 추가해주세요.

  - sudo rabbitmqctl add_user boris boris123@

'boris'사용자를 관리자로 설정하십시오.

  - sudo rabbitmqctl set_user_tags boris administrator

그리고 'boris'사용자에게 모든 가상 호스트를 수정하고 쓰고 읽을 수있는 권한을 부여하십시오.

  - sudo rabbitmqctl set_permissions -p / boris ".*" ".*" ".*"

이제 기본 'guest'사용자를 삭제하십시오.

  - sudo rabbitmqctl delete_user guest

사용 가능한 모든 사용자를 확인하십시오.

  - sudo rabbitmqctl list_users

[새 관리자 작성]

새로운 RabbitMQ사용자가 생성되었으며 기본 'guest'사용자가 삭제되었습니다.

 

7단계 RabbitMQ 설정 큐 미러링

이 설정은 큐 미러링 및 모든 클러스터 노드로의 복제를 위해 'ha policy'클러스터를 구성해야합니다. 큐 마스터를 호스트하는 노드에 장애가 발생하면 동기화되는 한 가장 오래된 미러가 새 마스터로 승격됩니다. 'ha-mode'및 'ha-params'정책에 따라 다릅니다. 다음은 RabbitMQ ha 정책에 대한 예입니다. RabbitMQ 클러스터의 모든 큐가 클러스터의 모든 노드에 미러링되는 'ha-all'이라는 ha 정책을 설정합니다.

  - sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'

모든 대기열 이름이 'two'로 시작하는 'ha-two'라는 ha 정책을 설정하십시오. 클러스터의 두 노드에 미러링됩니다.

  - sudo rabbitmqctl set_policy ha-two "^two\." \
   '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'

모든 큐 이름이 'nodes'로 시작하는 'ha-nodes'라는 ha 정책을 설정하십시오. 클러스터에서 두 개의 특정 노드 'node02'에 미러링됩니다.

 

※ 필자는 실습에서 클러스터 할 수 없는 환경이라 추후에 업데이트 하도록 하겠습니다.

정책을 제거하려면 다음 명령을 사용하십시오.

  - sudo rabbitmqctl clear_policy ha-two

8단계 RabbitMQ 테스트

웹 브라우저를 열고 포트 '15672'를 가진 노드의 IP 주소를 입력하십시오.

[RabbitMQ 설치완료]

위에서 만들었던 계정을 입력해줍니다.

사용자 이름 'boris' 비밀번호가 'boris123@'를 입력하십시오.

[RabbitMQ 로그인]

이제 '관리'탭 메뉴를 클릭하고 측면의 '사용자'메뉴를 클릭하십시오.

 

'관리'탭 메뉴를 클릭하고 측면의 '정책'메뉴를 클릭하십시오.

우리가 만든 RabbitMQ ha 정책을 모두 얻을 수 있습니다.

CentOS 서버에서 RabbitMQ 클러스터 설치 및 구성이 완료되었습니다.

 

참조링크:

댓글

이 블로그의 인기 게시물

AWS 용어

AML 체계란 무엇인가?

Cisco 명령어 정리