热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Centos7RabbitMQ消息队列集群

一、简介   MQ(MessageQueue,消息队列)是一款消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务

一、简介

      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、系统架构

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

概念说明:

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

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

3、查看已安装的插件

[root@master ~]# rabbitmq-plugins list

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

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

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

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

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

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

3、再启动rabbitmq服务

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

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

[root@master rabbitmq]# rabbitmqctl stop_app

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

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

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

[root@slave1 ~]# rabbitmqctl start_app

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群6、分别查看rabbitmq服务器状态

[root@master ~]# rabbitmqctl cluster_status

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群7、通过客户端浏览器进行访问RabbitMQ (用户名:guest 密码:guest)

http://192.168.56.129:15672

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群


推荐阅读
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • RocketMQ在秒杀时的应用
    目录一、RocketMQ是什么二、broker和nameserver2.1Broker2.2NameServer三、MQ在秒杀场景下的应用3.1利用MQ进行异步操作3. ... [详细]
  • 本文详细介绍了Linux系统中用于管理IPC(Inter-Process Communication)资源的两个重要命令:ipcs和ipcrm。通过这些命令,用户可以查看和删除系统中的消息队列、共享内存和信号量。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • ipsec 加密流程(二):ipsec初始化操作
    《openswan》专栏系列文章主要是记录openswan源码学习过程中的笔记。Author:叨陪鲤Email:vip_13031075266163.comDate:2020.1 ... [详细]
  • 本文通过基准测试(Benchmark)对.NET Core环境下Thrift和HTTP客户端的微服务通信性能进行对比分析。基准测试是一种评估系统或组件性能的方法,通过运行一系列标准化的测试来衡量其表现。 ... [详细]
  • 本文探讨了在 SQL Server 2012 的 Integration Services 项目中配置 ADO.NET 源时遇到的错误及其解决方案。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • Basic微分方程Whatis形如\(F(x,y,y',,y^{(n)})0\)求\(yf(x,y)\)阶:方程中导数的最高阶数解:yy(x)通解:\(yy(x,C ... [详细]
  • 本报告对2018年湘潭大学程序设计竞赛在牛客网上的时间数据进行了详细分析。通过统计参赛者在各个时间段的活跃情况,揭示了比赛期间的编程频率和时间分布特点。此外,报告还探讨了选手在准备过程中面临的挑战,如保持编程手感、学习逆向工程和PWN技术,以及熟悉Linux环境等。这些发现为未来的竞赛组织和培训提供了 valuable 的参考。 ... [详细]
author-avatar
rongrong_102077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有