
Erlang 언어로 작성된 오픈 소스 메시지 브로커 소프트웨어이다.
메시지 브로커는 서로 다른 애플리케이션, 시스템, 서비스 간에 메시지를 전송하는 중간자 역할을 하며 RabbitMQ는 AMQP(Advanced Message Queuing Protocol)를 사용하여 메시지를 안정적으로 전달하며, 높은 가용성, 클러스터링, 다양한 메시징 패턴 등과 같은 기능을 제공한다.
RabbitMQ는 OpenStack 서비스 간의 비동기 통신을 가능하게 한다. 이는 서비스들이 작업을 비동기적으로 요청하고, 처리할 수 있게 하여 시스템의 효율성과 반응성을 향상시킨다. 또한 RabbitMQ는 메시지 큐를 통해 부하를 분산시키고, 시스템의 확장성을 지원한다. 메시지 큐를 사용함으로써 요청을 효과적으로 관리하고 처리할 수 있다.
[모든 Node에서 진행]
apt install rabbitmq-server
[Con01에서 진행]
cat /var/lib/rabbitmq/.erlang.cookie
> RabbitMQ Clustering은 .erlang.cookie 값으로 Cluster를 맺는다.
해당 값을 con02,con03에 복사한다.
[Con02, Con03에서 진행]
rabbitmqctl stop_app
> Clustering 진행을 위해 rabbitmq 서비스를 잠시 중단한다.
rabbitmqctl join_cluster rabbit@con01
> con01 Node로 Cluster Join 진행
[Con01에서 진행]
rabbitmqctl add_user [User name] [Password]
rabbitmqctl add_user openstack openstack
Adding user"openstack" ...
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
[Con02, Con03에서 진행]
rabbitmqctl start_app
rabbitmqctl cluster_status
Cluster status of node rabbit@con01 ...
Basics
Cluster name: rabbit@con01
Disk Nodes
rabbit@con01
rabbit@con02
rabbit@con03
Running Nodes
rabbit@con01
rabbit@con02
rabbit@con03
...
rabbitmqctl set_policy queue_ha '^(?!(amq\.)|(.fanout)|(reply_)).' \
'"alternate-exchange": "unroutable", \
"expires": 3600000, \
"ha-mode": "all", \
"ha-promote-on-failure": "always", \
"ha-promote-on-shutdown": "always", \
"ha-sync-mode": "manual", \
"message-ttl": 600000, \
"queue-master-locator": "client-local"'
버전업으로 인한 argument error 발생시
rabbitmqctl set_policy queue_ha ”^(?!(amq\.)|(.fanout)|(reply_)).“ \
'{"alternate-exchange": "unroutable", \
"expires": 3600000, \
"ha-mode": "all", \
"ha-promote-on-failure": "always", \
"ha-promote-on-shutdown": "always", \
"ha-sync-mode": "manual", \
"message-ttl": 600000, \
"queue-master-locator": "client-local"}‘