1 前提准备
- ZooKeeper集群
- ActiveMQ安装包:apache-activemq-5.11.1-bin.tar.gz
2 集群架构
2.1 架构图
01-架构图.png
2.2 ZooKeeper集群
ZooKeeper01 | ZooKeeper02 | ZooKeeper03 |
---|---|---|
192.168.1.4 | 192.168.1.5 | 192.168.1.6 |
2.3 ActiveMQ集群
ActiveMQ01 | ActiveMQ02 | ActiveMQ03 |
---|---|---|
192.168.1.4 | 192.168.1.5 | 192.168.1.6 |
3 搭建集群
3.1 解压安装包
分别在三台服务器上进行解压操作:
[root@Server01 lcp]# pwd
/home/lcp
[root@Server01 lcp]# mkdir activemq
[root@Server01 lcp]# tar -zxf software/apache-activemq-5.11.1-bin.tar.gz -C activemq/
3.2 配置节点名
每一个ActiveMQ集群应该有一个统一的名字,所以我们需要修改配置文件“activemq.xml”,将三台服务器的节点名brokerName统一为“ActiveMQ-Cluster”。
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="ActiveMQ-Cluster" dataDirectory="${activemq.data}">
3.3 修改持久化适配器
修改配置文件“activemq.xml”,使用性能比较好的LevelDB替换掉默认的KahaDB,具体配置如下:
<persistenceAdapter>
<!--<kahaDB directory="${activemq.data}/kahadb"/>-->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:62623"
zkAddress="192.168.1.4:2181,192.168.1.5:2181,192.168.1.6:2181"
hostname="192.168.1.4"
zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
配置项说明:
- directory:持久化数据存放地址
- replicas:集群中节点的个数
- bind:集群通信端口
- zkAddress:ZooKeeper集群地址
- hostname:当前服务器的IP地址,如果集群启动的时候报未知主机名错误,那么就需要配置主机名到IP地址的映射关系。
- zkPath:ZooKeeper数据挂载点
至此,ActiveMQ的高可用集群搭建完成。
4 启动集群
前提:ZooKeeper集群已启动
分别启动三台ActiveMQ服务器:
[root@Server01 bin]# pwd
/home/lcp/activemq/apache-activemq-5.11.1/bin
[root@Server01 bin]# ./activemq start
INFO: Loading '/home/lcp/activemq/apache-activemq-5.11.1/bin/env'
INFO: Using java '/home/lcp/jdk/jdk1.7.0_75/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/home/lcp/activemq/apache-activemq-5.11.1/data/activemq.pid' (pid '2521')
在启动过程中,可以在activemq.log文件中查看启动日志:
[root@Server01 data]# pwd
/home/lcp/activemq/apache-activemq-5.11.1/data
[root@Server01 data]# ll
total 20
-rwxrwxrwx. 1 root root 10222 Feb 4 06:47 activemq.log
-rw-r--r--. 1 root root 5 Feb 4 06:47 activemq.pid
-rw-r--r--. 1 root root 0 Feb 4 06:35 audit.log
drwxr-xr-x. 4 root root 4096 Feb 4 06:47 leveldb
[root@Server01 data]# tail -f activemq.log
集群启动成功后,ActiveMQ会往ZooKeeper中注册集群信息。为了方便,我们使用ZooInspector工具来查看具体的内容。
第一条注册信息:
02-第一条注册信息.png
第二条注册信息:
03-第二条注册信息.png
第三条注册信息:
04-第三条注册信息.png
从以上三条注册信息的内容我们可以看出,ActiveMQ01(192.168.1.4)被选举为主节点,并对外提供服务,其余两个节点作为从节点,处于待机状态,不提供服务。
知道了ActiveMQ集群的主节点后,我们可以使用浏览器来访问它的管理页面,查看它是否能正常提供服务。
05-主节点管理页面.png
5 测试集群的高可用性
关掉主节点ActiveMQ01:
[root@Server01 bin]# ./activemq stop
查看失败转移情况:
06-失败转移结果.png
07-新的主节点管理页面.png
从结果可以看出,原来的从节点ActiveMQ02(192.168.1.5)被ZooKeeper选举成新的主节点,持续对外提供服务。由此可见,本次搭建的集群具备高可用性。