ActiveMQ + ZooKeeper 集群高可用配置

一. 准备条件:

(1) 最好是有3台服务器【2台也行, 只是根据(replicas/2)+1 公式至少得2个ActiveMQ服务存在才能保证运行, 自己测试的时候麻烦点, 关掉其中一个, 再开启, 看会不会选举到另一个ActiveMQ服务, 多试几次可以看到效果】

(2)  ActiveMQ安装参考: ActiveMQ

(3)  ZooKeeper安装参考:ZooKeeper

二. 配置 :

ActiveMQ根目录下的conf/activemq.xml, 原来默认如下:

<persistenceAdapter>  
            <kahaDB directory="${activemq.data}/kahadb"/>  
        </persistenceAdapter>

修改为(hostname根据服务器不同做出改变, 其他配置相同):

<persistenceAdapter>  

  <replicatedLevelDB  

    directory="${activemq.data}/leveldb"  

    replicas="3"  

    bind="tcp://0.0.0.0:0"  

    zkAddress="172.17.110.1:2181"  

    zkPassword="password"  

    hostname="172.17.110.1"  

    sync="local_disk"  

    zkPath="/activemq/leveldb-stores"  

    />  
</persistenceAdapter>

directory : 存储数据的路径

replicas : 集群中的节点数【(replicas/2)+1公式表示集群中至少要正常运行的服务数量】, 3台集群那么允许1台宕机, 另外两台要正常运行

bind : 当这个节点成为Master, 它会绑定配置好的地址和端口来履行主从复制协议

zkAddress : ZooKeeper的ip和port, 如果是集群, 则用逗号隔开(这里作为简单示例ZooKeeper配置为单点, 这样已经适用于大多数环境了, 集群也就多几个配置)

zkPassword : 当连接到ZooKeeper服务器时用的密码

hostname : 本机ip

sync :  在认为消息被消费完成前, 同步信息所存贮的策略, 如果有多种策略用逗号隔开, ActiveMQ会选择较强的策略(local_mem, local_disk则肯定选择存贮在本地硬盘)

zkPath : ZooKeeper选举信息交换的存贮路径

三. 测试

Step1 :

根据ZooKeeper的策略, 从三台ActiveMQ服务器选一台运行, 其他两台等待运行, 只是做数据上的主从同步。

所以, 启动ZooKeeper服务器和ActiveMQ服务器后, 访问http://172.17.110.1:8161/admin/ 、 http://172.17.110.2:8161/admin/、 http://172.17.110.3:8161/admin/ 只会有一个成功。

Step2 :

关闭能访问http://ip:8161/admin/的ActiveMQ服务, 访问其他两个, 其中有一个能访问, 说明ActiveMQ + ZooKeeper 集群高可用配置已经成功。

四. 参考文档

ActiveMQ官网

ZooKeeper官网



相关文章

发表评论

Comment form

(*) 表示必填项

1 条评论

  1. Yang 说道:

    The LevelDB store has been deprecated and is no longer supported or recommended for use.

    Thumb up 0 Thumb down 0

跳到底部
返回顶部