RabbitMq 클러스터 구성하기
Posted by Albert 786Day 2Hour 39Min 1Sec ago [2023-02-24]
오늘도 한가해서 예전기억 까먹지않기 위하여 RabbitMq 클러스터링내용을 글로 등록한다.
클러스터 구성은
192.168.200.157 rabbit
192.168.200.129 rabbit2
2개의 virtualbox로 구성한다.
(os는 centos7)
1. 일단 기본으로 2대 서버에 모두 rabbitmq 가 설치한다.
RabbitMQ설치방법은 https://visionboy.me/787 에 등록하였으니 혹시나 필요하면 참고 바람
2. 각서버에서 hostname 변경한다.
'192.168.200.157 에서는
sudo hostnamectl set-hostname rabbit
'192.168.200.129 에서는
sudo hostnamectl set-hostname rabbit2
3. 각 서버에서 host 설정 아래와 같이 2줄 추가한다.(192.168.200.157,192.168.200.12)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.157 rabbit
192.168.200.129 rabbit2
4. 2대 모두 재부팅한다.
(2대 모두 rabbitmq 설치된 사항으로 재부팅해도 모두 rabbitmq 관리자페이지는 정상 접속되는걸 확인 할 수 있다.)
reboot
5. Erlang 쿠키 맞추기(Erlang cookie가 다르면 통신이 않돼서 클러스터링 않됨)
보통은 /var/lib/rabbitmq/.erlang.cookie 경로에 있는데 가끔 $HOME/.erlang.cookie 에 있는 서버도 있으니 참고 바람
쿠키 변경전 RabbitMQ서비스는 중단하고 해당 위치내용을 2대 서버 같게 만든다.
난 그냥 192.168.200.157의 /var/lib/rabbitmq/.erlang.cookie 파일을 192.168.200.12 에 덮어치기 하였음 ^^
6. 본격적으로 클러스터링 시작 녹색으로 된 명령어만 참고하면됨
' 2대 모두 RabbitMQ 서비스 시작
sudo service rabbitmq-server start
' RabbitMQ 클러스터링 현황 확인(아직 클러스터링 전이라 각 서버 자체의 정보만 출력됨)
sudo rabbitmqctl cluster_status
' 192.168.200.129 rabbit2 서버에서만 RabbitMQ 내림
' 주의할점은 전체 내리는 것 아니라 stop_app 명령을 사용함.
sudo rabbitmqctl stop_app
'rabbit2 서버에서 아래 명령어로 rabbit 서버와 클러스터링 진행
sudo rabbitmqctl join_cluster rabbit@rabbit
' 192.168.200.129 rabbit2 서버에서만 RabbitMQ start_app 실행
sudo rabbitmqctl start_app
' 최종으로 정상적으로 되었는데 확인(rabbit,rabbit2 2대가 클러스터링 된걸 확인가능 )
sudo rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit2 ...
Basics
Cluster name: rabbit@rabbit2
Disk Nodes
rabbit@rabbit
rabbit@rabbit2
Running Nodes
rabbit@rabbit
rabbit@rabbit2
Versions
rabbit@rabbit: RabbitMQ 3.10.17 on Erlang 24.3.4.1
rabbit@rabbit2: RabbitMQ 3.10.17 on Erlang 24.3.4.1
Maintenance status
Node: rabbit@rabbit, status: not under maintenance
Node: rabbit@rabbit2, status: not under maintenance
Alarms
(none)
Network Partitions
(none)
Listeners
Node: rabbit@rabbit, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@rabbit, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbit, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@rabbit2, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@rabbit2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbit2, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Feature flags
Flag: classic_mirrored_queue_version, state: enabled
Flag: classic_queue_type_delivery_support, state: enabled
Flag: drop_unroutable_metric, state: enabled
Flag: empty_basic_get_metric, state: enabled
Flag: implicit_default_bindings, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: stream_queue, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled
참고로 rabbit2 서버가 rabbit1 서버에 클러스터링 되면서 rabbit2의 기존 사용자 계정으로 로그인이 않되는 현상이 발견되었다.
이때는 그냥 rabbit2서버에서 신규 RabbitMQ계정 생성해주면 된다.
생성하고 2개의 서버로 RabbitMQ관리자 접속시 정상적으로 하나로 뭉쳐 있는걸 볼 수 있다.
끝