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/




LIST

Copyright © 2014 visionboy.me All Right Reserved.