RabbitMQ 集群部署及配置

文章目录

一、rabbitmq简述

Rabbitmq 有 3 种模式,但集群模式是 2 种

二、环境准备及软件安装

修改 hosts 文件 (3 台)

三、账号配置

四、启动 rabbitmq 内置 web 插件, 管理 rabbitmq 账号等信息 (3 台)

五、搭建 rabbitmq 的一般模式集群

六、Rabbitmq 集群添加节点

打开网页管理页面查看 nodes​编辑

七、搭建 rabbitmq 的镜像高可用模式集群


一、rabbitmq简述

RabbitMQ一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。

Rabbitmq 有 3 种模式,但集群模式是 2 种

单一模式:即单机情况不做集群,就单独运行一个 rabbitmq 而已。

普通模式:默认模式,以两个节点(rabbit01、rabbit02)为例,对于 Queue 来说,消息实体只存在于其中一个节点 rabbit01(或者 rabbit02),rabbit01 和 rabbit02 两个节点仅有相同的元数据,即队列的结构。当消息进入 rabbit01 的 Queue 后,consumer 从 rabbit02 消费时,RabbitMQ 会临时在 rabbit01、rabbit02 间进行消息传输,把 A 中的消息实体取出并经过 B 发送给 consumer。

镜像模式: 把需要的队列做成镜像队列,存在与多个节点属于 RabbitMQ 的 HA 方案。该模式解决了普通模式中的问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。所以在对可靠性要求较高的场合中适用。

二、环境准备及软件安装

3台centos7操作系统,ip分别为

192.168.22.155

192.168.22.157

192.168.22.161

关闭防火墙,selinux

修改 hosts 文件 (3 台)

[root@rabbitmq1 ~]# vi /etc/hosts

 安装 erlang 环境和rabbitmq-server (3 台)--centos7

[root@rabbitmq1 ~]# yum install -y epel-release && yum -y install erlang  erlang是rabbitmq的开发语言

[root@rabbitmq1 ~]# yum -y install rabbitmq-server

启动服务 (3 台)

[root@rabbitmq1 ~]# systemctl start rabbitmq-server.service 
[root@rabbitmq1 ~]# systemctl stop rabbitmq-server.service 
[root@rabbitmq1 ~]# systemctl enable rabbitmq-server.service 
[root@rabbitmq1 ~]# systemctl restart rabbitmq-server.service 

三、账号配置

安装启动后其实还不能在其它机器访问,rabbitmq 默认的 guest 账号只能在本地机器访问, 如果想在其它机器访问必须配置其它账号

配置管理员账号

[root@rabbitmq1 ~]# rabbitmqctl add_user admin admin 可以创建管理员用户,负责整个 MQ 的运维

[root@rabbitmq1 ~]# rabbitmqctl set_user_tags admin administrator  赋予其 administrator 角色

[root@rabbitmq1 ~]# rabbitmqctl add_user  user_monitoring  passwd_monitor  创建 RabbitMQ 监控用户,负责整个 MQ 的监控

[root@rabbitmq1 ~]# rabbitmqctl set_user_tags user_monitoring monitoring  创建某个项目的专用用户,只能访问项目自己的 virtual hosts

[root@rabbitmq1 ~]# rabbitmqctl set_user_tags user_monitoring management

[root@rabbitmq1 ~]# rabbitmqctl list_users  创建和赋角色完成后查看并确认

四、启动 rabbitmq 内置 web 插件, 管理 rabbitmq 账号等信息 (3 台)

[root@rabbitmq1 ~]# rabbitmq-plugins enable rabbitmq_management 

[root@rabbitmq1 ~]# systemctl restart rabbitmq-server.service  重启服务

启动起来就可以访问,三台机器哪台都行, http:// 你的地址:15672

 centos7使用用户guest、密码guest登录,这个账户拥有所有的权限

页面如下:

五、搭建 rabbitmq 的一般模式集群

统一 erlang.cookie 文件中 cookie 值

必须使集群中也就是rabbitmq2,rabbitmq3这两台机器的.erlang.cookie 文件中 cookie 值一致,且权限为 owner 只读。

[root@rabbitmq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie 192.168.22.157:/var/lib/rabbitmq/.erlang.cookie

[root@rabbitmq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie 192.168.22.161:/var/lib/rabbitmq/.erlang.cookie

[root@rabbitmq2 ~]# chmod 600 /var/lib/rabbitmq/.erlang.cookie

[root@rabbitmq3 ~]# chmod 600 /var/lib/rabbitmq/.erlang.cookie

查看集群状态

[root@rabbitmq1 ~]# rabbitmqctl status

[root@rabbitmq1 ~]# rabbitmqctl cluster_status

六、Rabbitmq 集群添加节点

重启 rabbitmq1机器中 rabbitmq 的服务

在 rabbitmq2,rabbitmq3 分别执行。

[root@rabbitmq1 ~]# systemctl restart rabbitmq-server.service

[root@rabbitmq2 ~]# rabbitmqctl stop_app

[root@rabbitmq2 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq1

[root@rabbitmq2 ~]# rabbitmqctl start_app

[root@rabbitmq2 ~]# rabbitmq-plugins enable rabbitmq_management

打开网页管理页面查看 nodes

 如此便可以啦,你可以做下测试。

七、搭建 rabbitmq 的镜像高可用模式集群

首先镜像模式要依赖policy模块,这个模块是做什么用的呢?

policy中文来说是政策,策略的意思,那么他就是要设置,那些Exchanges或者queue的数据需要复制,同步,如何复制同步?对就是做这些的。

[root@rabbitmq1 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

参数意思为:

ha-all:为策略名称。

^:为匹配符,只有一个^代表匹配所有,^zlh为匹配名称为zlh的exchanges或者queue。

ha-mode:为匹配类型,他分为3种模式:

  • all-所有(所有的 queue),

  • exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器),

  • nodes-指定(需配置ha-params参数,此参数为数组类型比如["3rabbit@F","rabbit@G"]这样指定为F与G这2台机器。)。

镜像队列是基于普通的集群模式

1.点击admin菜单–>右侧的Policies选项–>左侧最下下边的Add / update a policy
2.按照图中的内容根据自己的需求填写
3.点击Add policy添加策略的,所以你还是得先配置普通集群,然后才能设置镜像队列.

【注意】书到用时方恨少,知识需要一定的积累。少熬夜,多看书。

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
RabbitMQ是一款基于AMQP协议的开源消息队列系统,它可以让应用程序之间进行可靠的异步消息传递。 RabbitMQ支持多个节点的分布式部署,以提高可用性和性能。 以下是RabbitMQ集群部署的步骤: 1. 安装Erlang和RabbitMQ 首先需要安装Erlang和RabbitMQ。可以从官方网站下载安装包并按照说明进行安装。 2. 创建配置文件 在每个节点上,需要创建一个配置文件,该文件将指定节点的名称、IP地址、端口、群集节点等信息。可以使用默认配置文件,并在该文件中添加以下内容: ``` cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config cluster_formation.classic_config.nodes.1 = rabbit@node1 cluster_formation.classic_config.nodes.2 = rabbit@node2 cluster_formation.classic_config.nodes.3 = rabbit@node3 ``` 其中,`rabbit@node1`、`rabbit@node2`、`rabbit@node3`是节点的名称,需要根据实际情况进行更改。 3. 启动节点 在每个节点上启动RabbitMQ服务: ``` rabbitmq-server -detached ``` 4. 加入群集 在每个节点上,使用以下命令将节点加入群集: ``` rabbitmqctl join_cluster rabbit@node1 ``` 其中,`rabbit@node1`是群集中的一个节点,需要根据实际情况进行更改。 5. 启动群集 在任一节点上,使用以下命令启动群集: ``` rabbitmqctl start_app ``` 6. 验证群集状态 使用以下命令验证群集状态: ``` rabbitmqctl cluster_status ``` 如果输出内容包含所有节点的名称,则表示群集已经成功部署。 注意:在RabbitMQ集群中,每个队列都将在某个节点上运行。如果某个节点宕机,该节点上的队列将无法访问。因此,需要使用镜像队列来确保数据的可靠性。具体的做法是将队列的镜像复制到其他节点上,以确保在某个节点宕机时,队列可以在其他节点上运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你是我的导航

谢谢您的打赏,您的鼓励。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值