前言
本章学习ActiveMQ的主从搭建
方法
1.概念
我们之前学习过Redis的主从复制,那么ActiveMQ的主从也是一样的。
Redis需要哨兵监控,而我们的ActiveMQ则需要zookeeper的帮助。下面让我们慢慢学习。
zookeeper(zk):
zooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
简单的说,zk的功能就是为我们的ActiveMQ提供集群服务,监控MQ的主从节点,MQ主机宕机自动进行选举。
为了实现高可用,我们的zk也需要进行集群的搭建,本次选择三个zk进行搭建,一般是奇数个。
2.zookeeper集群搭建
注意:前提需要有JDK事先安装完毕
1)zookeeper的下载
网址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/
2)将下载好的安装包拷贝到linux服务器中
3)解压缩
tar -zxvf zookeeper-3.4.9.tar.gz -C /usr/local/
4)进入到zk的配置目录找到zk的核心配置文件模板复制一份作为其配置文件
5)创建zk临时数据目录,在目录中存放服务器唯一标识
另外两个服务器的myid为2和3
6)配置zk配置文件zoo.cfg
第一步:配置zoo.cfg的数据目录为之前我们建立的data目录
第二步:配置集群所需要的配置。需要 server.编号= ip:投票端口:选举端口
投票端口:用来决定正在运行的主机是否宕机
选举端口:用来决定哪一个zk作为主机
以上配置保证了ZK的高可用,避免一个ZK宕机造成的严重后果。
上述投票端口以及选举端口可以进行自定义配置!
上述代表配置三个zk,ip以及对应的投票端口和选举端口
7)启动zk
8)验证zookeeper集群
使用如下命令查找主从:
192.168.1.103:
192.168.1.104:
192.168.1.105:
通过上面我们不难看出,104是主机,103和105是从机,它们一起构成了zk集群服务。
3.ActiveMQ主从搭建
我们将使用192.168.1.103,192.168.1.104以及192.168.1.105三台服务器实现MQ的主从搭建。
我们需要实现将MQ分别安装在这三台服务器中。
官方介绍了三种主从的搭建机制,这里我们选择第三种
从上面可以看出,因为快所以我们建议使用这个。
1)配置MQ配置文件activemq.xml
这里我们将采用LevelDB的持久化机制,并配合zookeeper实现主从搭建。
首先需要修改对应三台MQ的broker的name保持一致,本次指定为mq-cluster:
其次需要对MQ的服务端口进行修改,三个分别为:61616,61617,61618
最后,在这里<persistenceadapter>下加入如下配置:</persistenceadapter>
<persistenceAdapter> <replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:62623" zkAddress="192.168.1.103:2181,192.168.1.104:2181,192.168.1.105:2181" hostname="192.168.1.103" zkPath="/activemq/leveldb-stores"/> </persistenceAdapter>
主要配置讲解:
directory:表示leveldb数据库持久化文件的存储位置 replicas:表示MQ的节点个数 bind:该处绑定MQ之间的通信端口,为了避免冲突分别设置为62623,62624,62625 zkAddress:该处绑定zk的ip和端口号,本次是三个zk hostname:该处表示主机的ip,103即设置为192.168.1.103 zkPath:该处表示主从节点信息存储的位置,默认位置为zk目录下的/activemq/leveldb-stores
2)配置jetty.xml文件
为了避免我们的web应用管理界面发生端口冲突,我们对三个MQ分别进行修改,分别为8161,8162,8163
3)分别启动三个MQ
观察各自的MQ是否成功启动:
4)查询MQ的主从节点信息
进入到zk的bin目录下,运行如下指令:
进入到对应的MQ节点信息存储目录:
我们可以发现三个节点,15,16,17
那么到底哪个MQ是主节点呢,我们使用如下命令查看节点信息:
17节点信息如下:
从上面可以看出,该节点不是主节点,而是从节点,因为它的elected的属性值是null
15节点信息如下:
从上面可以看出,该节点是主节点,因为它的elected的属性值存在
主节点为104,从节点那就是103和105了。
访问主机的web应用地址:
那么,大家可以试试将主MQ宕机,看是否会选出新的主机,我这里试下来是没问题的。
/usr/local/activemq/bin/activemq start
/usr/local/activemq/bin/activemq stop
/usr/local/activemq/bin/zkCli.sh
tail /usr/local/activemq/data/activemq.log
/usr/local/zookeeper/bin/zkServer.sh status
/bin/zkCli.sh
/usr/local/zookeeper/bin/zkCli.sh
/activemq/leveldb-stores
cd /usr/local/activemq/conf
————————————————
版权声明:本文为CSDN博主「程序猴jwang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_21046965/java/article/details/88383895