三台centos7服务器。
1.开始前的准备ZK
必须安装zookeeper群集才能实现三台MQ链接。具体ZK群集搭建网上有很多 这里就不详谈 简单说下过程:
在zk1,zk2,zk3的目录下,创建data目录。
修改zk1,zk2,zk3的配置文件。cp zoo_sample.cfg zoo.cfg
然后进入配置文件zoo.cfg 将dataDir=/*/*/*/data改成data目录
然后在最后加入
server.1=ip:2888:3888
server.2=ip:2888:3888
server.3=ip:2888:3888
还有一步,就是在zk1,zk2,zk3的data(这个data目录也是自己创建的)下面创建一个文件myid,内容就是zoo.cfg中的服务器server.x中的数字1,2,3。
最后启动即可。。
这个比较简单,在三台机器上安装active MQ。
主要的修改配置文件,就是activemq.xml。
下面以操作mq1为例
2.然后开始配置active MQ群集:
这个比较简单,我在三台机器上安装AMQ。
主要的修改配置文件,就是activemq.xml
进入mq1目录,vim activemq.xml文件。我们这里amq的集群是基于zk的,所以,不要默认的持久化方案。即将原始的
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
注释掉,采用下面的新内容:
<persistenceAdapter>
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="10.90.7.10:2181,10.90.7.10:2182,10.90.7.10:2183"
hostname="10.90.7.10"
sync="local_disk"
zkPath="/activemq/leveldb-stores"
/>
</persistenceAdapter>
这里,hostname要修改为amq所在机器的IP地址,或者是能够解析的域名。zkAddress是zk集群的地址,即每个zk的IP:port对,之间用逗号分隔。zkPath这里是指定的,所以,在上面的zkCli.sh中可以ls命令看到的内容。
。。。。。。 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="tkcss" dataDirectory="${activemq.data}"> <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" > <!-- The constantPendingMessageLimitStrategy is used to prevent slow topic consumers to block producers and affect other consumers by limiting the number of messages that are retained For more information, see: http://activemq.apache.org/slow-consumer-handling.html --> <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="1000"/> </pendingMessageLimitStrategy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> <!-- The managementContext is used to configure how ActiveMQ is exposed in JMX. By default, ActiveMQ uses the MBean server that is started by the JVM. For more information, see: http://activemq.apache.org/jmx.html --> <managementContext> <managementContext createConnector="false"/> </managementContext> <!-- Configure message persistence for the broker. The default persistence mechanism is the KahaDB store (identified by the kahaDB tag). For more information, see: http://activemq.apache.org/persistence.html --> <!-- <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> --> <persistenceAdapter> <replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:0" zkAddress="10.90.7.10:2181,10.90.7.10:2182,10.90.7.10:2183" hostname="10.90.7.10" sync="local_disk" zkPath="/activemq/leveldb-stores" /> </persistenceAdapter> 。。。。。。
配置完成后,即可启动amq。
[root@localhost bin]# ./activemq start
启动后,如果正常的话 会启动一个MQ 而另外两个没显示启动 等启动MQ死掉后 另外两个会自动选举