一、准备工作:
准备三台机器:
192.168.35.111
192.168.35.112
192.168.35.113
二、搭建zookeeper
三台机器上均要搭建zookeeper服务
// 下载zookeeper安装包
# wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz # tar -xvf zookeeper-3.4.10.tar.gz -C /opt # cd /opt/zookeeper-3.4.10/conf/ # cp zoo_sample.cfg zoo.cfg
// 修改zoo.cfg文件
# grep -Ev '#|^$' zoo.cfg
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/opt/zookeeper-3.4.10/data_zookeeper clientPort=2181 server.1=192.168.35.111:2888:3888 server.2=192.168.35.112:2888:3888 server.3=192.168.35.113:2888:3888
// 第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888
这一步很重要,如果顺序对应的数字不对,,会导致zookeeper服务启动失败
server.1服务器:echo 1 > /opt/zookeeper-3.4.10/zookeeper/myid
server.2服务器:echo 2 > /opt/zookeeper-3.4.10/zookeeper/myid
server.3服务器:echo 3 > /opt/zookeeper-3.4.10/zookeeper/myid
// 启动zookeeper服务
# /opt/zookeeper-3.4.10/bin/zkServer.sh start #启动服务 # /opt/zookeeper-3.4.10/bin/zkServer.sh stop #停止服务 # /opt/zookeeper-3.4.10/bin/zkServer.sh restart #重启服务 # /opt/zookeeper-3.4.10/bin/zkCli.sh #连接集群
三、搭建activemq集群
三台机器上均要搭建activemq服务
// 下载activemq安装包
# wget https://archive.apache.org/dist/activemq/5.12.0/apache-activemq-5.12.0-bin.tar.gz # tar -xvf apache-activemq-5.12.0-bin.tar.gz -C /opt
// 修改配置文件 activemq.xml,使用性能比较好的LevelDB替换掉默认的KahaDB
brokerName 一定要设置相同
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-test" dataDirectory="${activemq.data}">
禁掉 原来的 < kahaDB directory="${activemq.data}/kahadb"/ >
<persistenceAdapter> <!--kahaDB directory="${activemq.data}/kahadb"/ --> <replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:62621" zkAddress="192.168.35.111:2181,192.168.35.112:2182,192.168.35.113:2183" hostname="192.168.37.111" # 设为当前主机的ip zkPath="/activemq/leveldb-stores"/> </persistenceAdapter>
配置项说明:
directory:持久化数据存放地址
replicas:集群中节点的个数
bind:集群通信端口
zkAddress:ZooKeeper集群地址
hostname:当前服务器的IP地址,如果集群启动的时候报未知主机名错误,那么就需要配置主机名到IP地址的映射关系。
zkPath:ZooKeeper数据挂载点
至此,ActiveMQ的高可用集群搭建完成。
四、启动集群
前提:ZooKeeper集群已启动
分别启动三台ActiveMQ服务器
# /opt/apache-activemq-5.12.0/bin/activemq start // 启动activemq服务 # /opt/apache-activemq-5.12.0/bin/activemq stop // 结束activemq服务 # /opt/apache-activemq-5.12.0/bin/activemq restart // 重启activemq服务 # /opt/apache-activemq-5.12.0/bin/activemq status // 查看activemq服务状态
集群启动成功后,ActiveMQ会往ZooKeeper中注册集群信息。为了方便,我们使用ZooInspector工具来查看具体的内容。
第一条注册信息:
其他两个
从以上三条注册信息的内容我们可以看出,(192.168.35.182)被选举为主节点,并对外提供服务,其余两个节点作为从节点,处于待机状态,不提供服务。
知道了ActiveMQ集群的主节点后,我们可以使用浏览器来访问它的管理页面,查看它是否能正常提供服务.
五、测试集群的高可用性
关掉主节点,使用ZooInspector工具来查看具体的内容,发现主节点的ip地址换了,并且节点显示只剩下两个。