前言
前文中已经详细介绍了MQ以及在Java中对MQ的使用,由于本次搭建MQ集群使用到了ZK集群,本人已将所有细节写到了另一文章,若有需要请查看如下。
传送门 :
环境搭建
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"
#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集群环境搭建完毕