RabbitMQ安装 - 集群(镜像)

http://www.rabbitmq.com/ha.html

对于持久化队列,如果创建此队列的磁盘节点down机,则此队列无法使用;

新建的queue可以运行(因为新建的queue会持久化到存活的磁盘节点上)


RabbitMQ安装 - 集群(镜像)_第1张图片
image.png
rabbitmqctl set_policy <-p vhost>    
  1. -p vhost: 可选参数,针对指定vhost下的queue进行设置
  2. name: policy的名称
  3. pattern: queue的匹配模式(正则表达式)
  4. definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode

ha-mode:指明镜像队列的模式,有效值为 allexactlynodes

  • all:表示在集群中所有的节点上进行镜像
  • exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
  • nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定

ha-params:ha-mode模式需要用到的参数

ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual

  • automatic:创建队列时会自动从master queue同步已存在的消息
  • manual:创建队列时只会同步新消息,不会同步已存在的消息
  1. priority:可选参数,policy的优先级

集群测试记录
设置镜像策略前:


RabbitMQ安装 - 集群(镜像)_第2张图片
image.png

为/ft_host设置镜像策略:

sudo rabbitmqctl set_policy -p /ft_host ha-2 "^queue\.ha\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
  • -p /ft_host 为虚拟主机/ft_host设置策略
  • ha-2 策略名称
  • "^" 代表所有的队列都适应此策略,这里是一个正则表达式
  • "ha-mode":"exactly" 模式为exactly
  • "ha-params":2 在两个节点上进行镜像
  • "ha-sync-mode":"automatic" 自动同步已经存储的消息

设置镜像策略后

RabbitMQ安装 - 集群(镜像)_第3张图片
image.png

不论持久化队列还是非持久化队列,设置策略后,都会自动创建镜像

机器 节点类型
VM-16-6-ubuntu disc节点
VM-16-5-ubuntu ram节点
VM-16-9-ubuntu ram节点

queue、exchange为非持久化时(即durable=false)
当queue所在的节点down掉后,queue内未消费的消息将丢失,但不影响继续使用。
非queue所在的节点down掉后,不会丢失信息,也不影响使用。

你可能感兴趣的:(RabbitMQ安装 - 集群(镜像))