千家信息网

Centos7 RabbitMQ消息队列集群

发表于:2024-10-05 作者:千家信息网编辑
千家信息网最后更新 2024年10月05日,一、简介MQ(Message Queue,消息队列)是一款消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。1、集群原理rabbitmq 是依据erlang的分布式
千家信息网最后更新 2024年10月05日Centos7 RabbitMQ消息队列集群

一、简介

MQ(Message Queue,消息队列)是一款消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。

1、集群原理

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消费数据时临时读取。缺点就是,集群内部的同步通讯会占用大量的网络带宽。

2、系统架构

概念说明:

Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输

Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列

Queue:消息的载体,每个消息都会被投到一个或多个队列

Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来

Routing Key:路由关键字,exchange根据这个关键字进行消息投递

vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离

Producer:消息生产者,就是投递消息的程序

Consumer:消息消费者,就是接受消息的程序

Channel:消息通道,在客户端的每个连接里,可建立多个channel

二、环境准备

1、系统环境

主机名

系统

IP

用途

master

CentOS7.4

192.168.56.129

磁盘节点

slave1

CentOS7.4

192.168.56.130

内存节点

slave2

CentOS7.4

192.168.56.131

内存节点

2、暂时关闭防火墙和selinux

3、设置三个节点主机名hosts

[root@master ~]# cat /etc/hosts

192.168.56.129 master

192.168.56.130 slave1

192.168.56.131 slave2

三、搭建服务

1、安装最新repo源

[root@master ~]# yum -y install epel-release

2、安装三个节点的rabbitmq-server软件包

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

3、查看已安装的插件

[root@master ~]# rabbitmq-plugins list

4、启动管理服务(三个节点)

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

5、分别启动rabbitmq服务(三个节点)

[root@master ~]# systemctl start rabbitmq-server.service

rabbitmq集群部署

1、关闭服务(三个节点)

[root@master ~]# systemctl stop rabbitmq-server.service

2、进入cookie文件目录,配置(各节点需要有相同序列号值)

[root@master ~]# cd /var/lib/rabbitmq/

[root@master rabbitmq]# vim .erlang.cookie

3、再启动rabbitmq服务

[root@master rabbitmq]# systemctl start rabbitmq-server.service

4、关闭rabbitmq应用(只关闭slave1和slave2)

[root@master rabbitmq]# rabbitmqctl stop_app

5、将slave1、slave2加入master,使它们成为一个集群。再次启动应用

[root@slave1 ~]# rabbitmqctl join_cluster --ram rabbit@master

[root@slave1 ~]# rabbitmqctl start_app

6、分别查看rabbitmq服务器状态

[root@master ~]# rabbitmqctl cluster_status

7、通过客户端浏览器进行访问RabbitMQ (用户名:guest 密码:guest)

http://192.168.56.129:15672

节点 消息 队列 服务 集群 就是 模式 三个 多个 镜像 消费 实体 系统 普通 主机 内存 客户 数据 磁盘 路由 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 闵行区推广网络技术质量保证 中华人民共和国网络安全法的解读 网络安全幼儿园演讲词图片 电脑网络安全检查重点 网络安全学生代表发言 机房管理系统连接服务器失败 燃烧远征哪个服务器阵营比例均衡 我国金融网络安全法 东莞通信软件开发代理价格 数据库编程题 采集数据更新到数据库 三级网络技术难点知识 php 数据库安全问题 成都市顶呱呱网络技术有限公司 信息安全与网络安全大学前8所 掌阅电子书百度网盘服务器异常 宇视摄像机管理服务器配置 怎么画网络安全字 服务器升级后显示不全 网络安全普法工作开展情况 pdn服务器上行通下行不通 计算机网络技术对口题 数据库管理叫什么 绿联互联网科技 鹰潭正规服务器找哪家公司 济南市中学生网络安全教育知识 欧迪办公网络技术有限公司电话 护苗网络安全条幅 数据库视图禁止修改吗 直播运营软件开发
0