Skip to content

Commit 92e9b3a

Browse files
committed
docs: 2025-11-30-rabbitmq update
1 parent 6cb4902 commit 92e9b3a

1 file changed

Lines changed: 24 additions & 36 deletions

File tree

_posts/rabbitmq/2025-11-30-rabbitmq.md

Lines changed: 24 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,9 @@ categories: [Blogging,rabbitmq]
1010

1111
현재 실무에서 알림 시스템 [아키텍처를 개선](https://treestone94.github.io/posts/2025-03-11-architecture/)하게 되면서 RabbitMQ 단일 서버가 장애 시 알림 시스템의 리스크가 크고 안정성에 문제가 있는걸로 판단되었습니다. 이를 해결하기 위해 RabbitMQ 클러스터링 환경을 구축하게 되었습니다. 구축하게 되면서 어떤점을 중점적으로 보았는지 공유할려고 합니다.
1212

13-
<aside>
14-
🤔
1513

16-
RabbitMQ 클러스터링이 뭔가요?
17-
18-
여러 대의 RabbitMq 노드를 논리적으로 하나의 브로커처럼 동작하도록 구성하는 것입니다. 각 노드는 메타데이터와 큐 정보를 공유하며, 클라이언트는 어느 노드에 연결하든 동일한 큐와 익스체인지에 접근할 수 있습니다.
19-
20-
</aside>
14+
> 🤔 RabbitMQ 클러스터링이 뭔가요?\
15+
> 여러 대의 RabbitMq 노드를 논리적으로 하나의 브로커처럼 동작하도록 구성하는 것입니다. 각 노드는 메타데이터와 큐 정보를 공유하며, 클라이언트는 어느 노드에 연결하든 동일한 큐와 익스체인지에 접근할 수 있습니다.
2116
2217
## 구축하면 이점은?
2318

@@ -224,36 +219,29 @@ NODENAME=rabbit@rabbit1
224219
- 노드 이름은 변경할 수 없습니다
225220
- 형식은 `name@hostname` 이어야 합니다
226221

227-
<aside>
228-
🤔
229-
230-
노드 이름은 왜 변경 할 수 없을까요?
231-
232-
RabbitMQ는 Erlang의 Mnesia 데이터베이스를 사용하는데, 노드 이름이 데이터 저장 구조의 핵심 식별자로 사용됩니다.
233-
234-
1. **Mnesia 데이터 디렉토리 구조**
235-
236-
```bash
237-
/var/lib/rabbitmq/mnesia/rabbit@rabbit1/
238-
├── DECISION_TAB.LOG
239-
├── LATEST.LOG
240-
├── nodes_running_at_shutdown
241-
├── rabbit_durable_exchange.DCD
242-
├── rabbit_durable_queue.DCD
243-
└── ...
244-
```
245222

246-
- 노드 이름이 디렉토리 경로에 포함됨
247-
- 모든 데이터베이스 파일이 이 경로에 저장됨
248-
1. **클러스터 메타데이터**
249-
- 클러스터 구성 정보에 노드 이름이 하드코딩됨
250-
- 큐의 소유권, 복제 정보가 노드 이름으로 참조됨
251-
- 쿼럼 큐의 멤버십 정보에 노드 이름 포함
252-
2. **Erlang 분산 시스템**
253-
- Erlang 노드는 시작 시 이름으로 등록됨
254-
- 다른 노드들이 이 이름으로 통신 채널 설정
255-
- 이름 변경 시 기존 연결이 모두 무효화됨
256-
</aside>
223+
> 🤔 노드 이름은 왜 변경 할 수 없을까요?\
224+
> RabbitMQ는 Erlang의 Mnesia 데이터베이스를 사용하는데, 노드 이름이 데이터 저장 구조의 핵심 식별자로 사용됩니다.
225+
> 1. **Mnesia 데이터 디렉토리 구조**
226+
> ```bash
227+
> /var/lib/rabbitmq/mnesia/rabbit@rabbit1/
228+
> ├── DECISION_TAB.LOG
229+
> ├── LATEST.LOG
230+
> ├── nodes_running_at_shutdown
231+
> ├── rabbit_durable_exchange.DCD
232+
> ├── rabbit_durable_queue.DCD
233+
> └── ...
234+
> ```
235+
> - 노드 이름이 디렉토리 경로에 포함됨
236+
> - 모든 데이터베이스 파일이 이 경로에 저장됨
237+
> 2. **클러스터 메타데이터**
238+
> - 클러스터 구성 정보에 노드 이름이 하드코딩됨
239+
> - 큐의 소유권, 복제 정보가 노드 이름으로 참조됨
240+
> - 쿼럼 큐의 멤버십 정보에 노드 이름 포함
241+
> 3. **Erlang 분산 시스템**
242+
> - Erlang 노드는 시작 시 이름으로 등록됨
243+
> - 다른 노드들이 이 이름으로 통신 채널 설정
244+
> - 이름 변경 시 기존 연결이 모두 무효화됨
257245
258246
### 5. **클러스터 조인 순서**
259247

0 commit comments

Comments
 (0)