RabbitMQ消息队列集群
RabbitMQ
MQ(Message Queue,消息队列)是一款消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。
集群原理
rabbitmq 是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以rabbitmqctl会启动Erlang节点,并基于Erlang节点来使用Erlang系统连接RabbitMQ节点,在连接过程中需要正确的Erlang Cookie和节点名称,Erlang节点通过交换Erlang Cookie以获得认证)来实现的,所以部署rabbitmq分布式集群时要先安装erlang,并把其中一个服务的cookie复制到另外的节点。
rabbitmq集群中,各个rabbitmq为对等节点,即每个节点均提供给客户端连接,进行消息的接收和发送。节点分为内存节点和磁盘节点,一般的,均应建立为磁盘节点,为了防止机器重启后的消息消失;
RabbitMQ的Cluster集群模式一般分为两种, 普通模式和镜像模式 。消息队列通过rabbitmq HA镜像队列进行消息队列实体复制。
普通模式下, 以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈。
镜像模式下, 将需要消费的队列变为镜像队列,存在于多个节点,这样就可以实现RabbitMQ的HA高可用性。作用就是消息实体会主动在镜像节点之间实现同步,而不是像普通模式那样,在consumer消费数据时临时读取。缺点就是,集群内部的同步通讯会占用大量的网络带宽。
系统架构
概念说明:
Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列
Queue:消息的载体,每个消息都会被投到一个或多个队列
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来
Routing Key:路由关键字,exchange根据这个关键字进行消息投递
vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离
Producer:消息生产者,就是投递消息的程序
Consumer:消息消费者,就是接受消息的程序
Channel:消息通道,在客户端的每个连接里,可建立多个channel
系统环境
主机名 | 操作系统 | IP地址 | 用途 |
---|---|---|---|
rabbitmq01 | Centos 7.4 x86_64 | 192.168.96.41 | 磁盘节点 |
rabbitmq02 | Centos 7.4.x86_64 | 192.168.96.42 | 内存节点 |
rabbitmq03 | Centos 7.4 x86_64 | 192.168.96.43 | 内存节点 |
开始部署
以下三台服务器部署配置一致,如下步骤1 - 8
1.关闭防火墙及Selinux
setenforce 0
systemctl stop firewalld
2.分别修改三台服务器的主机名
2.1 rabbitmq01服务器
vim /etc/hostname
rabbitmq01
2.2 rabbitmq02服务器
vim /etc/hostname
rabbitmq02
2.3 rabbitmq03服务器
vim /etc/hostname
rabbitmq03
3.分别修改三台服务器的hosts文件
vim /etc/hosts
192.168.96.23 rabbitmq01
192.168.96.21 rabbitmq02
192.168.96.22 rabbitmq03
4.安装最新repo源
yum -y install epel-release
5.安装rabbitmq-server软件包
yum -y install rabbitmq-server
6.查看已安装的插件
rabbitmq-plugins list
7.启动管理服务
rabbitmq-plugins enable rabbitmq_management
8.分别启动rabbitmq服务
systemctl start rabbitmq-server
rabbitmq集群部署
1.先停止rabbitmq服务
systemctl stop rabbitmq-server
2.进入cookie文件目录
cd /var/lib/rabbitmq/
3.编辑.erlang.cookie文件序列号(各节点需要有相同序列号值)
vim .erlang.cookie
4.再启动rabbitmq服务
systemctl start rabbitmq-server
5.停止rabbitmq应用
rabbitmqctl stop_app
6.将rabbitmq02、rabbitmq03加入rabbitmq01,使它们成为一个集群
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
7.启动rabbitmq应用
rabbitmqctl start_app
8.分别查看rabbitmq服务器状态
rabbitmqctl cluster_status
通过客户端浏览器进行访问RabbitMQ (用户名:guest 密码:guest)http://192.168.96.41:15672
转载于:https://blog.51cto.com/10316297/2155665
RabbitMQ消息队列集群相关推荐
- 消息队列——RabbitMQ消息队列集群
RabbitMQ消息队列集群 消息队列/中间件 RabbitMQ详解 RabbitMQ单机部署 RabbitMQ集群部署 消息队列/中间件 一.前言 在我们秒杀抢购商品的时候,系统会提醒我们稍等排队中 ...
- 亲测可用,超详细RabbitMQ消息队列集群配置
RabbitMQ是什么? MQ(Message Queue,消息队列)消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息同步. 原理介绍 rabbitmq是依据erlan ...
- RabbitMQ#RabbitMQ+Haproxy消息队列集群和代理部署
文章目录 一.消息队列/中间件 1.RabbitMQ本质上起到的作用就是削峰填谷 2.MQ简介(RabbitMQ比Kafka) 3.MQ消息队列的分类 二.RabbitMQ介绍(端口15672) 1. ...
- RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)
在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成.那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会 ...
- (四)RabbitMQ消息队列-服务详细配置与日常监控管理
(四)RabbitMQ消息队列-服务详细配置与日常监控管理 原文:(四)RabbitMQ消息队列-服务详细配置与日常监控管理 RabbitMQ服务管理 启动服务:rabbitmq-server -de ...
- 使用EasyNetQ组件操作RabbitMQ消息队列服务
RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...
- java实现RabbitMQ消息队列
目录 一.什么是MQ? 二.为什么要用MQ? 流量消锋 应用解耦 异步处理 三.MQ分类和使用场景 四.安装MQ 1.准备工作 2.开始安装 3.结束安装 五.实践操作: 一.简单模型(sim ...
- RabbitMQ高可用集群搭建
RabbitMQ高可用集群搭建 摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确 ...
- 从零开始搭建高可用RabbitMQ镜像模式集群
文章目录 RabbitMQ集群模式搭建 准备工作 选取任意一个节点作为master节点, 进行文件同步, 我这里选择138作为master节点 组成集群 配置镜像队列(设置镜像队列策略) 集群配置参数 ...
最新文章
- js调用ios的方法
- 简单的Java双亲委派机制
- 写一个android图表框架1
- 点击文字弹出一个DIV层窗口代码 【或FORM表单 并且获取点击按钮的ID值】
- Adaboost from Baidu
- jQuery插件开发
- 『 申请地址 』阿里云网盘限时开放内测申请!
- java的if里有多个if_代码里写很多if会影响效率吗?
- 深度学习之RetinaNet
- 雷军:全面屏新零售微信都是我先提的,为什么你们只记住了苹果马云张小龙?
- [CF55D]Beautiful Number 题解
- WindowXP与WIN7环境安装、破解、配置AppScan8.0
- 视频倍速调整(ffmpeg)
- graylog+kafka+zookeeper(单机测试及源码),graylog收集kafka(脚本创建发布订阅方式)存储的消息(四)
- 详解Android刘海屏适配
- 我的世界服务器增加刷怪率,教你制作服务器中更高效率的刷怪塔
- Zynq-Linux移植学习笔记之34-使用PCS/PMA IP核配置网络
- 北大才女笔记:这样学习线性回归和梯度下降(上篇)
- 前端脚手架是指什么?
- 别再羡慕马斯克的脑机接口了!中国强大的脑机接口在这里
热门文章
- 3dmax导出obj序列_Houdini导出序列图片
- c语言的返回类型是指针变量吗,C语言-指针类型
- zend 安装php 5.6,CentOS7.0+Zend Guard Loader for PHP 5.6环境搭建
- Jmeter的Throughput有误差与分布式测试时的坑
- 【3】测试用例设计-因果图
- 惨遭打脸:字节某部门竟然有这么多测试
- (四)Linux 安装 jdk
- 城轨的两类时钟系统均同步于_推介中央电视台4K IP化移动外场系统搭建中解决的主要问题...
- 全国计算机等级考证管理系统,猎证全国计算机等级考试学习系统
- php 查询cpu使用率,php获取CPU使用情况的代码