• ActiveMQ笔记(2):基于ZooKeeper的HA方案


    activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ,基于共享文件目录,db,zookeeper。

    下面演示了如何在本机搭建基于zookeeper的activemq集群:

    一、在目录activemq1下安装activemq(可参考上篇内容),然后修改conf/activemq.xml

     1     <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
     2         ...
     3         <persistenceAdapter>
     4             <!--<kahaDB directory="${activemq.data}/kahadb"/>-->
     5             <replicatedLevelDB
     6                     directory="activemq-data"
     7                     replicas="3"
     8                     bind="tcp://0.0.0.0:0"
     9                     zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
    10                     zkSessionTimeout="2s"
    11                     zkPath="/activemq/leveldb-stores"
    12             />
    13         </persistenceAdapter>
    14         ...
    15     </broker>

    注:为保证zk的HA,本机至少要有3个zk的节点,可参考我以前的文章搭建.

    二、将activemq1复制二分,变成activemq2、activemq3,由于是在本机测试,为防止端口冲突,这二个目录下的activemq.xml,得修改端口

            <transportConnectors>
                <transportConnector name="openwire"
                                    uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="amqp"
                                    uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="stomp"
                                    uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="mqtt"
                                    uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="ws"
                                    uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
            </transportConnectors>
    

    上面这几个端口,大家看情况调整,只要保证3个activemq不冲突即可

    三、启动zk1,zk2,zk3,以及activemq1,activemq2,activemq3即可。

    注:为方便观察输出,建议启动activemq时,用./activemq.sh console启动

    四、测试Failover

    正常启动后,然后手动停掉master,然后观察剩下的2个节点终端输出,正常情况下,应该过一会儿,有一个会自动提升为master.

    最后提醒一下:采用上述HA方案后,虽然系统可用性提高了,但是在本机上测试发现,跟上篇同样的测试代码和用例,单节点运行时,1秒可以发8k+条消息,采用zookeeper的HA方案后,每秒只能写入500条消息左右,对于性能要求较高的场景,建议采用其它方案,比如下一篇要介绍的基于Networks of brokers的HA方案

    参考文章:

    http://activemq.apache.org/replicated-leveldb-store.html

  • 相关阅读:
    Oracle 控制文件
    rm 删除文件
    FreeBSD 8.0候选版本RC3发布
    【非长篇大论】X3D Web3D标准的发展
    【短】又碰到CSDN服务器负载过重
    年终总结 等待
    项目管理软件InDefero
    X3D 与 HTML5
    对使用破解软件的一点想法
    Flash开发的基本概念
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/activemq-ha-with-zookeeper.html
Copyright © 2020-2023  润新知