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
내용을 추가하여 주세요.
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
아래의 yum 명령을 사용하여 RabbitMQ Server를 모든 노드 'node01', 'node02'에 설치해주세요.
- sudo yum -y install rabbitmq-server
설치가 완료된 후 RabbitMQ 서비스를 시작하고 시스템 부팅 시마다 서비스를 시작할 수 있도록해주세요. 설치가 완료되면 서비스를 시작하고, 이후 시스템 부팅 시 자동으로 서비스가 시작될 수 있도록 를 추가해 줍니다.
- systemctl start rabbitmq-server && sudo systemctl enable rabbitmq-server
RabbitMQ서버는 모든 노드 클러스터 CentOS에 설치완료 되었습니다.
3단계 RabbitMQ 관리 플러그인 사용
이 단계에서는 RabbitMQ 관리 플러그인을 활성화합니다. 기본 TCP 포트 '15672'에서 실행되는 웹 브라우저에서 RabbitMQ 서버를 모니터링하고 처리 할 수있는 인터페이스입니다. 아래 명령을 실행하여 RabbitMQ 관리 플러그인을 활성화 해주세요.
- sudo rabbitmq-plugins enable rabbitmq_management
오류가 없는지 확인한 다음 RabbitMQ 서비스를 다시 시작하세요.
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 주소를 입력하십시오.
위에서 만들었던 계정을 입력해줍니다.
사용자 이름 'boris' 비밀번호가 'boris123@'를 입력하십시오.
이제 '관리'탭 메뉴를 클릭하고 측면의 '사용자'메뉴를 클릭하십시오.
'관리'탭 메뉴를 클릭하고 측면의 '정책'메뉴를 클릭하십시오.
우리가 만든 RabbitMQ ha 정책을 모두 얻을 수 있습니다.
CentOS 서버에서 RabbitMQ 클러스터 설치 및 구성이 완료되었습니다.
참조링크:
댓글
댓글 쓰기