RabbitMQ node간 data 미러링
Posted by Albert 786Day 33Min 44Sec ago [2023-02-24]
종류
- all
- 클러스터내의 모든 노드를 미러링
- exactly
- 특정 수 만큼의 노드만 미러링
- ha-params으로 count로 미러링 수 지정
- count가 총 노드스보다 많으면 all과 동일하게 동작
- 미러링된 노드가 죽었으면 count를 채우기 위해 다른 노드를 새 미러로 형성
- nodes
- 특정 이름의 노드들끼리 미러링
- ha-params으로 노드이름(node names) 지정
큐 이름에 hi.으로 시작된 큐 모두 미러링하기
[kafka@rabbit ~]$ sudo rabbitmqctl set_policy ha-all "^hi\." '{"ha-mode":"all"}'
[sudo] kafka의 암호:
Setting policy "ha-all" for pattern "^hi\." to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...
이외에도 부분 노드들 data만 미러링 가능하다.
- 정책의 이름 : ha-two
- 매칭할 Queue 이름 : ^two.은 정규식으로 표현된 미러링할 queue 이름으로 two.로 시작하는 모든 queue
- 정책 : 2개의 노드를 미러링, 새로운 노드가 추가되면 Sync
sudo rabbitmqctl set_policy ha-two "^two\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
- 정책의 이름 : ha-nodes
- 매칭할 Queue 이름 : nodes.은 정규식으로 표현된 미러링할 queue 이름으로 nodes.로 시작하는 모든 queue
- 정책 : rabbit@nodeA,rabbit@nodeB 노드간 미러링
sudo rabbitmqctl set_policy ha-nodes "^nodes\." '{"ha-mode":"nodes","ha-params":["rabbit@nodeA", "rabbit@nodeB"]}'
myQueue Virtual Host 속한 이름에 .ha 가 포함된 Queue를 모두 미러링 하는 정책
- 특정 Virtual Host에 적용 : -p myQueue -> myQueue virtual host 지정
- 정책의 이름 : ha-all
- 매칭할 Queue 이름 : myQueue Virtual host에 속한 .ha가 포함된 모든 큐
- 정책 : 모든 노드를 미러링
sudo rabbitmqctl set_policy -p myQueue ha-all "^.*\.ha.*" '{"ha-mode":"all"}'
출처: https://backtony.github.io/spring/2021-09-21-spring-rabbitmq-1/