Zum Hauptinhalt springen

RabbitMQ

Lumie 플랫폼의 이벤트 기반 아키텍처를 위한 메시지 브로커입니다. RabbitMQ Cluster Operator를 사용하여 고가용성 클러스터로 운영됩니다.

아키텍처

클러스터 구성

  • 복제본: 1 (단일 인스턴스)
  • 이미지: zot.lumie-infra.com/library/rabbitmq:4.1-management
  • 네임스페이스: lumie-event
  • 오퍼레이터: RabbitMQ Cluster Operator v2.19.0 + Messaging Topology Operator v1.17.0

메시지 토폴로지

익스체인지

이름타입용도
lumie.commandsdirect작업 요청/콜백 라우팅
lumie.dlxtopic데드 레터 처리 (서비스 접두사 와일드카드)

큐 이름타입용도TTL
grading.omr-requestquorumOMR 채점 요청 (BE → grading-svc)10분
grading.omr-request.dlqquorumOMR 요청 실패 메시지-
grading.omr-completedquorumOMR 채점 완료 알림 (선언됨, 현재 미사용)-
grading.omr-callbackquorum채점 결과 콜백 (grading-svc → BE)10분
report.generation-requestquorum성적표 생성 요청 (BE → report-svc)30분
report.generation-request.dlqquorum성적표 요청 실패 메시지-
report.generation-callbackquorum성적표 생성 콜백 (report-svc → BE)30분
dlq.failed-messagesquorum전체 실패 메시지 캐치올-

바인딩

설정

클러스터 설정

cluster_partition_handling = autoheal
queue_master_locator = min-masters
vm_memory_high_watermark.relative = 0.7
vm_memory_high_watermark_paging_ratio = 0.75
log.console = true
log.console.level = info
load_definitions = /etc/rabbitmq/definitions/definitions.json

플러그인

  • rabbitmq_management: 웹 관리 인터페이스
  • rabbitmq_prometheus: 메트릭 수집
  • rabbitmq_auth_backend_oauth2: Keycloak OIDC 인증 (management UI)

리소스 할당

resources:
requests:
cpu: 22m
memory: 138Mi
limits:
memory: 384Mi

보안

인증

RabbitMQ 사용자는 Messaging Topology OperatorUser CR로 관리됩니다. 오퍼레이터가 자격 증명을 생성하여 <name>-user-credentials Secret에 저장합니다. Vault에는 미러링하지 않습니다.

사용자태그권한자격 증명 소스
lumieadministratorconfigure/write/read .*Topology Operator Secret
grading-svc(없음)configure/write/read .*Topology Operator Secret
report-svc(없음)configure/write/read .*Topology Operator Secret

Vault 통합 (Topology Operator 연결용)

Topology Operator가 브로커 management API에 접근하기 위한 연결 시크릿은 Vault에서 프로젝션됩니다:

# platform/rabbitmq/base/vault-static-secret.yaml
# Vault 경로: secret/infrastructure/rabbitmq
# → Secret 'rabbitmq-topology-auth' (username/password/uri)
vaultAuthRef: vault/vault-auth
path: infrastructure/rabbitmq
destination:
name: rabbitmq-topology-auth

OAuth2 / OIDC

RabbitMQ management UI는 Keycloak infra realm을 통해 OIDC 인증을 지원합니다. AMQP 프로토콜 인증은 내부 사용자(internal 백엔드)가 폴백으로 작동합니다.

모니터링

메트릭

  • Prometheus 플러그인을 통한 메트릭 노출
  • 큐 길이, 메시지 처리율, 클러스터 상태 등 모니터링

로깅

RabbitMQ 클러스터 설정에 따라 콘솔 로깅이 활성화됩니다.

log.console = true
log.console.level = info

운영

배포

ArgoCD를 통해 자동 배포되며, 다음 구성 요소들이 포함됩니다:

  1. ConfigMap: 메시지 토폴로지 정의 (load_definitions를 통해 로드)
  2. RabbitmqCluster: 클러스터 리소스
  3. VaultStaticSecret: 인증 정보

고가용성

  • 쿼럼 큐: 데이터 일관성 보장
  • 클러스터 파티션 처리: autoheal 모드
  • 메모리 관리: 70% 임계값으로 백프레셔 적용

장애 복구

  • 데드 레터 큐: 실패한 메시지 자동 라우팅
  • 메시지 TTL: 10분 후 자동 만료
  • 클러스터 자동 복구: 파티션 발생 시 자동 치유

관련 문서