说明:以下操作都以三节点集群为例,机器名标记为机器A、机器B、机器C,如果为双节点忽略机器C,如果为各多节点则与机器C操作相同
一、rabbitmq集群必要条件
1.1、绑定实体ip,即ip a所能查询到的绑定到网卡上的ip,以下是绑定方法:
1 #编辑配置路径 /etc/rabbitmq/rabbitmq-env.conf 2 NODE_IP_ADDRESS=172.16.136.133
1.2. 配置域名映射到实体ip
#配置文件1所在路径 /etc/rabbitmq/rabbitmq.config (如果是集群,每台机器都需要修改这个绑定本机实体ip) #其中rabbit@master是创建集群时所配置的参数,@后面的参数为主机名,示例中为master [ {rabbit, [ {cluster_nodes, {['rabbit@master'], disc}}, {cluster_partition_handling, ignore}, {default_user, <<"guest">>}, {default_pass, <<"guest">>}, {tcp_listen_options, [binary, {packet, raw}, {reuseaddr, true}, {backlog, 128}, {nodelay, true}, {exit_on_close, false}, {keepalive, true}]} ]}, {kernel, [ {inet_dist_listen_max, 44001}, {inet_dist_listen_min, 44001} ]} ].
#配置文件2 所在路径 /etc/hosts (如果是集群,每台机器都需要修改这个绑定本机实体ip,而且hosts文件的映射不得重复,如果重复linux系统为以最下面一条记录为准) 172.16.136.133 master 172.16.136.134 venus 172.16.136.135 venus2
二、启动停止
2.1 停止
#机器A service rabbitmq-server stop epmd -kill #机器B service rabbitmq-server stop epmd -kill #机器C service rabbitmq-server stop epmd -kill
2.2 启动
#机器A service rabbitmq-server start #机器B service rabbitmq-server start #机器C service rabbitmq-server start
三、重建集群
3.1 首先使用2.1方法停止所有机器
3.2 移除rabbitmq配置记录与存储文件
#配置文件位于 /var/lib/rabbitmq/mensia mv /var/lib/rabbitmq/mensia /var/lib/rabbitmq/mensia.bak
3.3接着 按2.2方法启动所有机器
3.4 停止被加入集群节点app
比如A、B、C三台机器,将B和C加入到A中去,需要执行以下命令
#机器B
rabbitmqctl stop_app
#机器C
rabbitmqctl stop_app
3.5 建立集群
注意此处master为唯一没有执行rabbitmqctl stop_app
的机器
1 #机器B 2 rabbitmqctl join_cluster rabbit@master 3 #机器C 4 rabbitmqctl join_cluster rabbit@master
3.6 启动集群
1 #机器B 2 rabbitmqctl start_app 3 #机器C 4 rabbitmqctl start_app
3.7 检查集群状态
在任意一台机器上执行rabbitmqctl cluster_status
命令即可检查,如下则集群正常:
3.8 添加集群配置 (见第四)
四 、添加集群配置
4.1 创建用户
例子中创建了两个用户
添加用户
add_user
,设置角色set_user_tags
,添加rabbitmq虚拟主机add_vhost
,设置访问权限set_permissions
,以下是详细用法
1 # 创建第一个用户 2 /usr/sbin/rabbitmqctl add_user 用户名 密码 3 /usr/sbin/rabbitmqctl set_user_tags 用户名 administrator 4 /usr/sbin/rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*" 5 # 创建第二个用户 6 /usr/sbin/rabbitmqctl add_user 用户名2 密码 7 /usr/sbin/rabbitmqctl set_user_tags 用户名2 management 8 /usr/sbin/rabbitmqctl add_vhost sip_ext 9 /usr/sbin/rabbitmqctl set_permissions -p sip_ext 用户名2 '.*' '.*' '.*'
备注:RabbitMQ 虚拟主机,RabbitMQ 通过虚拟主机(vhost)来分发消息。拥有自己独立的权限控制,不同的vhost之间是隔离的,单独的。
权限控制的基本单位:vhost。
用户只能访问与之绑定的vhost。
vhost是AMQP中唯一无法通过协议来创建的基元。只能通过rabbitmqctl工具来创建。
4.2 打开15672网页管理端,访问mq
/usr/sbin/rabbitmq-plugins enable rabbitmq_management
4.3 在底部导入.json后缀的配置文件即可

文档:https://www.jianshu.com/p/8414cd70bef1
优化参考:
https://www.jianshu.com/p/d05b04b33051
http://www.blogjava.net/qbna350816/archive/2016/07/30/431392.aspx