Choi G.J bio photo

Choi G.J

IT System Engineer

RabbitMQ Broker를 분산환경하에 사용하는 방법은 3가지가 있다.

1) Clustering

다중 머신을 하나의 논리적인 브로커형태로 연결한다. Erlang message-passing을 통해서 연결되므로 같은 Erlang cookie를 가지고 있어야 한다. 네트워크도 항상 연결되어있고, 같은 버젼의 RabbitMQ와 Erlang으로 구성되어야 한다.

Virtual hosts, exchanges, permission 들이 복제됨 Queue는 하나의 node에만 있을 수도있고 복제되어 다중 node에 존재 할 수도 있는데 Client는 어떤 node에나 붙어서 모든 Queue를 바라볼 수도 있다.

보통 같은 지역의 여러머신을 고가용성(high availability)와 처리량의 증가하도록 구성하는데 쓰임

2) Federation

AMQP를 통해서 한 broker의 exchange(or Queue)에서 다른 broker의 exchanges(or Queue)를 연결한다. 두 broker는 적합한 User, permission이 부여되어야 연결 가능하다.

Federation Exchange는 point-to-point link로 단방향성으로 연결됨

보통 인터넷 넘어의 브로커들을 pub/sub메시징처리나 Work Queueing로 연결하는데 사용함

3) The Shovel

Shovel은 federation과 비슷한데 더 low level로 동작함

한 브로커에 있는 메시지를 Consume해서 다른 브로커의 exchange에 forward 해줌

보통 federation이 제공하지 못하는 세세한 control이 필요할 때 사용

Dynamic Shovel는 하나의 브로커의 ad-hoc환경하에 메시징처리에도 유용함

Summary

구분 Federation / Shovel Clustering
머신구성 브로커가 분리, 브로커 주인이 다르다 하나의 논리적인 브로커
RabbitMQ와 Erlang 버젼 달라도 구성가능 같아야 구성가능
Communication 방식 AMQP Erlang
네트워크 WAN,LAN가능 LAN가능
연결인증 user/permissions erlang cookie
연결구성 단방향 or 양방형 Link 모든 노드들의 연결
CAP AP(Availability & Partition Tolerance) CP (Consistency & Partition Tolerance)