本文介绍基于zookeeper的ActiveMq的集群部署

一、部署前准备

服务版本的确定:

百度网盘下载地址:链接:https://pan.baidu.com/s/13Tql2Z9bL2NL7aeJy0sxPA?pwd=57ar 
提取码:57ar

服务版本
jdk1.8.0_162
zookeeper3.4.14
activemq5.15.5

服务器信息

安装包存放路径:/data/install

主机名ip地址
node1192.168.10.100
node2192.168.10.101
node3192.168.10.102

二、部署:

将下载好的安装包上传到服务器的/data/install目录中

创建activemq、zookeeper的安装目录

mkdir /data/{activemq,zookeeper}

解压软件安装包

cd /data/install

#解压jdk

tar -zxvf jdk-8u162-linux-x64.tar.gz

#解压zookeeper

tar -zxvf zookeeper-3.4.14.tar.gz -C /data/zookeeper

#解压activemq

tar -zxvf apache-activemq-5.15.5-bin.tar.gz -C /data/activemq/

1、安装zookeeper

所有服务器都要设置环境变量:

vim /etc/profile       #在文件末尾添加以下内容

#java

export JAVA_HOME=/data/install/jdk1.8.0_162

#zookeeper

export ZOOKEEPER_HOME=/data/zookeeper/zookeeper-3.4.14

export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH 

执行source /etc/profile  使环境变量生效

修改zookeeper配置文件,以node1(192.168.10.100)为例:

cd /data/zookeeper/zookeeper-3.4.14/conf/ && cp zoo_sample.cfg zoo.cfg

vim zoo.cfg 

dataDir=/data/zookeeper/zookeeper-3.4.14/data    #数据存放目录

server.1=192.168.10.100:2888:3888                      #集群中的服务器

server.2=192.168.10.101:2888:3888

server.3=192.168.10.102:2888:3888  

创建数据存放目录

mkdir /data/zookeeper/zookeeper-3.4.14/data

在数据存放目录中创建myid文件,写入 服务器对应的数字标识

cd /data/zookeeper/zookeeper-3.4.14/data/ && echo 1 > myid

完成剩下两台服务器的部署后启动zookeeper的启动

按顺序在服务器上执行zkServer.sh start

等下服务启动完成后执行zkServer.sh status查看zookeeper的状态

node1:

node2:

 

mode3:

至此完成了zookeeper集群的安装

2、安装ActiveMq

修改配置文件,以node1(192.168.10.100)节点为例

cd /data/activemq/apache-activemq-5.15.5/conf

vim activemq.xml

三台服务器中的broker标签中的brokername需要保持一致,加入到同一个集群中

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

由于我们使用的zookeeper和activemq的集群给方式,所以需要注释或者删除<rpersistenceAdapter>标签中的<kahaDB directory='${activemq.data}/kahadb'/>

新增以下配置文件内容到<rpersistenceAdapter>

 <replicatedLevelDB
              directory="${activemq.data}/leveldb"
              replicas="3"   #zookeeper集群的节点数量
              bind="tcp://0.0.0.0:61617"    #通信的ip端口
              zkAddress="192.168.10.100:2181,192.168.10.101:2181,192.168.10.102:2181"   #zookeeper集群的内容
              hostname="node1"    #本机对应的主机名
              zkPath="/activemq/leveldb-stores"/>   #activemq在zookeeper中的目录

 

修改 <transportConnectors>中的ip地址修改为本机对应的ip地址

 <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://192.168.10.100:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://192.168.10.100:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://192.168.10.100:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://192.168.10.100:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://192.168.10.100:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

修改jett.xml的配置

找到name='host'的内容,将value="0.0.0.0" 修改为value="192.168.10.100"  #本机ip地址

 修改剩下两台服务器的配置

在按照顺序启动activemq,在activemq安装目录的bin目录下的actviemq执行程序

启动  ./bin/activemq start

停止  ./bin/activemq stop

重启  ./bin/activemq restart

查看第一台的activemq的日志文件。

 less /data/activemq/apache-activemq-5.15.5/data/activemq.log

 其他两台服务器的日志中存在

可以通过浏览器进行访问测试

 自此ActiveMq集群搭建完成。

3、ActiveMq完成IPv6搭建

我本机的IPv6地址为: "fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3307"

 在完成ActiveMq集群搭建之后,只需要修改ActiveMq的配置文件即可

将activemq.xml配置文件中的 <transportConnectors>中的IPv4地址修改为本机的IPv6地址即可

IPv4地址:192.168.10.100 ; IPv6地址需要由中括号括起:[fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3307]

 <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://[fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3307]:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://[fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3307]:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://[fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3307]:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://[fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3307]:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://[fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3307]:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

在修改jetty.xml配置文件中的host的IP地址,由IPv4修改为本机的IPv6地址(中括号括起)

    <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
             <!-- the default port number for the web console -->
        <property name="host" value="[fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3307]"/>
        <property name="port" value="8161"/>
    </bean>

修改其他服务器,都将对应的IPv4地址修改为本机的IPv6地址(中括号括起)

然后按顺序重启ActiveMq服务

可以通过浏览器进行访问测试

 或者直接在服务器中使用curl命令访问

curl -6 --interface ens33 "http://[fd15:4ba5:5a2b:1008:d0f0:16a8:7c6b:3308]:1817/" -g

                       IPv6网卡名称

ipv6完成

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐