博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ系列之高可用集群
阅读量:6363 次
发布时间:2019-06-23

本文共 1890 字,大约阅读时间需要 6 分钟。

为了实现高可用,我采用LVS+双节点RabbitMq , 架构图如下:

在RabbitMQ之前放了LVS, LVS 采用 rr 轮询算法 , 目的是将请求平均分配到两个真实节点,并配置5672端口监控,异常时转移到另外的节点。

在 ,做完之后测试发现,用上LVS之后,测试会报错,服务器端的队列名称都是一致的,但是队列内容却并不是一致,看来需要做同步。

Rabbit提供镜像功能,需要基于rabbitmq策略来实现,政策是用来控制和修改群集范围的某个vhost队列行为和Exchange行为 : 

set_policy [-p vhostpath] {name} {pattern} {definition} [priority]

eg. 

1 rabbitmqctl set_policy ha-allqueue "^" '{"ha-mode":"all"}'

pattern 是匹配队列名称的正则表达式 , 进行区分哪些队列使用哪些策略

definition 其实就是一些arguments, 支持如下参数:

  1. ha-modeOne of allexactly or nodes (the latter currently not supported by web UI).
  2. ha-paramsAbsent if ha-mode is all, a number if ha-mode is exactly, or an array of strings if ha-mode is nodes.
  3. ha-sync-modeOne of manual or automatic. //如果不指定该参数默认为manual,这个在高可用集群测试的时候详细分析 
  4. federation-upstream-setA string; only if the federation plugin is enabled.

ha-mode 的参数:

ha-mode ha-params Result
all (absent) Queue is mirrored across all nodes in the cluster. When a new node is added to the cluster, the queue will be mirrored to that node.
exactly count Queue is mirrored to count nodes in the cluster. If there are less than count nodes in the cluster, the queue is mirrored to all nodes. If there are more than countnodes in the cluster, and a node containing a mirror goes down, then a new mirror will not be created on another node. (This is to prevent queues migrating across a cluster as it is brought down.)
nodes node names Queue is mirrored to the nodes listed in node names. If any of those node names are not a part of the cluster, this does not constitute an error. If none of the nodes in the list are online at the time when the queue is declared then the queue will be created on the node that the declaring client is connected to.

在管理policy的时候WebUI是非常不错:

Definition加入两项:

ha-mode:all 

ha-sync-mode:automatic 

到这里配置已经完成,接下来进行测试。

两个节点之间就会开始同步消息了。

这时借助前面的LVS / HA 就可以使用高可用了 。

 

 

 

转载于:https://www.cnblogs.com/DanielChow/p/3373518.html

你可能感兴趣的文章
JQuery学习笔记-JQuery的CSS DOM操作
查看>>
AngularJS 字符串-ng-bind
查看>>
关于质数的数学算法
查看>>
bootstrap-水平表单
查看>>
vsftpd详解及实例配置
查看>>
正式学习 React(三)番外篇 reactjs性能优化之shouldComponentUpdate
查看>>
openindiana通过源码安装软件方法
查看>>
html中的行内元素和块级元素有哪些。
查看>>
Windows server 2008 R2 登录密码恢复
查看>>
运维排错思路分享之“用户重复收到了密码到期提醒邮件?”
查看>>
windows 资源监控常用指标分析
查看>>
Linux忘记 root密码的解决办法
查看>>
通用性好的两组2k3 server sn
查看>>
python操作文件
查看>>
spec打包方法
查看>>
CENTOS下安装phpmyadmin提示:缺少mcrypt,请检查PHP配置
查看>>
用python实现调用jar包
查看>>
父元素与子元素之间的margin-top问题(css hack)
查看>>
Visual Studio安装项目中将用户选择的安装路径写入注册表的方法[转]
查看>>
【转载】VBA:调用文件夹对话框的几种方法
查看>>