CentOS 7 安装 Zookeeper + ActiveMQ集群

原理

使用ZooKeeper实现的Master-Slave实现方式,是对ActiveMQ进行高可用的一种有效的解决方案。

高可用的原理:

  • 使用ZooKeeper(集群)注册所有的ActiveMQ Broker。
  • 只有其中的一个Broker可以对外提供服务(也就是Master节点),其他的Broker处于待机状态,被视为Slave。
  • 如果Master因故障而不能提供服务,则利用ZooKeeper的内部选举机制会从Slave中选举出一个Broker充当Master节点,继续对外提供服务。

环境准备

主机名 系统 IP地址 zk 端口 MQ 版本 MQ 消息端口 MQ 控制台端口
node01 Centos7.5 172.16.1.11 2181 5.15.6 61616 8161
node02 Centos7.5 172.16.1.12 2181 5.15.6 61616 8161
node03 Centos7.5 172.16.1.13 2181 5.15.6 61616 8161

zookeeper 集群

zookeeper 的集群安装之前文章已经介绍过, CentOS 7 Zookeeper 介绍 及 集群安装,本次也同样使用该环境;

ActiveMQ 安装

下载地址:

下面的操作,需要在三台服务器上操作:

cd /opt/soft/

tar xf apache-activemq-5.15.6-bin.tar.gz 

mv apache-activemq-5.15.6 /opt/activemq-5.16.6

ln -s /opt/activemq-5.16.6 /opt/activemq

ls -ld /opt/activemq*

# lrwxrwxrwx  1 root root  20 Mar  1 14:22 /opt/activemq -> /opt/activemq-5.16.6
# drwxr-xr-x 10 root root 193 Sep  4  2018 /opt/activemq-5.16.6

配置

修改一、

把下面这行中的 brokerName 值为 activemq-cluster,或者任意自定义的,这里的值需要另外两个都一样才可以,表示是一个集群。

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-cluster" dataDirectory="${activemq.data}">

修改二、

需要增加集群相关的信息,增加zookeeper的信息等,如下:

可以删除源文件中的 persistenceAdapter 标签,然后直接复制下来内容后进行端口相关的修改。

下面的这段配置,剩下的两台都需要配置,唯一不同的是需要把hostname 中的值对应到每台机器的名称修改。

        <persistenceAdapter>
            <!--<kahaDB directory="${activemq.data}/kahadb"/> -->
            <replicatedLevelDB
                directory="${activemq.data}/leveldb"
                replicas="3"
                bind="tcp://0.0.0.0:62222"
                zkAddress="172.16.1.11:2181,172.16.1.12:2181,172.16.1.13:2181"
                hostname="node01"
                sync="local_disk"
                zkPath="/activemq/leveldb-stores"
            />
        </persistenceAdapter>

启动测试

按照上面的配置修改好三台服务器后启动测试

/opt/activemq/bin/activemq start

# INFO: Loading '/opt/activemq-5.16.6//bin/env'
# INFO: Using java '/opt/jdk/bin/java'
# INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
# INFO: pidfile created : '/opt/activemq-5.16.6//data/activemq.pid' (pid '12405')

注意:这里需要注意,要三个服务全都启动后,集群才是正常,并且只有一台机器提供服务,剩下两台并不监听端口

查看:

node01:

[root@node01 conf]# netstat -lntup | egrep '61616|8161|62222'
tcp6       0      0 :::8161                 :::*                    LISTEN      12405/java          
tcp6       0      0 :::62222                :::*                    LISTEN      12405/java          
tcp6       0      0 :::61616                :::*                    LISTEN      12405/java

node02:

[root@node02 data]# netstat -lntup | egrep '61616|8161|62222'
[root@node02 data]#

node03:

[root@node03 data]# netstat -lntup | egrep '61616|8161|62222'
[root@node03 data]#

猜你喜欢

转载自www.cnblogs.com/winstom/p/12390077.html