ActiveMQ MasterSlave集群的三种方式
如下:
Master/Slave集群类型 | 要求 | 好处 | 需要考虑的因素 |
Share File System Master Slave | 共享文件系统如SAN | 可运行任意多个salves,自动回复老的master | 需要共享文件系统 |
JDBC Master Slave | 公用数据库 | 同上 | 需要一个公用数据库,较慢因为不能使用高性能日志 |
Replicated LevelDB Store | Zookeeper | 同上 + 非常快 | 需要Zookeeper服务器 |
原文说明:如果你正在使用一个基于网络的共享文件系统比如SAN, 那我们推荐你用Share File System Master Slave.
如果你正在使用纯JDBC作为你的持久化引擎并且你并不关心是否使用高性能日志,你可以使用JDBC Master Slave
对那些想尝试新技术的, Replicated LevelDB Store提供了和SAN(Share File System)方案差不多的速度并且没有设置共享文件系统的麻烦。
PS: 经笔者测试, MasterSlave的集群模式 都只对Queue有效, Topic无效..
Share File System Master
官方资料:http://activemq.apache.org/shared-file-system-master-slave.html
该集群方式使用共享文件系统来做Master/slave集群(因为消息数据对他们来说都存在同一个共享文件夹内)
在本机通过运行多个activemq实例来进行测试,更改集群内所有的activemq.xml配置文件,只需要将broker的<persistenceAdapter>节点配置成如下方式即可:
- <persistenceAdapter>
- <!--<kahaDB directory="${activemq.data}/kahadb"/>-->
- <kahaDB directory="E:/activeMQ/sharedb"/>
- </persistenceAdapter>
客户端在连接时,使用failover,如下:
- ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("failover:(tcp://127.0.0.1:61616,tcp://127.0.0.1:61617)");
JDBC Master Slave
官网资料:http://activemq.apache.org/jdbc-master-slave.html
该集群方式使用jdbc做Master/Slave集群(因为消息数据都存在同一个数据库) ps:记得将相关的数据库驱动包放到[activemq安装目录]/lib 下面
此处以Oracle为例, 更改集群内所有activemq.xml配置文件,如下两个地方, persistenceAdapter节点更改如下:
- <persistenceAdapter>
- <span style="white-space:pre"> </span><!-- default -->
- <span style="white-space:pre"> </span> <!--<kahaDB directory="${activemq.data}/kahadb"/>-->
- <!-- share file system -->
- <!--<kahaDB directory="E:/activeMQ/sharedb"/>-->
- <!-- jdbc -->
- <jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#oracle-ds"/>
- </persistenceAdapter>
添加节点:
- <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
- <property name="url" value="jdbc:oracle:thin:@localhost:1521:mqtest"/>
- <property name="username" value="activemq"/>
- <property name="password" value="123456"/>
- <property name="poolPreparedStatements" value="true"/>
- </bean>
Zookeeper下载安装以及配置
- tickTime=2000
- initLimit=10
- syncLimit=5
- dataDir=/usr/local/zookeeper/zk1
- clientPort=2181
- server.1=127.0.0.1:2888:3888
- server.2=127.0.0.1:2889:3889
- server.3=127.0.0.1:2890:3890
- echo 1 > /usr/local/zookeeper/zk1/myid
- echo 2 > /usr/local/zookeeper/zk2/myid
- echo 3 > /usr/local/zookeeper/zk3/myid
- [zookeeper_install_path]/bin/zkServer.sh start zoo1.cfg
- [zookeeper_install_path]/bin/zkServer.sh start zoo2.cfg
- [zookeeper_install_path]/bin/zkServer.sh start zoo3.cfg
activemq的配置
- <persistenceAdapter>
- <!-- default -->
- <span style="white-space:pre"> </span><!--<kahaDB directory="${activemq.data}/kahadb"/>-->
- <!-- share file system -->
- <!--<kahaDB directory="E:/activeMQ/sharedb"/>-->
- <!-- jdbc -->
- <!--<jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#oracle-ds"/>-->
- <replicatedLevelDB
- directory="${activemq.data}/leveldb"
- replicas="3"
- bind="tcp://127.0.0.1:0"
- zkSessionTmeout="5s"
- zkAddress="192.168.9.102:2181,192.168.9.102:2182,192.168.9.102:2183"
- zkPath="/activemq/leveldb-stores"
- sync="local_disk"
- />
- </persistenceAdapter>
亲,沙发正空着,还不快来抢?
我要评论 / 展开表单