RabbitMQ

망나니엔지니어·2024년 3월 29일

Openstack 설치

목록 보기
7/10

1. Middleware 설치

RabbitMQ

RabbitMQ란?

Erlang 언어로 작성된 오픈 소스 메시지 브로커 소프트웨어이다.
메시지 브로커는 서로 다른 애플리케이션, 시스템, 서비스 간에 메시지를 전송하는 중간자 역할을 하며 RabbitMQ는 AMQP(Advanced Message Queuing Protocol)를 사용하여 메시지를 안정적으로 전달하며, 높은 가용성, 클러스터링, 다양한 메시징 패턴 등과 같은 기능을 제공한다.

RabbitMQ는 OpenStack 서비스 간의 비동기 통신을 가능하게 한다. 이는 서비스들이 작업을 비동기적으로 요청하고, 처리할 수 있게 하여 시스템의 효율성과 반응성을 향상시킨다. 또한 RabbitMQ는 메시지 큐를 통해 부하를 분산시키고, 시스템의 확장성을 지원한다. 메시지 큐를 사용함으로써 요청을 효과적으로 관리하고 처리할 수 있다.

RabbitMQ 설치

[모든 Node에서 진행]
apt install rabbitmq-server

RabbitMQ Cluster 설정

[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 진행

Openstack이 사용할 사용자 추가

[Con01에서 진행]
rabbitmqctl add_user [User name] [Password]
rabbitmqctl add_user openstack openstack

Adding user"openstack" ...

Openstack User에 대한 구성, 쓰기 및 읽기 액세스 허용

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

Join Node 시작

[Con02, Con03에서 진행]
rabbitmqctl start_app

RabbitMQ 클러스터 정보 확인

  • RabbitMQ는 Node를 Disk Type이나 Ram Type으로 지정할 수 있으나, Openstack Docs 참조시, Disk Type으로 구성하는 것을 권장한다.
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
...

Openstack Queue Mirroring 설정

  • 불필요할 경우 별도로 지정하지 않아도 되나, Queue 고가용성을 위해 설정한다.
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"}‘
profile
인프라 엔지니어부터

0개의 댓글