[ActiveMQ] Apache ActiveMQ 集群

前言

前文中已经详细介绍了MQ以及在Java中对MQ的使用,由于本次搭建MQ集群使用到了ZK集群,本人已将所有细节写到了另一文章,若有需要请查看如下。

传送门 :

[Zookeeper集群搭建]

[ActiveMQ消息中间件的概念及安装]

[ActiveMQ在Java中的使用]


环境搭建

mkdir /usr/activemq
tar -xzvf /root/apache-activemq-5.11.1-bin.tar.gz -C /usr/activemq/

修改配置文件(三台机器都要改)

cd /usr/activemq/apache-activemq-5.11.1/conf
vim activemq.xml

#修改brokerName
#名字自定义,三台mq都要修改,并且名字要一致
brokerName="activemq-cluster"

1

#activemq.xml中注释掉
<!--
    <persistenceAdapter>
        <kahaDB directory="${activemq.data}/kahadb"/>
    </persistenceAdapter>
-->
#紧接着在下面添加
<persistenceAdapter>
                <replicatedLevelDB 
                        directory="${activemq.data}/leveldb" 
                        replicas="1" 
                        bind="tcp://0.0.0.0:0" 
                        zkAddress="Hadoop1:2181,Hadoop2:2181,Hadoop3:2181"
                        hostname="Hadoop1" 
                        zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>

注:其他主机修改hostname时要修改为本机ip

属性说明

对于replicas属性,官方给出的解释如下:

The number of nodes that will exist in the cluster. At least (replicas/2)+1 nodes must be online to avoid service outage.(default:3)

这里的“number of nodes”包括了Master节点和Salve节点的总和。换句话说,如果您的集群中一共有3个ActiveMQ节点,且只允许最多有一个节点出现故障。那么这里的值可以设置为2(当然设置为3也行,因为整型计算中 3 / 2 + 1 = 2)。但如果您将replicas属性设置为4,就代表不允许3个节点的任何一个节点出错,因为:(4 / 2) + 1 = 3,也就是说3个节点是本集群能够允许的最小节点数。

一旦zookeeper发现当前集群中可工作的ActiveMQ节点数小于所谓的“At least (replicas/2)+1 nodes”,在ActiveMQ Master节点的日志中就会给出提示:“Not enough cluster members connected to elect a master.”,然后整个集群都会停止工作,直到有新的节点连入,并达到所规定的“At least (replicas/2)+1 nodes”数量。

bind属性指明了当本节点成为一个Master节点后,通过哪一个通讯位置进行和其它Salve节点的消息复制操作。注意这里配置的监听地址和端口不能在transportConnectors标签中进行重复配置,否则节点在启动时会报错。

至此MQ集群环境搭建完毕

猜你喜欢

转载自blog.csdn.net/Konaji/article/details/80870908