`

activemq+zookeeper+leveldb集群

 
阅读更多

一、搭建zookeeper集群

 

第一步:服务器配置

三台Ubuntu server准备好之后,假设它们的IP地址分别为192.168.0.11,192.168.0.12和192.168.0.13

安装Zookeeper需要先装JDK。

第二步:Zookeeper安装参考http://sxlkk.iteye.com/blog/2308556.

 

下面搭建activemq集群

 

 二、搭建activemq集群

第一步:

下载mq,地址:http://www.apache.org/dyn/closer.cgi?path=/activemq/5.10.2/apache-activemq-5.10.2-bin.tar.gz

第二步:

apache-activemq-5.10.2-bin.tar.gz放到/opt文件夹下,然后tar -zxvf apache-activemq-5.10.2-bin.tar.gz进行解压缩

第三步:配置

主要修改配置文件conf/activemq.xml

(1)broker-name的统一

 

        将broker标签的brokerName属性设置为统一的值,系统默认名称都为“localhost”,只有三个实例的brokerName一致,zookeeper才能识别它们属于同一个集群。

 

    (2)persistenceAdapter的配置

 

        persistenceAdapter设置持久化方式,主要有三种方式:kahaDB(默认方式)、数据库持久化、levelDB(v5.9.0+提供支持)。

 

        本文采用levelDB来进行持久化,并使用zookeeper实现集群的高可用,配置如下:

 

        首先注释掉原来kahaDB的持久化方式,然后配置levelDB+zookeeper的持久化方式。

 

 

<persistenceAdapter>
    <replicatedLevelDB
      directory="${activemq.data}/leveldb"
      replicas="3"
      bind="tcp://0.0.0.0:0"
      zkAddress="192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181"
      hostname="192.168.0.11"
      sync="local_disk"
      zkPath="/activemq/leveldb-stores"
      />
</persistenceAdapter>
 注意上述配置中的hostname属性值,不同的activemq实例对应不同的hostname值,其他两个实例配置的hostname值分别为:192.168.0.11, 192.168.0.12。

 

配置完成后启动activemq,进入目录:/opt/apache-activemq-5.10.2/bin下面,
执行:./activemq start
三台同时启动,如果报错,则用./activemq console命令启动,查看日志,如果其中一台机器报如下错误:
No IOExceptionHandler registered, ignoring IO exception | org.apache.activemq.broker.BrokerService | LevelDB IOExcepti
on handler.
java.io.IOException: com.google.common.base.Objects.firstNonNull(Ljava/lang/Object;Ljava/lang/ObjectLjava/lang/Object;
     at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:39)[activemq-client-5.10.0.jar:5.10.0]
     at org.apache.activemq.leveldb.LevelDBClient.might_fail(LevelDBClient.scala:552)[activemq-leveldb-store-5.10.0.jar:5.10.0]
     at org.apache.activemq.leveldb.LevelDBClient.replay_init(LevelDBClient.scala:657)[activemq-leveldb-store-5.10.0.jar:5.10.0]
     at org.apache.activemq.leveldb.LevelDBClient.start(LevelDBClient.scala:558)[activemq-leveldb-store-5.10.0.jar:5.10.0]
     at org.apache.activemq.leveldb.DBManager.start(DBManager.scala:648)[activemq-leveldb-store-5.10.0.jar:5.10.0]
     at org.apache.activemq.leveldb.LevelDBStore.doStart(LevelDBStore.scala:235)[activemq-leveldb-store-5.10.0.jar:5.10.0]
     at org.apache.activemq.leveldb.replicated.MasterLevelDBStore.doStart(MasterLevelDBStore.scala:110)[activemq-leveldb-store-5.10.0.jar:5.10.0]
     at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)[activemq-client-5.10.0.jar:5.10.0]
     at org.apache.activemq.leveldb.replicated.ElectingLevelDBStore$$anonfun$start_master$1.apply$mcV$sp(ElectingLevelDBStore.scala:226)[activemq-lev
eldb-store-5.10.0.jar:5.10.0]
     at org.fusesource.hawtdispatch.package$$anon$4.run(hawtdispatch.scala:330)[hawtdispatch-scala-2.11-1.21.jar:1.21]
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_20]
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_20]
 

 

 

下面是从老外那查到的解决方案:

After going through tickets in activeMQ  found following ticket has been reported https://issues.apache.org/jira/browse/AMQ-5225. Workaround described in the ticket will solve the issue. The work around for this issue, 

1、remove pax-url-aether-1.5.2.jar from lib directory

2、comment out the log query section

 

 

解决方案:

        (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>

 

这样集群就搭建完毕

客户端连接使用failover方案: 

 

failover:(tcp://192.168.1.11:61616,tcp://192.168.1.12:61616,tcp://192.168.1.13:61616)?initialReconnectDelay=1000

分享到:
评论

相关推荐

    ActiveMQ+zookeeper实现高可用和负载均衡(代码和测试)

    本文将详细介绍如何通过ActiveMQ结合Zookeeper来构建一个具有高可用性和负载均衡能力的集群环境。 #### 二、关键概念解析 在深入探讨具体实现之前,我们首先需要理解几个关键的概念: ##### 2.1 伪集群 - **定义*...

    基于zookeeper+levelDB的ActiveMQ集群测试代码

    在这个场景中,我们将深入探讨如何利用ZooKeeper和LevelDB来构建一个高可用的ActiveMQ集群。 ZooKeeper是Apache Hadoop项目的一个子项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是集群的管理者,...

    高可用之ActiveMQ高可用集群(ZooKeeper+LevelDB)安装、配置、高可用测试.docx

    综上所述,通过 ZooKeeper 和 LevelDB 的组合,ActiveMQ 集群能够提供高可用性和容错性,确保即使在单个 Broker 故障的情况下,服务也能不间断地运行。正确配置和测试集群设置是确保这种高可用性的关键步骤。在实际...

    ActiveMQ高可用集群(ZooKeeper+LevelDB)安装、配置、高可用测试.docx

    ActiveMQ 高可用集群(ZooKeeper + LevelDB)安装、配置、高可用测试 ActiveMQ 高可用集群是分布式消息队列系统的核心组件之一,旨在提供高可用性和高性能的消息队列服务。在本教程中,我们将详细介绍如何使用 ...

    ActiveMQ高可用集群(ZooKeeper+LevelDB)安装、配置(伪集群).docx

    "ActiveMQ高可用集群(ZooKeeper+LevelDB)安装、配置(伪集群)" 本文将详细介绍ActiveMQ高可用集群的安装和配置过程,该集群使用ZooKeeper和LevelDB实现高可用性。 ActiveMQ高可用集群规划 在部署ActiveMQ高可用...

    高可用之ActiveMQ高可用集群(ZooKeeper+LevelDB)安装、配置(伪集群).docx

    总的来说,通过ZooKeeper的协调和LevelDB的数据持久化,ActiveMQ集群能够提供可靠的、无中断的消息传递服务。这种部署策略特别适合对消息传递的连续性和可靠性有高要求的大型分布式系统。然而,值得注意的是,虽然...

    ActiveMQ基于zookeeper的主从(levelDB Master/Slave)搭建

    ActiveMQ 基于 ZooKeeper 的主从(LevelDB Master/Slave)搭建 ActiveMQ 是一个流行的开源消息中间件,它提供了高性能、可靠的消息队列服务。在分布式系统中,ActiveMQ 可以作为消息中间件,实时同步数据,避免单...

    Zookeeper+ActiveMQ测试.rar

    本示例中的“Zookeeper+ActiveMQ测试.rar”文件包含了一个使用ZooKeeper实现ActiveMQ高可用性和负载均衡集群的实践案例。下面我们将详细探讨这两个组件以及它们如何协同工作。 **ZooKeeper** ZooKeeper是一个分布式...

    CentOS环境安装配置AMQ集群及zookeeper集群

    本文将详细介绍如何在CentOS环境中安装配置ActiveMQ (AMQ) 集群和Zookeeper集群。这两种集群技术对于分布式系统的消息传递和服务协调至关重要。通过具体步骤指导,我们将确保读者能够顺利搭建并运行这些集群。 ####...

    activemq集群配置文档

    在 ActiveMQ 的集群配置中,采用 ZooKeeper 作为集群协调器是一种非常有效的高可用性解决方案。其核心原理在于使用 ZooKeeper 来管理 ActiveMQ Broker 的注册与状态监控。在一个典型的配置中,仅有一个 Broker 作为 ...

    activemq集群安装

    ActiveMQ 集群安装是提高消息中间件可用性和可靠性的关键步骤,特别是从5.9版本开始,ActiveMQ引入了新的集群实现方式,去除了传统的Master-Slave模式,并引入了基于ZooKeeper和LevelDB的解决方案。这种方式提供了一...

    ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试.docx

    本文将深入探讨如何安装、配置ActiveMQ以实现高可用性集群,并进行负载均衡测试,同时利用ZooKeeper和LevelDB来增强系统的稳定性和可靠性。 首先,ActiveMQ的高可用性通常通过集群实现,集群中的每个节点都是...

    zookeeper与activemq整合

    Zookeeper与ActiveMQ的整合是一种常见且有效的方法,它通过Zookeeper提供的协调服务来解决ActiveMQ集群中的单点故障问题。 #### 二、背景 在本案例中,测试环境搭建在三台VM虚拟机(CentOS 6.4 64位)上,IP地址...

    ActiveMQ从入门到精通(三)

    本文来自于jianshu,文章介绍了采用Zookeeper+LevelDB+ActiveMQ的方式进行ActiveMQ集群的相关知识。这是ActiveMQ系列的最后一篇文章,主要是关于ActiveMQ集群,这里采用的方式是:Zookeeper+LevelDB+ActiveMQ。前面2...

    ActiveMQ部署方案分析对比

    自ActiveMQ 5.9.0版本起,原有的Pure Master Slave部署方式已被新的基于ZooKeeper + LevelDB的实现所取代,而其他传统的部署方式仍然保留。 ##### 1. Master-Slave部署方式 Master-Slave部署方式主要包括以下几种...

    0927分布式消息通信-ActiveMQ1

    15. **高可用方案**:通过Zookeeper协调,可以建立ActiveMQ的主从复制集群,确保故障切换时服务不中断。配置包括设置数据存储位置、副本数量、数据同步端口和ZooKeeper服务地址等。 **课后作业解析**: 1. **...

    03-05-26-RocketMQ基本原理分析1

    - **分布式KV存储**:如ActiveMQ中的levelDB或Redis,适用于对消息读写速度要求不高的场景。 - **文件系统存储**:如Kafka、RocketMQ和RabbitMQ,通过将消息刷盘到本地文件系统实现高吞吐量的持久化。这种方式高效...

Global site tag (gtag.js) - Google Analytics