一、环境要求
- 1、所有节点需要在同一个局域网内。
- 2、所有节点需要有相同的 erlang cookie,否则不能正常通信,为了实现cookie内容一致,采用scp的方式进行。
- 3、准备三台主机,配置相同
- 192.168.204.20 设置主机名rabbitmq1
- 192.168.204.21 设置主机名rabbitmq2
- 192.168.204.22 设置主机名rabbitmq3
- 4、集群中所有节点都需要hosts文件解析
二、部署过程(每个节点都要配置)
- 1.所有节点配置:vim /etc/hosts
192.168.204.20 rabbitmq1
192.168.204.21 rabbitmq2
192.168.204.22 rabbitmq3
- 2.所有节点安装rabbitmq和erlang
yum install erlang rabbitmq-server -y
修改配置文件
cp /usr/share/doc/rabbitmq-server-3.3.5/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
安装的版本不同,文件位置也可能不同,根据rabbitmq版本而定
vim /etc/rabbitmq/rabbitmq.config
把第53行的:{loopback_users, []} 解除注释
- 3.导入rabbitmq的管理界面
rabbitmq-plugins enable rabbitmq_management
重启rabbitmq服务
systemctl restart rabbitmq-server.service
- 4.设置erlang运行节点
- 一定要保证三台机器的cookie内容一致
- 找到erlang.cookie文件位置
- 源码安装的一般会存在.erlang.cookie文件
- rpm安装在/var/lib/rabbitmq/.erlang.cookie
使用scp将rabbit1中的.erlang.cookie传给rabbitmq2和rabbitmq3
scp /var/lib/rabbitmq/.erlang.cookie rabbitmq2:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie rabbitmq3:/var/lib/rabbitmq/.erlang.cookie
重启一下
systemctl restart rabbitmq-server.service
- 操作rabbitmq2和rabbitmq3
关闭rabbitmq服务
rabbitmqctl stop
启动 RabbitMQ 服务器,并将其放在后台运行
2、3 独立运行节点,warning提示不用理会
rabbitmq-server -detached
- 查看各个节点状态
rabbitmqctl cluster_status
每台主机看到的只有一个的server信息。目前尚未组合成集群
- 5.添加用户并设置密码(每个节点都配置)
- 由于guest这个用户,只能在本地访问,所以我们要在每个节点上,新增一个用户并赋予对/的所有权限,然后添加到管理员组中,让此用户能够远程访问
添加用户
rabbitmqctl add_user blood 1234
设置权限
rabbitmqctl set_permissions -p "/" blood ".*" ".*" ".*"
添加到管理组
rabbitmqctl set_user_tags blood administrator
- 6.访问测试
- http://ip:15672 例:http://192.168.204.20:15672
- 账号:blood
- 密码:1234
- 此时每个节点是单独的一台RabbitMQ,下面将他们组成集群。
三、组成集群
-
简介:
rabbitmq-server 启动时,会一起启动:节点和应用,它预先设置RabbitMQ应用为standalone(脱机)模式。要将一个节点加入到现有的集群中,你需要停止这个应用,并将节点设置为原始状态。如果使用rabbitmqctl stop,应用和节点都将被关闭。所以使用rabbitmqctl stop_app仅仅关闭应用。(停应用,不停止节点) -
1.将rabbitmq2和rabbitmq3加入到rabbitmq1中组成集群
- 操作rabbitmq2
仅停止应用,不关闭节点(注意是节点2)
rabbitmqctl stop_app
加入rabbitmq1
集群名字一定不要写错(查看rabbitmq1 的节点状态)
rabbitmqctl join_cluster rabbit@rabbitmq1
启动应用
rabbitmqctl start_app
- 操作rabbitmq3
仅停止应用,不关闭节点(注意是节点3)
rabbitmqctl stop_app
加入rabbitmq1
集群名字一定不要写错(查看rabbitmq1 的节点状态)
rabbitmqctl join_cluster rabbit@rabbitmq1
启动应用
rabbitmqctl start_app
- 2.在任意节点上查看集群状态
rabbitmqctl cluster_status
看到这种情况,说明集群配置成功。
此时删除一个man用户会发现都删除了
rabbitmqctl delete_user man