1. 클러스터 래빗MQ 클러스터는 둘 이상의 서버를 하나의 래빗MQ처럼 사용할 수 있게 한다. 익스체인지, 큐, 바인딩, 사용자, 가상호스트, 정책 등의 런타임 상태가 모든 노드에서 공유된다. 장애허용(fault tolerance) 시스템을 구성하려는 경우, HA큐를 사용한다. HA큐는 여러 클러스터 노드에 걸쳐있고, 메시지와 큐 상태를 공유한다. HA 큐의 노드 중 하나가 다운돼도 다른 노드들에는 메시지와 큐 상태가 계속 유지된다. 클러스터는 대기시간이 짧은 LAN에서만 구성 가능하다. 아마존 EC2와 같은 클라우드 환경에서도 가능하지만 가용성 영역(availability zone)에 걸쳐서는 안된다. 대기시간이 긴 WAN이나 인터넷 연결에서는 Shovel과 Federation를 써야 함. 클러스터 공유 상태를 관리하는 작업의 로드는 노드 수에 비례한다. 2. 노드유형 디스크 노드 or RAM 노드. - 디스크 노드는 클러스터의 런타임 상태를 RAM과 디스크에 저장. - RAM 노드는 메모리 데이터베이스에만 저장. (익스체인지, 큐, 바인딩, 가상호스트, 사용자, 정책) 노드유형은 메시지의 디스크 저장과는 관련없다. 메시지를 디스크 저장하려면 메시지 속성 delivery-mode를 2(persistent)로 설정. 장애 발생후 재접속 할 때, - 디스크 노드는 런타임상태 재구성 - RAM 노드는 런타임 상태를 포함하지 않는다. 클러스터를 생성할 때 최소 하나의 디스크노드가 있어야 한다. 3. 동작 클러스터에 발행한 메시지는 큐가 클러스터의 어느 노드에 있는지와 상관없이 올바르게 전달된다. HA큐를 사용하면 성능이 저하될 수 있다. 큐에 메시지를 저장하거나 큐에서 메시지를 사용할 때, HA큐가 있는 모든 노드로 알려줘야 하니까. 4. 노드 추가 방법 rabbitmq.config 환경 파일을 편집하여 클러스터의 각 노드를 정의(이걸 써야함) 또는 rabbitmqctl 명령을 사용해 클러스터에 노드...
댓글
댓글 쓰기