栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Rabbitmq高可用集群搭建

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Rabbitmq高可用集群搭建

1. 使用集群的原因

最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞

RabbitMQ集群分为普通集群和镜像集群,普通集群下存在单点故障,服务整体不可用。

2. 搭建步骤,必须关闭三台机器的防火墙,必须关闭

没有三台服务器的可以克隆,右键虚拟机——>管理——>克隆(复制完整的虚拟机)

1.修改三台主机名称
命令:vim /etc/hostname 再重启 reboot(必须重启)
.
2.配置各个节点的 hosts 文件,让各个节点都能互相识别对方
命令:vim /etc/hosts
192.211.55.74 node01
192.211.55.75 node02
192.211.55.76 node03

3.以确保各个节点的 cookie 文件使用的是同一个值
将 rabbit-node1 上的 .erlang.cookie 文件拷贝到其他两台主机上。该 cookie 文件相当于密钥令牌,集群中的 >RabbitMQ 节点需要通过交换密钥令牌以获得相互认证,因此处于同一集群的所有节点需要具有相同的密钥令>>牌,否则在搭建过程中会出现 Authentication Fail 错误。
RabbitMQ 服务启动时,erlang VM 会自动创建该 cookie 文件,默认的存储路径为 /var/lib/rabbitmq/.erlang.cookie 或 $HOME/.erlang.cookie,该文件是一个隐藏文件,需要使用 ls -al 命令查看。(拷贝.cookie时,各节点都必须停止MQ服务):
在 node1 上执行远程操作命令:
.
scp /var/lib/rabbitmq/.erlang.cookie root@node02:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@node03:/var/lib/rabbitmq/.erlang.cookie
.
4.启动 RabbitMQ 服务,顺带启动 Erlang 虚拟机和 RbbitMQ 应用服务(在三台节点上分别执行以下命令)
命令:rabbitmq-server -detached
.
5.在节点2执行以下 命令:
rabbitmqctl stop_app
(rabbitmqctl stop 会将 Erlang 虚拟机关闭,rabbitmqctl stop_app 只关闭 RabbitMQ 服务)
.
rabbitmqctl reset
(从管理数据库中移除所有数据,例如配置过的用户和虚拟宿主, 删除所有持久化的消息,这个命令要在rabbitmqctl stop_app之后使用)
.
rabbitmqctl join_cluster rabbit@node01
rabbitmqctl start_app(只启动应用服务)
.
6.在节点3执行第5步
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node02 (执行这一步的时候,节点2 rabbitmqctl start_app必须已经执行完成)
rabbitmqctl start_app
.
7.集群搭建完成以后,查看集群状态
命令:rabbitmqctl cluster_status
.
8.需要重新设置用户
创建账号
rabbitmqctl add_user admin 123
设置用户角色
rabbitmqctl set_user_tags admin administrator
设置用户权限
rabbitmqctl set_permissions -p “/” admin “." ".” “.*”
.
9.解除集群节点(node2 和 node3 机器分别执行)
rabbitmqctl stop_app (必须停止和重置)
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status (查看集群状态)
rabbitmqctl forget_cluster_node rabbit@node02(node01 机器上执行,让node01机器遗忘node02,node03)

如有不对的地方,还请指出,一起努力把,加油
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号