搭建RabbitMQ集群

搭建RabbitMQ集群,第1张

搭建RabbitMQ集群 集群

首先需要在我们的服务器上检查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地址。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5678863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存