首先需要在我们的服务器上检查rabbitMQ运行是否有问题
systemctl status rabbitmq-server
检查没问题后就停止该服务,因为集群不需要我们使用这种传统的方式启动服务,有专门的启动RabbitMQ集群的命令
systemctl stop rabbitmq-server
接下来开始部署集群,首先安装第一个节点rabbitmq-1
sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &
运行完成后的界面如下:
安装第二个节点,这里需要改变端口 5673和15673
sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit-2 rabbitmq-server start &
运行成功结果是:
通过命令ps aux|grep rabbitmq查看这两个节点是否运行成功
将rabbit-1作为主节点
# 停止应用 [root@VM-8-7-centos ~]# sudo rabbitmqctl -n rabbit-1 stop_app Stopping rabbit application on node rabbit-1@VM-8-7-centos ... # 目的是清除节点上的历史数据,如果不清除将无法把节点加入到集群中 [root@VM-8-7-centos ~]# sudo rabbitmqctl -n rabbit-1 reset Resetting node rabbit-1@VM-8-7-centos ... # 启动应用 [root@VM-8-7-centos ~]# sudo rabbitmqctl -n rabbit-1 start_app Starting node rabbit-1@VM-8-7-centos ... ………… Starting broker... completed with 3 plugins.
然后将rabbit-2 作为从节点
# 停止应用 [root@VM-8-7-centos ~]# sudo rabbitmqctl -n rabbit-2 stop_app Stopping rabbit application on node rabbit-2@VM-8-7-centos ... # 目的是清除节点上的历史数据,如果不清除将无法把节点加入到集群中 [root@VM-8-7-centos ~]# sudo rabbitmqctl -n rabbit-2 reset Resetting node rabbit-2@VM-8-7-centos ... # 将rabbit-2加入到rabbit-1(主节点)集群当中 最后的@VM-8-7-centos是服务器的主机名 每行命令的最前面就是 [root@VM-8-7-centos ~]# sudo rabbitmqctl -n rabbit-2 join_cluster rabbit-1@VM-8-7-centos Clustering node rabbit-2@VM-8-7-centos with rabbit-1@VM-8-7-centos # 启动服务 [root@VM-8-7-centos ~]# sudo rabbitmqctl -n rabbit-2 start_app Starting node rabbit-2@VM-8-7-centos ... ………… Starting broker... completed with 3 plugins.
通过下方的命令验证这个集群是否已经生效
sudo rabbitmqctl cluster_status -n rabbit-1
有个问题就是主节点宕机了,从节点是无法完成消息的写入。
集群web界面管理与调试首先把端口 5673 和 15673 这两个端口都打开
给集群节点1 添加账号密码和权限
# 添加账号 [root@VM-8-7-centos ~]# rabbitmqctl -n rabbit-1 add_user hs hs Adding user "hs" ... Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more. # 为账号授予角色信息 [root@VM-8-7-centos ~]# rabbitmqctl -n rabbit-1 set_user_tags hs administrator Setting tags for user "hs" to [adminstrator] ... # 授予权限 [root@VM-8-7-centos ~]# rabbitmqctl -n rabbit-1 set_permissions -p / hs ".*" ".*" ".*" Setting permissions for user "hs" in vhost "/" ... # 其他命令 rabbitmqctl -n rabbit-1 change_password Username Newpassword # 修改密码 rabbitmqctl -n rabbit-1 delete_user Username # 删除用户 rabbitmqctl -n rabbit-1 list_users # 查看用户清单
不需要给集群节点2添加账号密码和权限了,因为这已经是一个集群了,创建用户、交换机、队列、交换机绑定队列、这一类 *** 作都会同步。
然后登陆图形化界面就可以看见两个RabbitMQ服务了,如果其中一个宕机了,会从绿色变为红色
这种形式是单机部署多应用,如果主节点宕机了,从节点不能写入。
如果是多机部署多应用,RabbitMQ有一个erlang.cookie文件,需要保证多态机器的该文件内容相同,这里面其实就是一串字符串。cookie文件的存放路径在/var/lib/rabbitmq/.erlang.cookie 这是一个隐藏文件,需要加-a查看。还有就是将节点2加入到节点1集群时,我最后@后面使用的是本服务器的主机名,因为是单机我才能这么用,如果是多台机器的话这里就需要改为ip地址。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)