文章目录

一、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添加策略的,所以你还是得先配置普通集群,然后才能设置镜像队列.

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

RabbitMQ 集群部署及配置相关推荐

  1. rabbitmq集群部署及配置

    rabbitmq集群部署及配置 文章目录 rabbitmq集群部署及配置 前言 一.原理介绍 二.部署方案 1.环境介绍 2.部署过程 小结 前言 消息中间件rabbitmq,一般以集群方式部署,主要 ...

  2. Linux中级实战专题篇:rabbitmq(消息中间件p2p模式和pub模式,消息队列rabbitmq详解,单机安装,集群部署以及配置实战)

    一.消息中间件相关概念 1.简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台相关 的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息 队列模型,可以在分布 ...

  3. RabbitMQ集群部署指南

    文章目录 1.单机部署 1.1.下载镜像 1.2.安装MQ 2.安装DelayExchange插件 2.1.下载插件 2.2.上传插件 2.3.安装插件 3.集群部署 2.1.集群分类 2.2.获取c ...

  4. RabbitMQ集群部署

    一般来说,RabbitMQ部署分布式集群架构有如下三种: 1.Cluster 2.Federation 3.Shovel 其中最常用的就是cluster模式(集群),它可以动态增加节点或减少,但只支持 ...

  5. RabbitMQ集群部署教程(Linux)

    一.简介 Messaging that just works - RabbitMQ是一个开源的遵循AMQP协议实现的基于Erlang语言编写,支持多种客户端(语言),用于在分布式系统中存储消息,转发消 ...

  6. rabbitmq集群安装与配置(故障恢复)

    0.首先按照http://www.cnblogs.com/zhjh256/p/5922562.html在至少两个节点安装好(不建议单机,没什么意义) 1.先了解rabbitmq集群架构,http:// ...

  7. Springboot整合Quartz集群部署以及配置Druid数据源

    参考链接: https://blog.csdn.net/wangmx1993328/article/details/105441308 https://blog.csdn.net/qq_3966905 ...

  8. storm集群部署和配置过程详解

    ---恢复内容开始--- 先整体介绍一下搭建storm集群的步骤: 设置zookeeper集群 安装依赖到所有nimbus和worker节点 下载并解压storm发布版本到所有nimbus和worke ...

  9. 【联邦学习】FATE 集群部署 step2

    [联邦学习]FATE 集群部署step1 [联邦学习]FATE 集群部署step3 配置虚拟机网络 配置虚拟机镜像 all 指的是2个虚拟机都要操作 f1 只的是1号虚拟机 f2 指的是2号虚拟机 配 ...

最新文章

  1. Python基础---线程
  2. dtrace-debug
  3. 利用redis漏洞远程添加计划任务挖取比特币
  4. html 调入网页,HTML 文件怎么从外部调入 HTML 模板(如头部,页尾这些公共的部分)?...
  5. 【POJ - 2019】Cornfields(二维st表,模板)
  6. oracle错误1327,Oracle中的PGA监控报警分析(r11笔记第97天)
  7. 7.9模拟赛T1图的遍历(dfs)
  8. 题目1452:搬寝室(dp题目)
  9. 阿里云服务器——centos7下安装MySQL,并且实现远程连接
  10. (基础篇)PHP获取时间、时间戳的各种格式写法汇总
  11. hbase 和 zookeeper建立连接_我对Hbase的一些理解——HMaster与Zookeeper之间的交互机制...
  12. easymock接口模拟_EasyMock模拟异常
  13. 解决局域网共享时提示:你没有权限访问,请与网络管理员联系
  14. Oracle Sql优化一例---利用函数索引
  15. PROTEL技术应用技巧总结
  16. 网络中的网络 NiN 动手学深度学习v2 pytorch
  17. arduino:废旧光驱DIY激光雕刻机(完善中……)
  18. 点击复制某段文本方法
  19. C语言任意输入三个数构成三角形,随便输入三个数,看能否组成一个三角形
  20. 拼多多砍价背后的逻辑

热门文章

  1. 001_把图形如何移动到原点位置
  2. [人工智能学习日志]深度学习-LSTM共享单车使用量预测
  3. ntp服务器时钟同步
  4. WiFi接入微信公众号认证上网,对微信公众号有什么要求?
  5. 【编程题】【Scratch二级】2019.09 绘制雪花图案
  6. vlookup使用步骤_Vlookup函数最经典的12种用法
  7. Python采集热门城市景点数据+简单制作数据可视化图
  8. 来杯java表情包,完整版开放下载
  9. android小记之FlashLight --- 高仿小米手电筒
  10. MySQL中的外键(foreign key)