centos7.3 rabbitmq集群

  

<强> RabbitMQ集群概述

,,,通过Erlang的分布式特性(通过神奇的饼干认证节点)进行RabbitMQ集群,各RabbitMQ服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。

,,,这些节点通过RabbitMQ哈队列(镜像队列)进行消息队列结构复制。本方案中搭建3个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ集群对外就能提供服务。


<强>安装Erlang, RabbitMQ

<强> http://yanconggod.blog.51cto.com/1351649/1933009

修改/etc/hosts

加入集群3个节点的对应关系:

10.0.0.231, node1

10.0.0.232, node2

10.0.0.233, node3

<强>

<强>设置Erlang饼干

,RabbitMQ节点之间和命令行工具(如rabbitmqctl)是使用饼干互通的,饼干是一组随机的数字+字母的字符串。当RabbitMQ服务器启动的时候,Erlang VM会自动创建一个随机内容的饼干文件。如果是通过百胜源安装RabbitMQ的话,Erlang饼干文件在/var/lib/RabbitMQ/.erlang。饼干。如果是通过源码安装的RabbitMQ, Erlang饼干文件$ HOME/.erlang。饼干。

本文演示的实例是用源码安装,由于这个文件权限是400年,所以需要先修改node2, node3中的该文件权限为777:

node1:   yancongadmin@node1: ~ $, chmod  777年,.erlang.cookie      node2:   yancongadmin@node2: ~ $, chmod  777年,.erlang.cookie   yancongadmin@node2: ~ $, scp  -r  node1:/home/yancongadmin/.erlang.cookie  ~/yancongadmin@node1& # 39; s 密码:   .erlang.cookie ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 100%,,, 20,,,,, 0.0 kb/s , 00:00         node3:   yancongadmin@node3: ~ $, chmod  777年,.erlang.cookie   yancongadmin@node3: ~ $, scp  -r  node1:/home/yancongadmin/.erlang.cookie  ~/yancongadmin@node1& # 39; s 密码:   .erlang.cookie ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 100%,,, 20,,,,, 0.0 kb/s ,, 00:00

分别在node1, node2, node3将权限恢复过来:

yancongadmin@node1: ~,美元chmod  400年,.erlang.cookie

最后分别在确认三台机器上的.erlang。cookie的值是一致的

yancongadmin@node1: ~,美元cat  .erlang.cookie   VORMVSAAOFOFEQKTNWBB   yancongadmin@node2: ~ $, cat  .erlang.cookie   VORMVSAAOFOFEQKTNWBB   yancongadmin@node3: ~ $, cat  .erlang.cookie   VORMVSAAOFOFEQKTNWBB

使用分离参数,在后台启动兔子节点

yancongadmin@node1: ~,美元rabbitmqctl 停止   Stopping 以及halting  node  rabbit@node1 …   Gracefully  halting  Erlang  VM   yancongadmin@node1: ~ $, rabbitmq-server 分离

通过rabbitmqctl cluster_status命令,可以查看和个节点的状态,节点的名称是rabbit@shorthostname,

node1:   yancongadmin@node1: ~ $, rabbitmqctl  cluster_status   Cluster  status  of  node  rabbit@node1 …   [{节点,[{圆盘,[rabbit@node1]}]},   ,{running_nodes, [rabbit@node1]},   ,{cluster_name & lt; & lt;“rabbit@node1"祝辞祝辞},   []},{分区,   ,{警报,[{rabbit@node1, []}]}]      node2:   yancongadmin@node2: ~ $, rabbitmqctl  cluster_status   Cluster  status  of  node  rabbit@node2 …   [{节点,[{圆盘,[rabbit@node2]}]},   ,{running_nodes, [rabbit@node2]},   ,{cluster_name & lt; & lt;“rabbit@node2"祝辞祝辞},   []},{分区,   ,{警报,[{rabbit@node2, []}]}]   ,   ,   node3:   yancongadmin@node3: ~ $, rabbitmqctl  cluster_status   Cluster  status  of  node  rabbit@node3 …   [{节点,[{圆盘,[rabbit@node3]}]},   ,{running_nodes, [rabbit@node3]},   ,{cluster_name & lt; & lt;“rabbit@node3"祝辞祝辞},   []},{分区,   ,{警报,[{rabbit@node3, []}]}]

<强>将node1, node2, node3组成集群

因为RabbitMQ服务器启动时,会一起启动节点和应用,它预先设置RabbitMQ应用为独立的模式。要将一个节点加入到现有的集群中,你需要停止这个应用并将节点设置为原始状态,然后就为加入集群准备好了。如果使用。/rabbitmqctl停止,应用和节点都将被关闭,所以使用rabbitmqctl stop_app仅仅关闭应用只

node2:   yancongadmin@node2: ~ $, rabbitmqctl  stop_app   Stopping  node  rabbit@node2 …   yancongadmin@node2: ~ $, rabbitmqctl  join_cluster  rabbit@node1   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

centos7.3 rabbitmq集群