一、序言
作为一种中间件,很多系统都会依赖它,因此几乎所有的中间件都会考虑挂掉怎么办?压力过大怎么办?因此都得考虑容错以及水平伸缩的问题。 所谓的分布式 集群 Master-Slave 等等概念就由此而生了,他主要是为了高可用性、负载均衡来分摊压力 等效果,这里介绍AMQ 的集群概念和配置。
二、场景描述:
1.如果broker 挂了,那么我们整个依赖这个节点的项目都会连接不顺畅,因此要做一个备份的东西,挂掉之后,能快速切换,这也就是master-slave 。
三、配置介绍
1.master-slave 模式现在5.11 版本是提供了3种,参考:http://activemq.apache.org/masterslave.html
方式一:Shared File System Master Slave
原文:http://activemq.apache.org/shared-file-system-master-slave.html
If you have a SAN or shared file system it can be used to provide high availability such that if a broker is killed, another broker can take over immediatel 如果你有SAN 或者 共享的的文件系统,当broker 挂掉后它能提供很高的可用性,能直接让另一个broker 直接代替工作。 大概原理是,你设置N个broker,并且你们都用同一个文件目录保存信息,那么就有第一次获得文件的broker 作为master 提供服务,并对文件持有lock,其他broker 只能监听等待,等master 挂掉了,另外的broker 能立马补充上去。
On startup one master grabs an exclusive lock on the broker file directory - all other brokers are slaves and pause waiting for the exclusive lock. 在启动时一个master 独占锁代理文件目录,所有其他代理的奴隶和暂停等待互斥型锁。
因此这种方式就很简单了,主要是让他们的文件目录一致:
我假设在本地启动两个broker,在activemq.xml 里面 windows 环境,两个xml 文件目录设置一致,就行了 这里默认使用的kahaDB ,你也可以用levelDB,但不推荐AMQDB <persistenceAdapter> <kahaDB directory="F:/amq_share_data" /> </persistenceAdapter> 同时因为都在本地,因此监听端口得改改: 分别是61616 和61617 <transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> 同时为了启动jetty ,在jetty 里面的端口也得改一下就OK了
然后客户端连接的时候地址改成这种就OK了
failover:(tcp://broker1:61616,tcp://broker2:61616,tcp://broker3:61616)
方式二:JDBC Master Slave
这种方式就是把共享文件目录 改成了数据库,再多台部署的时候,可能共享目录不是很方便,这里我一直没用数据库的方式,就不贴代码了。
这种broker 挂了筛选master 的方式用了zookeeper 的帮助,如果你ZK不了解的,先看看百科。
它是利用ZK 做协调,先进入的作为master,其他都是slave
client 只会连接到master 进行工作,并让slave 同步持久化的信息
当master 挂了,ZK 就会利用选举 从新选出master,并且挂掉的master 从启 加进来就成slave 了
因为利用zk 进行配置管理,我们方便监控,同时配置也相对简单
1.Zookeeper 的配置 见前面了, 这个不介绍
2.我建立3个AMQ,并且broker 配置都一样,下面说下不一样的部分
# 下面是持久化的部分改成这样 <persistenceAdapter> <replicatedLevelDB directory="activemq-data" replicas="3" bind="tcp://0.0.0.0:0" zkAddress="zoo1.example.org:2181,zoo2.example.org:2181,zoo3.example.org:2181" zkPassword="password" zkPath="/activemq/leveldb-stores" hostname="broker1.example.org" /> </persistenceAdapter> #replicas 表示你集群节点数 # bind 当该节点成为master 后,会自动绑定设定的地址,动态的就是是默认的(作用不是很明白- -) # zkAddress ZK 的地址 # zkPaht ZK 创建的时候的节点名称 # hostname AMQ 所在机器的地址,可以默认 # 更多参考:http://activemq.apache.org/replicated-leveldb-store.html
这种方式要备份几个,同时要几个节点,性能和资源都有一定损耗,如果跨机房就不推荐了,当然我这边主要是为了可用性,没有那么高的性能要求。
四、小结
1.上面的东西可能不是很详细,主要是从官网看的基本配置,复杂的东西害的靠自己的多实践啦
2.如果有疑问的地方请指出~。~非常感谢~。~
顺便说个小问题,由于个人使用了512M 的阿里云服务器,加上别人在用,在启动AMQ 的时候按默认配置,会申请的空间不够,这个在env 配置里面改一下 空间大小才行。注意zk的节点配置 也别写错了
相关推荐
3. ActiveMQ版本:apache-activemq-5.4.2 4. 数据库:Oracle 10 5. 服务器:两台服务器,例如HOST01和HOST02 软件准备包括安装JDK并设置环境变量,下载ActiveMQ的源代码包,以及准备Oracle JDBC驱动程序ojdbc14.jar...
在本文档中,我们关注的是ActiveMQ的Master-Slave集群配置,这是实现高可用性和容错机制的一种重要方式。 Master-Slave架构的核心思想是通过将消息复制到备用的Slave Broker,确保即使主Master Broker发生故障,...
赠送jar包:activemq-protobuf-1.1.jar; 赠送原API文档:activemq-protobuf-1.1-javadoc.jar; 赠送源代码:activemq-protobuf-1.1-sources.jar; 包含翻译后的API文档:activemq-protobuf-1.1-javadoc-API文档-...
《ActiveMQ-CPP Library 3.9.5在Windows环境下的编译与应用》 ActiveMQ-CPP Library 3.9.5是一款专为C++开发者设计的、用于与Apache ActiveMQ集成的库,它提供了丰富的API接口,使得在C++环境中能够方便地发送和...
这个“apache-activemq-5.9.0-bin”压缩包包含了Apache ActiveMQ 5.9.0版本的完整二进制文件,用于在本地或网络环境中安装和运行。 Apache ActiveMQ的核心功能包括: 1. **消息队列**:ActiveMQ支持多种消息模式,...
activemq-all-5.2.0.JAR包,欢迎下载。编写java中间件的时候会用到。这是activemq实现的jms中间件。希望能帮助到你。
activemq-web-console的默认使用方式是通过在activemq.xml中导入jetty.xml配置一个jetty server来实现的。其实activemq-web-console完全可以和activemq-broker分开来部署。 activemq-web-console包含3个apps, 1.一...
《ActiveMQ-CPP库3.9.5源代码解析与应用》 ActiveMQ-CPP库是Apache ActiveMQ项目的一部分,它提供了一套C++接口,用于与ActiveMQ消息代理进行通信。这个库允许开发者在C++应用程序中实现高级消息队列协议(AMQP)和...
这个"apache-activemq-5.15.8-bin.zip"文件包含了ActiveMQ的可执行版本,用于在本地计算机上安装和运行ActiveMQ服务。 首先,我们需要了解ActiveMQ的核心概念。它是一个消息代理,扮演着消息生产者与消费者之间的...
这个压缩包"apache-activemq-5.8.0-bin.zip"包含了ActiveMQ 5.8.0版本的二进制发行版,供用户在本地计算机上安装和运行。 1. **Apache ActiveMQ简介** - Apache ActiveMQ是业界广泛使用的消息代理,提供可靠的消息...
赠送jar包:activemq-core-5.7.0.jar; 赠送原API文档:activemq-core-5.7.0-javadoc.jar; 赠送源代码:activemq-core-5.7.0-sources.jar; 包含翻译后的API文档:activemq-core-5.7.0-javadoc-API文档-中文...
activemq-protobuf-1.1.jar;activemq-protobuf-1.1.jar
这个`apache-activemq-5.13.2-bin.tar.gz`压缩包包含了ActiveMQ的可执行版本,适用于运行在Linux环境下的Java应用程序。版本号5.13.2意味着这是该软件的特定稳定版本,它可能包含了bug修复和性能优化。 ActiveMQ的...
activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载 activemq-all-5.8.0.jar 下载
activemq-all-5.6.0.jar activemq-all-5.6.0.jar activemq-all-5.6.0.jar activemq-all-5.6.0.jar
这个"apache-activemq-5.14.3-bin.zip"压缩包包含了在Windows环境下部署和运行ActiveMQ所需的所有文件。让我们深入探讨一下这个版本的ActiveMQ及其在Java消息服务中的应用。 首先,Java消息服务(JMS)是一种标准...
在提供的压缩包"activemq-web-4.0-M3.jar.zip"中,有两个主要文件:"activemq-web-4.0-M3.jar"和"license.txt"。"activemq-web-4.0-M3.jar"是核心的Java档案文件,包含了运行ActiveMQ Web UI所需的所有类和资源。这...
activemq-all-5.2.0-sources.jar
activemq-broker-5.9.1.jar,activemq-broker-5.9.1.jar,activemq-broker-5.9.1.jar
标题中的"activemq-rar-5.10.0.rar"指的是Apache ActiveMQ的RAR资源包,版本为5.10.0。ActiveMQ是业界广泛使用的开源消息中间件,它遵循Java Message Service (JMS) 规范,提供高可靠的消息传递服务,能够帮助应用...