简介
版本选择
ActiveMQ 5.9.0
方案选型
目前ActiveMQ支持两种方式配置主/备机:
- 无共享主/备机配置;(5.8.0版本此方案已被遗弃)
这种配置中,每个ActiveMQ代理拥有独立的消息存储; 备机需要连接到主代理,且需要额外的配置用来报告其当前的状态,而主消息代理不需要这种额外的配置。所有消息指令(消息,确认,订阅,日志等)都会从主机拷贝到备机上。当一个消息生产者发送持久化消息给主机后,消息生产者需要等待主机的回执然后才能发送下一条消息.主机在将消息拷贝到备机上并且等待备机依次处理完消息(这种处理通常是备机将消息存储已进行持久化).备机处理完后,主机便开始处理消息(存储以便持久化消息,然后分发消息给所有对消息感兴趣的消费者),主机成功消息完处理后才会发送回执给消息生产者。
优点:配置简单
缺点:
1. 主机只会把备机连接到主机之后的主机状态复制到备机上;
2. 一个主机只能拥有一个备机,并且备机不能在配置自己的备机;
3. 主机失效后,需要人为干预,因为原来主机失效后为新主机配置新备机是明智的;
- 存储共享主/备机配置;这种配置中,每个ActiveMQ代理可以连接到共享的消息存储(关系数据库系统或者共享文件系统),但是同一时间只有一个代理是活动的;
支持的存储共享主/备机的方式主要有:数据库共享、文件共享;如果你正在使用一个企业级的关系数据库,那么共享数据库的主备机配置是一个理想的配置.尽管这种配置被使用无共享备主/机主配置要稍微慢一点,但这种配置无需额外配置,并且对备机的数量没有限制。如果没有企业级的数据库,或者性能是主要的考虑因素,你可以使用共享文件系统主/备机配置。
优点:
1. 备机数量不受限制;
2. 主机失效后不用人为干预;
3. 主备机使用同一份数据文件;
缺点:
1. 环境依赖性强,使用成本相对较高;(无论是采用企业级的数据库环境、还是采用专业的文件存储)
2. 配置相对复杂
基于上面的分析对比,基于文件系统的“存储共享主/备机”方案胜出;但在activeMQ在5.9版本中,文件存储方案有KahaDB以及LevelDB,而且LevelDB还支持ZooKeeper的分布式文件管理系统;在经过一系列的测试之后,我们最终选择了KahaDB的存储方式。理由是:KahaDB方案成熟,测试性能比ZooKeeper+LevelDB稳定,而ZooKeeper+LevelDB属于5.9引入的新特性,需要市场进一步沉淀;
最终方案敲定为:基于KahaDB的NFS文件共享主备;下文也都是基于此方案进行描写;
资源信息
硬件信息:
存储磁盘信息:NFSV3网络磁盘
内存大小:8G
软件信息:
jdk:jdk1.7.0_51
mq版本:5.9.0
共享主备组A: 192.168.65.171、192.168.65.172
共享主备组B:192.168.65.173、192.168.65.174
主备组A与B形成一个集群;
注:主备组B当前尚未建设,后期根据业务量规模再逐步建设。
安装
下载安装包
通过官网(http://activemq.apache.org/activemq-590-release.html)下载最新的安装包。
将安装包解压到某一个目录,解压之后的目录目录结构如下:
部分重要目录说明:
bin:activemq执行文件目录;
conf:配置文件activemq.xml,log配置文件log4j.properties,安全keystore文件,密码文件credentials.properties等
data:缺省数据存储目录,缺省的日志文件路径,可在activemq.xml中配置
example:一些demo,包括activemq.xml配置文件demo
webapps:界面管理程序界面
配置
配置${activemq_home}/conf/activemq.xml
activemq.xml是每一个broker的核心配置文件,主从模式,集群配置,queue,topic等等相关配置均在此配置文件中配置实现,activemq.xml文件位置:${activemq_home}/conf;
配置Broker
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="xxxx" dataDirectory="${activemq.data}" useJmx="true" schedulerSupport="false" splitSystemUsageForProducersConsumers="true"> </broker> |
部分重要配置:
配置项 |
默认值 |
推荐值 |
说明 |
brokerName |
localhsot |