Clustering은 여러 RabbitMQ 노드를 하나의 논리적 broker로 연결합니다 — 확장성과 (복제된 queue와 함께) 고가용성을 위해. clustering과 그 미묘함을 이해하는 것은 RabbitMQ를 확장하고 신뢰성 있게 운영하는 데 중요합니다.
cluster란
RabbitMQ CLUSTER = 여러 노드가 하나의 논리적 broker로 동작:
→ 노드들이 cluster 전체에서 메타데이터(queue/exchange 정의, binding, user, vhost)를 공유
→ client는 어느 노드에든 연결 가능; 부하가 노드 간에 분산
→ connection/channel 용량을 확장하고 부하를 분산
cluster 내의 queue (중요한 미묘함)
⚠️ 기본적으로 queue의 DATA는 ONE 노드(선언된 노드)에 존재:
→ 다른 노드는 queue를 알지만(메타데이터) 소유 노드로 라우팅
→ 그 노드가 실패하면 → queue(와 그 메시지)가 사용 불가
→ 따라서 CLUSTERING만으로는 queue가 고가용이 되지 않음!
→ HA를 위해 → 노드 간 데이터를 복제하는 복제 queue(QUORUM QUEUE) 사용
