码迷,mamicode.com
首页 > 其他好文 > 详细

ActiveMQ+ZooKeeper搭建高可用集群

时间:2019-08-13 18:45:00      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:format   搭建集群   注册   highlight   ast   col   home   技术   png   

一、说明

  实际的应用中,一般为了应用的高可用性,都会搭建集群环境去处理。部署多台应用,这样,即使一台有问题,其他热备应用可以立马顶上,继续提供服务。

  ActiveMQ的集群部署,基于zookeeper的应用程序协调服务和levelDB的持久化方案。

  本文中,基于一个系统环境,搭建伪集群模式,通过不同端口的配置,达到集群安装的效果。

  基本环境:jdk-7u80-linux-x64.tar.gz、Centos 6.9、zookeeper-3.4.12.tar.gz、apache-activemq-5.9.1-bin.tar.gz、Xshell。

  应用部署:zookeeper启动3个应用实例,ActiveMQ部署3套应用实例,构成最小单元的集群部署

  其中zookeeper的集群搭建,参见之前文章:https://www.cnblogs.com/eric-fang/p/9283904.html

二、ActiveMQ的集群配置

  ActiveMQ的主从模型,是一种高可用的解决方案,在zookeeper中注册若干的ActiveMQ Broker,其中只有一台作为主机master对外提供服务,其他作为备份slave保持待机。当master出现问题导致宕机不能正常提供服务的时候,zookeeper通过内部选举,在众多slave中推举出一台作为master继续对外提供服务。

  1、安装ActiveMQ

    上传apache-activemq-5.9.1-bin.tar.gz至linux,解压,然后修改拷贝,整出三份应用实例:

  技术图片

  2、修改配置

    2.1、修改服务端口(activemq.xml)

      分别修改对外提供的openwire服务端口为61616、61617、61618。待修改的地方如下:

<transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <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>

    2.2、修改持久化策略(activemq.xml)

      修改 persistenceAdapter 标签中的内容,其中相关属性说明如下:

      replicas - 当前主从模型中的节点数,根据实际配置

      bind - 主从实例间的通讯端口。分别配置为62626、62627、62628

      zkAddress - zookeeper应用的安装位置

      zkPath - ActiveMQ的主从信息保存在zookeeper中的什么目录

      hostname - ActiveMQ实例安装的实际linux主机名。可在 /etc/hosts 中进行配置,设置格式:ip 主机名,例如127.0.0.1 mq-server

<persistenceAdapter>
                <replicatedLevelDB
                         directory="${activemq.data}/levelDB"
                         replicas="3"
                         bind="tcp://0.0.0.0:62626"
                         zkAddress="172.17.0.4:2181,172.17.0.4:2182,172.17.0.4:2183"
                         zkPath="/activemq/leveldb-stores"
                         hostname="mq-server"
                />
        </persistenceAdapter>

    2.3、修改broker标签属性(activemq.xml)

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="mq-cluster" dataDirectory="${activemq.data}">

    所有的主从节点,上述的brokerName必须一致。

    2.4、修改控制台访问端口(jetty.xml)

      分别修改jetty的访问端口为:8161、8162、8163

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
             <!-- the default port number for the web console -->
        <property name="port" value="8161"/>
    </bean>

  2、启动ActiveMQ应用

    配置完成后,分别启动3个ActiveMQ应用,启动命令:${activemq-home}/bin/activemq start。启动后,可以jps看是否存在,也可以查看日志文件,日志目录:${activemq-home}/data/activemq.log

  3、查验ActiveMQ的状态

    可以在zookeeper中查验ActiveMQ的主从状态

    3.1、${zookeeper-home}/bin/zkCli.sh

    技术图片

    3.2、ls /activemq/leveldb-stores 查看ActiveMQ节点注册信息。

    技术图片

    3.3、get /activemq/leveldb-stores/000000000037 可以查验当前哪台ActiveMQ作为主机提供服务,其中主节点的address和elected一定非null,有数据。

  技术图片

三、集群的使用

  ActiveMQ使用的时候,就是在设置brokerURL的时候,设置为失败转移即可:

failover:(tcp://111.231.51.200:61616,tcp://111.231.51.200:61617,tcp://111.231.51.200:61618)?initialReconnectDelay=1000

  

 

 

 

 

  

ActiveMQ+ZooKeeper搭建高可用集群

标签:format   搭建集群   注册   highlight   ast   col   home   技术   png   

原文地址:https://www.cnblogs.com/eric-fang/p/11316394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!