千家信息网

Rabbitmq简介及部署群集

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,博文大纲:一、MQ简介二、什么是RabbitMQ?三、安装RabbitMQ四、部署Rabbitmq集群1)部署环境2)安装rabbitmq服务3)配置host文件,并将上述两个节点加入集群4)rabb
千家信息网最后更新 2025年12月02日Rabbitmq简介及部署群集

博文大纲:
一、MQ简介
二、什么是RabbitMQ?
三、安装RabbitMQ
四、部署Rabbitmq集群
1)部署环境
2)安装rabbitmq服务
3)配置host文件,并将上述两个节点加入集群
4)rabbitmq01配置群集并将rabbitmq02、03加入01群集
5)访问web界面
6)web页面添加vhost
五、单台节点加入或退出群集
1)单节点加入集群
2)单节点退出集群

一、MQ简介

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

二、什么是RabbitMQ?

RabbitMQ是由Erlang语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件(也可称为 面向消息的中间件)。支持Windows、Linux/Unix、MAC OS X操作系统和包括JAVA在内的多种编程语言。

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

RabbitMQ使用场景:
1)异步处理;
2)应用解耦;
3)流量削峰;
4)消息通讯;

三、安装RabbitMQ

所需软件下载链接:https://pan.baidu.com/s/1vopw5bvLX4gUkabSthI0hw 提取码:ng8c

[root@localhost ~]# ls      #确认所需RPM包erlang-18.1-1.el6.x86_64.rpmrabbitmq-server-3.6.6-1.el6.noarch.rpmsocat-1.7.3.2-2.el7.x86_64.rpm[root@localhost ~]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm#安装RPM包[root@localhost ~]# chkconfig rabbitmq-server on#rabbitmq加入开机自启[root@localhost ~]# /etc/init.d/rabbitmq-server start#启动rabbitmq服务[root@localhost ~]#  ps -ef | grep rabbitmq  #确定rabbitmq正在运行,返回结果较多,省略[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management#开启rabbitmq的web管理插件,以便可以通过浏览器进行访问[root@localhost ~]#  rabbitmqctl add_user admin 123.com#创建登录用户#默认WEB管理的登录帐号和密码统一为:guest[root@localhost ~]#  rabbitmqctl set_user_tags admin administrator#将创建的admin用户添加至administrator组

默认RabbitMQ拥有如下端口号:

一般常用就15672和5672!

客户端访问:

四、部署Rabbitmq集群

Rabbitmq集群大概分为两种方式:1、普通模式:默认的集群模式,消息的尸体只存在一个节点上;2、镜像模式:把需要的队列做成镜像,存在于多个节点。ha-mode:all:列队到所有节点;exatly:随机镜像到其他节点上;nodes:镜像到指定节点上。集群节点模式:1、内存节点:工作在内存上;2、磁盘节点:工作在磁盘上;例外:内存节点和磁盘节点共同存在,提高访问速度的同时增加数据持久化。

相比内存节点虽然不写入磁盘,但是它执行比磁盘节点要好,集群中,只需要一个磁盘来保存状态就足够了,如果集群中只有内存节点,那么节点一旦宕机,所有的状态、消息都会丢失,无法实现数据的持久化。

1)部署环境

系统IP地址主机名
Centos 7192.168.1.4rabbitmq01
Centos 7192.168.1.5rabbitmq02
Centos 7192.168.1.6rabbitmq03
Centos 7192.168.1.7rabbitmq04

其中192.168.1.4就是基于上面的单台rabbitmq做的。

2)安装rabbitmq服务

在192.168.1.5和192.168.1.6两个节点上部署,192.168.1.7稍后会用到!

[root@localhost ~]# ls      #确认所需RPM包erlang-18.1-1.el6.x86_64.rpmrabbitmq-server-3.6.6-1.el6.noarch.rpmsocat-1.7.3.2-2.el7.x86_64.rpm[root@localhost ~]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm#安装RPM包[root@localhost ~]# chkconfig rabbitmq-server on#rabbitmq加入开机自启[root@localhost ~]# /etc/init.d/rabbitmq-server start#启动rabbitmq服务

3)配置host文件,并将上述两个节点加入集群

[root@localhost ~]# echo -e "192.168.1.4 rabbitmq01\n192.168.1.5 rabbitmq02\n192.168.1.6 rabbitmq03\n192.168.1.7 rabbitmq04" >> /etc/hosts[root@localhost ~]# scp /etc/hosts root@192.168.1.5:/etc/[root@localhost ~]# scp /etc/hosts root@192.168.1.6:/etc/[root@localhost ~]# scp /etc/hosts root@192.168.1.7:/etc/[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.5:/var/lib/rabbitmq/[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.6:/var/lib/rabbitmq/#将rabbitmq01的cookie节点信息复制到其他需要加入群集的节点#部署群集的时候需要节点cookie信息一致

群集中的所有节点都需重启(包括rabbitmq01)。若重启过程中卡在某个界面,需手动强制重启!

[root@rabbitmq01 ~]# ps -ef | grep rabbitmq#重启后,主机名自动更新了,确认了rabbitmq正在运行

4)rabbitmq01配置群集并将rabbitmq02、03加入01群集

以下操作可以根据主机名进行区分了!

[root@rabbitmq01 ~]# rabbitmqctl  stop_app   #停止rabbitmq节点服务[root@rabbitmq01 ~]#  rabbitmqctl reset     #重置rabbitmq节点[root@rabbitmq01 ~]# rabbitmqctl start_app    #启动rabbit节点服务Starting node rabbit@rabbitmq01 ... #复制返回的节点名称###########以下操作 rabbitmq02、03都需执行###########[root@rabbitmq02 ~]# rabbitmqctl stop_app   #停止节点服务[root@rabbitmq02 ~]# rabbitmqctl reset     #重置节点[root@rabbitmq02 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq01#以内存方式加入群集,后面是复制的rabbitmq01的节点名[root@rabbitmq02 ~]# rabbitmqctl start_app   [root@rabbitmq02 ~]# rabbitmq-plugins enable rabbitmq_management#开启rabbitmq的web管理插件,以便可以通过浏览器进行访问###########rabbitmq02、03执行完成后#################[root@rabbitmq01 ~]#  rabbitmqctl cluster_status#查看群集状态Cluster status of node rabbit@rabbitmq01 ...[{nodes,[{disc,[rabbit@rabbitmq01]},         {ram,[rabbit@rabbitmq03,rabbit@rabbitmq02]}]}, {running_nodes,[rabbit@rabbitmq02,rabbit@rabbitmq03,rabbit@rabbitmq01]}, {cluster_name,<<"rabbit@rabbitmq01">>}, {partitions,[]}, {alarms,[{rabbit@rabbitmq02,[]},          {rabbit@rabbitmq03,[]},          {rabbit@rabbitmq01,[]}]}]# rabbit01工作模式为磁盘节点;rabbit02和03为内存节点模式# running_nodes:正在运行的节点# cluster_name:节点名称# alarms:发生问题时rabbit01、02、03会进行报警#####由于刚才rabbitmq01重置,所以需要重新创建用户########[root@rabbitmq01 ~]# rabbitmqctl add_user admin 123.com[root@rabbitmq01 ~]# rabbitmqctl set_user_tags admin administrator

5)访问web界面

群集内任意节点的IP+15672端口都可以进行登录访问!

6)web页面添加vhost





设置匹配策略:


设置发布消息内容:


五、单台节点加入或退出群集

1)单节点加入集群

由于我在上面部署群集时,hosts文件已经可以解析群集内的节点,所以这里就省略解析了!

#############在192.168.1.7服务器上操作###################[root@localhost ~]#  yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm[root@localhost ~]# chkconfig rabbitmq-server on[root@localhost ~]#  /etc/init.d/rabbitmq-server start[root@localhost ~]# scp root@rabbitmq01:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/#将群集中的cookie信息复制到本地,之后重启[root@rabbitmq04 ~]# rabbitmqctl stop_app[root@rabbitmq04 ~]# rabbitmqctl reset[root@rabbitmq04 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq01#以内存运行的方式加入群集,若要以磁盘的方式加入,省略"--ram"选项即可[root@rabbitmq04 ~]# rabbitmqctl start_app#开启web管理页面[root@rabbitmq04 ~]# rabbitmq-plugins enable rabbitmq_management

查看web界面:

2)单节点退出集群

[root@rabbitmq04 ~]# rabbitmqctl stop_app
#先在rabbitmq04上面停止节点
[root@rabbitmq01 ~]# rabbitmqctl -n rabbit@rabbitmq01 forget_cluster_node rabbit@rabbitmq04
#-n:指定节点名称
#forget_cluster_node:后面跟要删除的节点名称
#回到主节点(rabbitmq01)上删除节点

查看web界面:

----------本文到此结束,感谢阅读-------------

节点 消息 集群 应用 服务 内存 磁盘 程序 队列 应用程序 模式 界面 通信 中间件 名称 数据 方式 镜像 并将 管理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库物理逻辑结构设计是什么 导出其他服务器的数据库 博雅数据库河北高校 昌平区网络技术哪家好 王者荣耀服务器异常是什么情况 吉林市博创网络技术公司 xbox彩虹六号异种服务器连接出现错误 成武企业诚信积分管理软件开发 国土调查数据库更新数据规范 国产实时数据库软件生产 浙江网络技术开发销售价格 杭州五际网络技术有限公司 网络安全模式下共享上网 word按不了编辑数据库 关于网络安全有哪些 网络安全创业成功案例 我的世界奇思怪谈服务器 外呼系统如何在服务器看手机号 内蒙古字节部落互联网科技 网络安全班会后感 饥荒服务器名称改变 绿色上网共建网络安全征文 威联通服务器 软件开发新人如何找工作 网络安全管理员工作职责 余杭网络技术学校 网络安全庆国庆 数据库安全怎么写 samba服务器配置和搭建 创建mssql数据库
0