본문 바로가기
문서 목차
ORKESTRIX설치

메시지 큐 (ActiveMQ / RabbitMQ)

서비스 간 비동기 메시지 송수신 을 위한 메시지 브로커를 구성합니다. ActiveMQ 와 RabbitMQ 중 환경에 맞게 선택해 설치할 수 있으며, 둘 다 동시에 설치해도 무방합니다. 웹 관리 콘솔로 큐 상태를 확인·관리할 수 있습니다.

QUANTUM C&S

서비스 간 비동기 메시지 송수신을 위한 메시지 브로커를 구성합니다. ActiveMQ와 RabbitMQ 중 환경에 맞게 선택해 설치할 수 있으며, 둘 다 동시에 설치해도 무방합니다. 웹 관리 콘솔로 큐 상태를 확인 · 관리할 수 있습니다.

설정값

inventory/qks/group_vars/all/all-k8s.yaml:

# ActiveMQ
qks_activemq_enabled: true
qks_activemq_version: 1.0.0
qks_activemq_storage_size: 100Gi
qks_activemq_fqdn: "activemq.{{ kube_default_domain }}"

# RabbitMQ
qks_rabbitmq_enabled: true
qks_rabbitmq_version: 16.0.14
qks_rabbitmq_replicas: 3
qks_rabbitmq_storage_size: 10Gi
qks_rabbitmq_admin_fqdn: "mq.{{ kube_default_domain }}"

실행

./install.sh ubuntu plays/qks-activemq.yaml
./install.sh ubuntu plays/qks-rabbitmq.yaml

설치 흐름

./install.sh ubuntu plays/qks-activemq.yaml
  ├─ 1. 웹 콘솔 접속 도메인을 각 노드 /etc/hosts에 등록
  ├─ 2. Helm 저장소 등록 ('QUANTUM')
  ├─ 3. 네임스페이스 생성
  └─ 4. Helm으로 ActiveMQ 배포 (내장 PVC로 메시지 저장)

./install.sh ubuntu plays/qks-rabbitmq.yaml
  ├─ 1. 관리 콘솔 접속 도메인을 각 노드 /etc/hosts에 등록
  ├─ 2. Helm 저장소 등록 ('bitnami')
  ├─ 3. 네임스페이스 생성
  └─ 4. Helm으로 RabbitMQ 배포 (3노드 클러스터, 내장 PVC로 메시지 저장)

설치 확인

kubectl get pods -n <qks_activemq_namespace> | grep -E "activemq|rabbitmq"

파드가 모두 Running이어야 합니다(RabbitMQ는 설정한 노드 수만큼).

실제 동작 확인

ActiveMQ

웹 콘솔 확인:

curl -k -s -o /dev/null -w "%{http_code}\n" -u admin:<qks_activemq_admin_pass> https://<qks_activemq_fqdn>/admin/

200이 나오면 정상입니다.

비동기 메시지 송수신 확인:

# 메시지 발행
curl -k -s -u admin:<qks_activemq_admin_pass> -d "body=hello" "https://<qks_activemq_fqdn>/api/message/gs.test.queue?type=queue"

# 메시지 수신
curl -k -s -u admin:<qks_activemq_admin_pass> "https://<qks_activemq_fqdn>/api/message/gs.test.queue?type=queue&readTimeout=2000"

보낸 값(hello)이 그대로 수신되면 정상입니다.

RabbitMQ

관리 콘솔 확인:

curl -k -s -o /dev/null -w "%{http_code}\n" -u <qks_rabbitmq_admin_user>:<qks_rabbitmq_admin_pass> https://<qks_rabbitmq_admin_fqdn>/api/overview

200이 나오면 정상입니다.

비동기 메시지 송수신 확인:

# 큐 생성
curl -k -s -u <user>:<pass> -X PUT "https://<qks_rabbitmq_admin_fqdn>/api/queues/%2f/gs.test.queue" -d '{"durable":true}'

# 메시지 발행
curl -k -s -u <user>:<pass> -X POST "https://<qks_rabbitmq_admin_fqdn>/api/exchanges/%2f/amq.default/publish" -d '{"properties":{},"routing_key":"gs.test.queue","payload":"hello","payload_encoding":"string"}'

# 메시지 수신
curl -k -s -u <user>:<pass> -X POST "https://<qks_rabbitmq_admin_fqdn>/api/queues/%2f/gs.test.queue/get" -d '{"count":1,"ackmode":"ack_requeue_false","encoding":"auto"}'

보낸 값(hello)이 그대로 수신되면 정상입니다.

다음 단계