RabbitMQ学习之集群部署
来源:互联网 发布:单片机 液晶屏与电机 编辑:程序博客网 时间:2024/06/05 00:47
我们先搭建一个普通集群模式,在这个模式基础上再配置镜像模式实现高可用,Rabbit集群前增加一个反向代理,生产者、消费者通过反向代理访问RabbitMQ集群。
架构图如下:
设计架构可以如下:在一个集群里,有4台机器,其中1台使用磁盘模式,另2台使用内存模式。2台内存模式的节点,无疑速度更快,因此客户端(consumer、producer)
连接访问它们。而磁盘模式的节点,由于磁盘IO相对较慢,因此仅作数据备份使用,另外一台作为反向代理。
一、4台机器如下(通过/etc/sysconfig/network修改主机名):
192.168.36.217 M-zhutianwei-A (Rabbit)
192.168.36.102 M-zhutianwei-C (Rabbit)
192.168.36.136 S-zhutianwei-B (Rabbit)
192.168.36.127 zhutianwei (负载均衡)
将上面的Rabbit主机解析都加入到每个Rabbit主机的/etc/hosts中
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.36.217 M-zhutianwei-A192.168.36.102 M-zhutianwei-C192.168.36.136 S-zhutianwei-B二、在rabbit机器上部署RabbitMq,并可以正常启动,参考:http://blog.csdn.net/zhu_tianwei/article/details/40832185
三、设置每个节点Cookie
关闭所有rabbit服务,将M-zhutianwei-A 节点的/root/.erlang.cookie内容复制到其他两台机器。
#chmod 777 /root/.erlang.cookie
复制内容
#chmod 400 /root/.erlang.cookie
保持文件权限一致。
四、使用detached参数独立运行启动服务
nohup /usr/local/rabbitmq/sbin/rabbitmq-server –detached &
查看节点下的集群:/usr/local/rabbitmq/sbin/rabbitmqctl cluster_status
Cluster status of node 'rabbit@m-zhutianwei-a' ...
[{nodes,[{disc,['rabbit@m-zhutianwei-a']}]},
{running_nodes,['rabbit@m-zhutianwei-a']},
{cluster_name,<<"rabbit@M-zhutianwei-A">>},
{partitions,[]}]
五、将M-zhutianwei-C、S-zhutianwei-B作为内存节点与M-zhutianwei-A连接起来,执行如下命令:
/usr/local/rabbitmq/sbin/rabbitmqctl stop_app
/usr/local/rabbitmq/sbin/rabbitmqctl join_cluster --ram rabbit@m-zhutianwei-a
/usr/local/rabbitmq/sbin/rabbitmqctl start_app
上述命令先停掉rabbitmq应用,然后调用cluster命令,将M-zhutianwei-C或S-zhutianwei-B连接到,使两者成为一个集群,最后重启rabbitmq应用。在这个cluster命令下,M-zhutianwei-C、S-zhutianwei-B是内存节点,M-zhutianwei-A是磁盘节点(RabbitMQ启动后,默认是磁盘节点)。
如果要使M-zhutianwei-C或S-zhutianwei-B在集群里也是磁盘节点,join_cluster 命令去掉--ram参数即可
#/usr/local/rabbitmq/sbin/rabbitmqctl join_cluster rabbit@queue
只要在节点列表里包含了自己,它就成为一个磁盘节点。在RabbitMQ集群里,必须至少有一个磁盘节点存在。
六、运行cluster_status命令查看集群状态
/usr/local/rabbitmq/sbin/rabbitmqctl cluster_status
Cluster status of node 'rabbit@s-zhutianwei-b' ...[{nodes,[{disc,['rabbit@m-zhutianwei-a']}, {ram,['rabbit@s-zhutianwei-b','rabbit@m-zhutianwei-c']}]}, {running_nodes,['rabbit@m-zhutianwei-c','rabbit@m-zhutianwei-a', 'rabbit@s-zhutianwei-b']}, {cluster_name,<<"rabbit@M-zhutianwei-A">>}, {partitions,[]}]
七、往任意一台集群节点里写入消息队列,会复制到另一个节点上,我们看到两个节点的消息队列数一致。
Listing queues ...
helloword 1
这样RabbitMQ集群就正常工作了。这种模式更适合非持久化队列,只有该队列是非持久的,客户端才能重新连接到集群里的其他节点,并重新创建队列。假如该队列是持久化的,那么唯一办法是将故障节点恢复起来。
上面配置RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。下一节我们看看如何镜像模式来解决复制的问题,从而提高可用性 。
- RabbitMQ学习之集群部署
- RabbitMQ学习之集群部署
- RabbitMQ学习之集群模式
- RabbitMQ集群环境部署
- RabbitMQ集群部署
- RabbitMQ学习之集群消息可靠性测试
- rabbitmq集群部署及配置
- 集群之 -- rabbitmq
- RabbitMQ学习之集群镜像模式配置
- RabbitMQ学习之集群镜像模式配置
- k8s学习笔记之etcd集群部署
- rabbitmq 学习-16 rabbitmq集群-1 介绍
- RabbitMQ集群高可用部署配置
- 高可用rabbitmq集群服务部署步骤
- Rabbitmq集群HA高可用环境部署
- Rabbitmq集群高可用部署详细
- Rabbitmq集群高可用部署详细
- Rabbitmq集群高可用部署详细
- Linux中查看CPU信息
- last day on windows programming
- python核心编程第九章(9-10)
- highcharts特殊定制:x轴文字竖直显示(兼容各浏览器)
- 远程备份还原SQL数据库
- RabbitMQ学习之集群部署
- UVA - 757 Gone Fishing 贪心+枚举
- web服务层不需要外键
- 程序员也文艺:海燕——高尔基
- 第九章 内联函数
- zoj 3430 Detect the Virus(AC自动机)
- Java Comparator (比较器接口 Comparator)
- 优酷真实视频地址解析
- HDOJ题目1231最大连续子序列(动态规划)