rabbitmq集群

RabbitMQ配置负载均衡的意义及RabbitMQ集群是否可以随意使用

大憨熊 提交于 2019-11-26 01:55:46
说明 构建RabbitMQ集群来确保可用性和性能只是保障弹性消息通信基础架构的一半,另一半则是编写当集群节点发生故障时知道如何重连到集群的应用程序。 处理到集群的重连有多种策略,这篇wiki所关注的这种是使用负载均衡来处理节点的选择。 使用负载均衡的意义 通过使用负载均衡,不仅可以减少应用程序处理节点故障代码的复杂性,又能确保在集群中连接的平均分布。 但是即便使用了负载均衡,编写处理节点故障的应用程序也要比建立到集群的连接复杂的多,应用程序需要准备好重新创建交换器和队列以应对初始节点故障。 为Rabbit做负载均衡 当为RabbitMQ添加负载均衡时,集群节点就作为负载均衡背后的服务器,而生产者和消费者就是客户了。应用程序只需要知道负载均衡器的ip(或域名),负载均衡就会以最小的连接负载透明地将客户端连接到集群节点。 如果想要为集群增强性能,则无须更改应用程序,只需要新增rabbit节点并挂到负载均衡上即可,无须修改应用程序。 如果没有负载均衡的话,应用程序就不得不对每一个集群节点的IP做手工配置,同时也不得不自行处理集群节点的选择和故障服务器检测。由于每个应用程序需要自行选择节点,因此你就无法在集群内将负载平均分配。 通过将负载均衡放置在Rabbit集群的前端,就可以让负载均衡器自行处理节点选择(轮询或者最小连接、rabbit节点挂掉后自行摘除)。

RabbitMQ集群搭建

血红的双手。 提交于 2019-11-25 23:41:00
RabbiMQ简介 RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。 RabbiMQ模式 RabbitMQ模式大概分为以下三种: (1)单一模式。 (2)普通模式(默认的集群模式)。 (3) 镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbiMQ的HA方案,在对业务可靠性要求较高的场合中比较适用)。 要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。 RabbiMQ特点 RabbitMQ的集群节点包括内存节点、磁盘节点。RabbitMQ支持消息的持久化 也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。 环境: IP地址 主机名 操作系统 防火墙和SELinux 用途 192.168.100.143 mq01 CentOS7.4(64位) 关闭 磁盘节点 192.168.100.144 mq02 CentOS7.4(64位) 关闭 内存节点 192.168.100.145 mq03 CentOS7.4(64位) 关闭 内存节点 注意,这里三台服务器都连接上互联网,另外RabbitMQ集群节点必须在同一网段里,如果是跨广域网,效果会变差。 RabbitMQ普通集群配置 1. 配置hosts文件 更改三台MQ节点的计算机名分别为mq01、mq02

RabbitMQ实战:界面管理和监控

為{幸葍}努か 提交于 2019-11-25 23:40:51
本系列是「RabbitMQ实战:高效部署分布式消息队列」书籍的总结笔记。 上一篇总结了可能出现的异常场景,并对RabbitMQ提供的可用性保证进行了分析,在出现服务器宕机后,仍然可以正常服务。另外,需要尽快恢复异常的服务器,重新加入集群,推送未消费的消息,通过监控可第一时间接收到错误并进行处理。 另外,我们想主动了解消息堆积和消费的情况,以及服务器节点的压力,RabbitMQ提供了几种方式便捷、直观的了解,包括Web管理插件、REST API、rabbitmqadmin脚本。 通过介绍,你会了解到: web管理插件 REST API rabbitmqadmin脚本 Nagios和监控RabbitMQ web管理插件 RabbitMQ的插件是由Erlang语言写的,并且和服务器一同运行在同一个Erlang VM中,通过下面的命令启用web管理插件: sudo ./rabbitmq-plugins enable rabbitmq_management 启动之后,访问15672端口,可看到Web管理页面主页面: 添加用户 默认会提供一个默认用户guest,密码也是guest,线上环境需要创建一个新用户,并把guest用户删除。 首先切换到Admin标签页,可以查看或添加用户,添加用户时,可指定Tags,相当于角色,会拥有对应的权限: 点击用户列表的用户名,可分配权限、编辑或删除用户

Rabbitmq群集部署

大城市里の小女人 提交于 2019-11-25 23:29:38
博文大纲: 一、Rabbitmq概念 二、部署单台Rabbitmq 三、部署Rabbitmq集群 四、单台节点加入或退出群集配置 一、Rabbitmq概念 RabbitMQ是一个开源的靠AMQP协议实现的服务,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 它可以使对应的客户端(client)与对应的消息中间件(broker)进行交互。消息中间件发布者(publisher)那里收到消息(发布消息的应用,也称为producer),然后将他们转发给消费者(consumers,处理消息的应用)。由于AMQP是一个网络协议,所以发布者、消费者以及消息中间件可以部署到不同的物理机器上。 Rabbitmq使用场景 消息队列在实际应用中常用在异步处理、应用解耦、流量削锋和消息通讯这四个场景。 二、部署单台Rabbitmq 注:在开始之前

消息中间件RabbitMQ使用教程

不羁的心 提交于 2019-11-25 23:23:58
RabbitMQ简介 消息队列中间件简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性[架构] 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。 以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景 什么是RabbitMQ RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。 RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括: (1)可靠性(Reliability) RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。 (2)灵活的路由(Flexible Routing) 在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ已经提供了一些内置的 Exchange 来实现。针对更复杂的路由功能,可以将多个Exchange 绑定在一起

Rabbitmq集群

不打扰是莪最后的温柔 提交于 2019-11-25 21:52:28
1、 rabbitmq介绍 RabbitMQ是一个开源的靠AMQP协议实现的服务,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 它可以使对应的客户端(client)与对应的消息中间件(broker)进行交互。消息中间件从发布者(publisher)那里收到消息(发布消息的应用,也称为producer),然后将他们转发给消费者(consumers,处理消息的应用)。由于AMQP是一个网络协议,所以发布者、消费者以及消息中间件可以部署到不同的物理机器上面 2、 消息队列的概念 消息即是信息的载体。为了让消息发送者和消息接收者都能够明白消息所承载的信息(消息发送者需要知道如何构造消息;消息接收者需要知道如何解析消息),它们就需要按照一种统一的格式描述消息,这种统一的格式称之为消息协议。所以,有效的消息一定具有某一种格式;而没有格式的消息是没有意义的。

浅谈消息队列及常见的消息中间件

自古美人都是妖i 提交于 2019-11-25 18:58:36
浅谈消息队列及常见的消息中间件 前言 消息队列 已经逐渐成为企业应用系统 内部通信 的核心手段。它具有 低耦合 、 可靠投递 、 广播 、 流量控制 、 最终一致性 等一系列功能。 当前使用较多的 消息队列 有 RabbitMQ 、 RocketMQ 、 ActiveMQ 、 Kafka 、 ZeroMQ 、 MetaMQ 等,而部分 数据库 如 Redis 、 MySQL 以及 phxsql 也可实现消息队列的功能。 正文 1. 消息队列概述 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流 ,并基于 数据通信 来进行分布式系统的集成。 通过提供 消息传递 和 消息排队 模型,它可以在 分布式环境 下提供 应用解耦 、 弹性伸缩 、 冗余存储 、 流量削峰 、 异步通信 、 数据同步 等等功能,其作为 分布式系统架构 中的一个重要组件,有着举足轻重的地位。 2. 消息队列的特点 2.1. 采用异步处理模式 消息发送者 可以发送一个消息而无须等待响应。 消息发送者 将消息发送到一条 虚拟的通道 ( 主题 或 队列 )上, 消息接收者 则 订阅 或是 监听 该通道。一条信息可能最终转发给 一个或多个 消息接收者,这些接收者都无需对 消息发送者 做出 同步回应 。整个过程都是 异步的 。 2.2. 应用系统之间解耦合 主要体现在如下两点:

消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局

你。 提交于 2019-11-25 18:48:20
本文收录于InfoQ,未经允许不得转载。 一、前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能,其作为分布式系统架构中的一个重要组件,有着举足轻重的地位。 目前开源的消息中间件可谓是琳琅满目,能让大家耳熟能详的就有很多,比如ActiveMQ、RabbitMQ、Kafka、RocketMQ、ZeroMQ等。不管选择其中的哪一款,都会有用的不趁手的地方,毕竟不是为你量身定制的。有些大厂在长期的使用过程中积累了一定的经验,其消息队列的使用场景也相对稳定固化,或者目前市面上的消息中间件无法满足自身需求,并且也具备足够的精力和人力而选择自研来为自己量身打造一款消息中间件。但是绝大多数公司还是不会选择重复造轮子,那么选择一款合适自己的消息中间件显得尤为重要。就算是前者,那么在自研出稳定且可靠的相关产品之前还是会经历这样一个选型过程。 在整体架构中引入消息中间件,势必要考虑很多因素,比如成本及收益问题,怎么样才能达到最优的性价比?虽然消息中间件种类繁多,但是各自都有各自的侧重点,选择合适自己、扬长避短无疑是最好的方式。如果你对此感到无所适从,本文或许可以参考一二。 二、各类消息队列简述