基于zookeeper+leveldb搭建activemq集群
来源:互联网 发布:中国传媒大学网络教育 编辑:程序博客网 时间:2024/05/07 10:12
自从activemq5.9.0开始,activemq的集群实现方式取消了传统的Master-Slave方式,增加了基于zookeeper+leveldb的实现方式,其他两种方式:目录共享和数据库共享依然存在。本文主要阐述基于zookeeper和leveldb搭建activemq集群,这里需要特别提醒,本文实现的集群仅提供主备功能,避免单点故障,没有负载均衡功能。
下面开始我们的征途。
一、搭建zookeeper集群
关于搭建zookeeper集群的文章请参考:zookeeper的集群模式下的安装和配置。
本文使用zookeeper3.4.6,3台虚拟机:192.168.2.161, 192.168.2.145, 192.168.2.146,zookeeper使用其默认端口:2181。
zookeeper集群搭建完成之后,我顺便搭建了两套监控系统:taokeeper-monitor和node-zookeeper-browser。前者是淘宝开源的一套监控zookeeper的系统,用了之后感觉得到的有效信息不多,而且集群趋势图总是不显示;后者是用nodejs实现的zookeeper节点数据查看系统,虽然页面不太美观,但是实用。
图 1. taokeeper-monitor界面
图 2. node-zookeeper-browser界面
二、搭建activemq集群
1、安装
activemq本身的安装过程很简单,本文不详述,可参照官方的Getting-started。
2、配置
在三台机器上完成activemq安装之后,开始集群配置,通过配置使三个activemq实例组成集群。下面的配置在三个实例上保持一致,除了标红部分,主要修改配置文件conf/activemq.xml。
(1)broker-name的统一
将broker标签的brokerName属性设置为统一的值,我将这个值设置为“test”,只有三个实例的brokerName一致,zookeeper才能识别它们属于同一个集群。
(2)persistenceAdapter的配置
persistenceAdapter设置持久化方式,主要有三种方式:kahaDB(默认方式)、数据库持久化、levelDB(v5.9.0提供支持)。
本文采用levelDB来进行持久化,并使用zookeeper实现集群的高可用,配置如下:
首先注释掉原来kahaDB的持久化方式,然后配置levelDB+zookeeper的持久化方式。
<!--
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
-->
<
persistenceAdapter
>
<
replicatedLevelDB
directory
=
"${activemq.data}/leveldb"
replicas
=
"3"
bind
=
"tcp://0.0.0.0:0"
zkAddress
=
"192.168.2.161:2181,192.168.2.145:2181,192.168.2.146:2181"
hostname
=
"192.168.2.161"
sync
=
"local_disk"
zkPath
=
"/activemq/leveldb-stores"
/>
</
persistenceAdapter
>
注意上述配置中的hostname属性值,不同的activemq实例对应不同的hostname值,其他两个实例配置的hostname值分别为:192.168.2.145, 192.168.2.146。
3、问题与解决方案
配置完成之后启动zookeeper集群,然后依次启动三个activemq实例,启动之后报错:"activemq LevelDB IOException handler"。
原因:版本5.10.0存在的依赖冲突。
解决方案:
(1)移除lib目录中的pax-url-aether-1.5.2.jar包;
(2)注释掉配置文件中的日志配置;
<
bean
id
=
"logQuery"
class
=
"org.fusesource.insight.log.log4j.Log4jLogQuery"
lazy-init
=
"false"
scope
=
"singleton"
init-method
=
"start"
destroy-method
=
"stop"
>
</
bean
>
参考:http://www.350351.com/jiagoucunchu/leveldb/334233.html
4、测试
任意停掉三个实例中的任意一个,activemq服务依然正常运转。
欢迎转载,请注明出处:http://my.oschina.net/xiaohui249/blog/313028
- 基于zookeeper+leveldb搭建activemq集群
- 基于zookeeper+leveldb搭建activemq集群
- 基于zookeeper+leveldb搭建activemq集群
- 基于zookeeper+leveldb搭建activemq集群
- 基于zookeeper+leveldb搭建activemq集群【转】
- 基于zookeeper+leveldb搭建activemq集群
- 基于zookeeper+levelDB的ActiveMQ集群
- activemq - 集群 - 基于zookeeper的levelDB集群方式
- ActiveMQ基于LevelDB的Zookeeper高可用集群
- Zookeeper+ActiveMQ集群搭建
- ActiveMQ单机部署zookeeper+levelDB集群
- JMS之——ActiveMQ高可用集群安装、配置(基于ZooKeeper + LevelDB的伪集群)
- JMS之——ActiveMQ高可用集群安装、配置(基于ZooKeeper + LevelDB的伪集群)
- centos7.2 基于zookeeper集群搭建activeMQ的集群
- ActiveMQ基于zookeeper+leveldb主从配置
- ActiveMQ基于zookeeper+leveldb主从配置
- ActiveMQ基于zookeeper+leveldb主从配置
- activemq的高可用(zookeeper+leveldb)主从集群
- 自学编程,十年磨一剑
- Centos7安装共享Samba win访问linux
- Aho-Corasick算法学习
- 括号匹配
- ActiveMQ集群应用
- 基于zookeeper+leveldb搭建activemq集群
- iOS程序猿之毛玻璃效果
- MacBook Air密码忘了,苹果电脑密码忘了怎么办
- Java Map 按key排序和按Value排序
- 同一ViewController内如果有两处AlertView要用代理Delegate怎么写法
- Java中文分词组件 - word分词
- PAT 乙级 1002-数字分类
- String indexOf 算法
- codeforces_616D. Longest k-Good Segment(尺取法)