服务器安装三节点RabbitMQ集群(2)
- 普通模式:默认的集群模式,以两个节点(1、2)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点1(或者2),1和2两个节点仅有相同的元数据,即队列的结构。当消息进入1节点的Queue后,consumer从2节点消费时,RabbitMQ会临时在1、2间进行消息传输,把1中的消息实体取出并经过2发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连1或2,出口总在1,会产生瓶颈。当1节点故障后,2节点无法取到1节点中还未消费的消息实体。如果做了消息持久化,那么得等1节点恢复,然后才可被消费;如果没有持久化的话,就会产生消息丢失的现象。
- 镜像模式:将需要消费的队列变为镜像队列,存在于多个节点,这样就可以实现RabbitMQ的HA高可用性。作用就是消息实体会主动在镜像节点之间实现同步,而不是像普通模式那样,在consumer消费数据时临时读取。缺点就是,集群内部的同步通讯会占用大量的网络带宽。
<<< 前面已经安装好了三节点的普通集群,镜像集群在普通集群的基础上添加策略即可。
如下图所示
按照上面方式添加策略,然后应用即可
- name:策略名称,随意命名,比如我这里填yue
- pattern:为匹配符,只有一个^代表匹配所有,^lzb为匹配名称为lzb的exchanges或者queue,这里我设置为匹配全部
- apply to:应用对象
- Priority:配置了多个策略时候的优先级,值越大,优先级越高。(单个策略配置意义不大)
- 注意:没有指定优先级的消息会将优先级以0对待。 对于超过优先级队列所定最大优先级的消息,优先级以最大优先级对待
- Definition: 为匹配类型,他分为3种模式:all-所有(所有的queue),exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器),nodes-指定(需配置ha-params参数,此参数为数组类型比如["[email protected]","[email protected]"]这样指定为F与G这2台机器。)
测试一下策略是否生效
我添加一个queue,
可以看到有个蓝色的框,+2,鼠标放上面,显示同步到另外两个节点2、3,说明策略生效
over