ActiveMQ高可用架构 activemq高可用集群
  9Jafi1jCxvbu 2023年11月08日 102 0

一. 简介 

    activemq高可用集群只能系统的可用性,如果需要提高并发,则需要搭建负载均衡。

            实现负载,就是俩个高可用集群,每个集群的主节点来负载均衡。

            zookeeper集群的安装说明,请参照笔者的另一篇博客: linux下安装zookeeper集群

            activemq高可用集群的搭建说明,请参照笔者的另一篇博客:linux下搭建activemq高可用集群

二. 集群部署说明
2.1 节点信息

ActiveMQ高可用架构 activemq高可用集群_ActiveMQ高可用架构

 

2.2 安装activemq           

   给三台服务器按照上面的顺序分别安装六台activemq. 

           activemq的安装说明,请参照笔者的另一篇博客: linux下安装activemq

           注:此时将mq安装在了/usr/local/env/activemq目录下,如下图:

           

ActiveMQ高可用架构 activemq高可用集群_高可用_02

 

三. 搭建高可用集群clusterA和clusterB

3.1 配置高可用clusterA

3.1.1 修改activemq.xml
1)  修改brokerName为“clusterA”

注: MqA1, MqA2, MqA3的均修改如下:

 

ActiveMQ高可用架构 activemq高可用集群_ActiveMQ高可用架构_03

 

2)  为persistenceAdapter添加replicatedLevelDB元素

MqA1:

<persistenceAdapter>
            <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
            
            <!-- activemq zookeeper high availiability -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62624"
                zkAddress="182.61.53.64:2181,182.61.61.90:2181,182.61.32.229:2181"
                hostname="182.61.53.64"
                zkPath="/activemq/leveldb-stores"
            />              
            
        </persistenceAdapter>

MqA2:

<persistenceAdapter>
            <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
            
            <!-- activemq zookeeper high availiability -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62625"
                zkAddress="182.61.53.64:2181,182.61.61.90:2181,182.61.32.229:2181"
                hostname="182.61.61.90"
                zkPath="/activemq/leveldb-stores"
            />              
            
        </persistenceAdapter>

MqA3:

<persistenceAdapter>
            <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
            
            <!-- activemq zookeeper high availiability -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62626"
                zkAddress="182.61.53.64:2181,182.61.61.90:2181,182.61.32.229:2181"
                hostname="182.61.32.229"
                zkPath="/activemq/leveldb-stores"
            />              
            
        </persistenceAdapter>

  

3)  修改消息端口uri

MqA1:

ActiveMQ高可用架构 activemq高可用集群_zookeeper_04

MqA2:

<persistenceAdapter>
            <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
            
            <!-- activemq zookeeper high availiability -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62625"
                zkAddress="182.61.53.64:2181,182.61.61.90:2181,182.61.32.229:2181"
                hostname="182.61.61.90"
                zkPath="/activemq/leveldb-stores"
            />              
            
        </persistenceAdapter>

MqA3:

<persistenceAdapter>
            <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
            
            <!-- activemq zookeeper high availiability -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62626"
                zkAddress="182.61.53.64:2181,182.61.61.90:2181,182.61.32.229:2181"
                hostname="182.61.32.229"
                zkPath="/activemq/leveldb-stores"
            />              
            
        </persistenceAdapter>

3.1.2 修改jetty.xml

1)  修改控制台访问端口

MqA1:

ActiveMQ高可用架构 activemq高可用集群_zookeeper_05

MqA2:

ActiveMQ高可用架构 activemq高可用集群_linux_06

MqA3:

ActiveMQ高可用架构 activemq高可用集群_ActiveMQ高可用架构_07

3.1.3 测试clusterA集群高可用

测试代码请参照:linux下搭建activemq高可用集群 中的测试代码。

 

3.2 配置高可用clusterB

3.2.1 修改activemq.xml

1)  修改brokerName为“clusterB”

注: MqB1, MqB2, MqB3的均修改如下:

 

ActiveMQ高可用架构 activemq高可用集群_linux_08

2)  为persistenceAdapter添加replicatedLevelDB元素

MqB1:

<persistenceAdapter>
        
            <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
            
            <!-- activemq zookeeper high availiability -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62627"
                zkAddress="182.61.53.64:2181,182.61.61.90:2181,182.61.32.229:2181"
                hostname="182.61.53.64"
                zkPath="/activemq/leveldb-stores"
            />              
            
        </persistenceAdapter>

 

MqB2:

<persistenceAdapter>
        
            <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
            
            <!-- activemq zookeeper high availiability -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62628"
                zkAddress="182.61.53.64:2181,182.61.61.90:2181,182.61.32.229:2181"
                hostname="182.61.61.90"
                zkPath="/activemq/leveldb-stores"
            />              
            
        </persistenceAdapter>

MqB3:

<persistenceAdapter>
            
            <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
            
            <!-- activemq zookeeper high availiability -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62629"
                zkAddress="182.61.53.64:2181,182.61.61.90:2181,182.61.32.229:2181"
                hostname="182.61.32.229"
                zkPath="/activemq/leveldb-stores"
            />  
            
        </persistenceAdapter>

  

3)  修改消息端口uri

MqB1:

ActiveMQ高可用架构 activemq高可用集群_linux_09

MqB2:

ActiveMQ高可用架构 activemq高可用集群_linux_10

MqB3:

ActiveMQ高可用架构 activemq高可用集群_zookeeper_11

3.2.2 修改jetty.xml

1)  修改控制台访问端口

MqB1:

ActiveMQ高可用架构 activemq高可用集群_高可用_12

 

MqB2:

ActiveMQ高可用架构 activemq高可用集群_ActiveMQ高可用架构_13

 

MqB3:

ActiveMQ高可用架构 activemq高可用集群_高可用_14

 

3.2.3 测试clusterB集群高可用

测试代码请参照:linux下搭建activemq高可用集群 中的测试代码。

 

四. 搭建负载均衡集群

注: 要让两个ActiveMQ集群能够实现负载均衡只需要在config目录下的activemq.xml中配置桥接网络转移地址,这样消费端就可以同时消费两个集群中消息队列的请求信息。networkConnectors元素要在persistenceAdapter元素之前。

4.1 在clusterA集群中配置clusterB集群的桥接地址
注: MqA1, MqA2, MqA3的均修改如下:

4.2 在clusterB集群中配置clusterA集群的桥接地址

注: MqB1, MqB2, MqB3的均修改如下

 

<!-- loadbalance networkconnector to clusterB  -->
        <networkConnectors>
        	<networkConnector 
        		uri="static:(tcp://182.61.53.64:51517,tcp://182.61.61.90:51518,tcp://182.61.32.229:51519)"
        		duplex="false"
        	/>
        </networkConnectors>

  

4.3. 测试

4.3.1 启动mq

              分别启动MqA1,MqA2,MqA3,MqB1,MqB2,MqB3六台activemq

              此时,可以看到:MqA2(90:8165)  和 MqB1(64:8167) 为主节点

4.3.2 代码测试

 测试代码请参照:linux下搭建activemq高可用集群 中的测试代码。

 1) 此时,要将所有的activemq连接信息都添加到配置文件中,如下:

<!-- loadbalance networkconnector to clusterB  -->
        <networkConnectors>
        	<networkConnector 
        		uri="static:(tcp://182.61.53.64:51514,tcp://182.61.61.90:51515,tcp://182.61.32.229:51516)"
        		duplex="false"
        	/>
        </networkConnectors>

2) 测试结果:  

发送100条MQ消息,有时候是clusterA主节点(http://182.61.61.90:8165)来发送,有时候是clusterB主节点(http://182.61.53.64:8167)来发送。

发了6次100条的,其中5次是http://182.61.61.90:8165发送的,1次是http://182.61.53.64:8167发送的。如下:

ActiveMQ高可用架构 activemq高可用集群_ActiveMQ高可用架构_15

 

ActiveMQ高可用架构 activemq高可用集群_zookeeper_16

 

 

4.3.2 代码测试

 测试代码请参照:linux下搭建activemq高可用集群 中的测试代码。

 1) 此时,要将所有的activemq连接信息都添加到配置文件中,如下:

ActiveMQ高可用架构 activemq高可用集群_linux_17

2) 测试结果:  

发送100条MQ消息,有时候是clusterA主节点(http://182.61.61.90:8165)来发送,有时候是clusterB主节点(http://182.61.53.64:8167)来发送。

发了6次100条的,其中5次是http://182.61.61.90:8165发送的,1次是http://182.61.53.64:8167发送的。如下:

ActiveMQ高可用架构 activemq高可用集群_ActiveMQ高可用架构_18

ActiveMQ高可用架构 activemq高可用集群_zookeeper_19




【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
9Jafi1jCxvbu