ActiveMQ高可用集群部署方案「建议收藏」

ActiveMQ高可用集群部署方案「建议收藏」一、环境准备使用vm虚拟机安装两台centos7虚拟机,IP分别为192.168.30.

大家好,欢迎来到IT知识分享网。

一、环境准备

使用vm虚拟机安装两台centos7虚拟机,IP分别为192.168.30.139和140
注意防火墙问题,实验环境可选择关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

IT知识分享网

二、软件准备

1、安装jdk8
查询yum库中java版本

IT知识分享网yum list java*

需要安装java-1.8.0-openjdk.x86_64java-1.8.0-openjdk-devel.x86_64

yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64

安装完成,查看java版本
java -version

IT知识分享网openjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

2、安装ActiveMQ
当前官网ActiveMQ版本有两个,
ActiveMQ 5.17.05.16.4,其支持的功能和环境不同,我这里使用5.16.4

下载并上传到两台服务器
https://activemq.apache.org/components/classic/download/

解压缩
tar xvzf apache-activemq-5.16.4-bin.tar.gz

3、单机测试ActiveMQ
编辑
./apache-activemq-5.16.4/conf/jetty.xml

<property name="host" value="127.0.0.1"/>

改为

<property name="host" value="0.0.0.0"/>

启动服务
./apache-activemq-5.16.4/bin/activemq start

登录web平台,账号密码admin
http://192.168.30.140:8161/

ActiveMQ高可用集群部署方案「建议收藏」

三、部署Master-Slave模式

使用Shared Filesystem Master-Slave KahaDB文件锁方式

ActiveMQ高可用集群部署方案「建议收藏」

规划如下,仅以openwire举例,其他服务如MQTT其实道理完全相同

节点

IP

openwire

admin端口

mq1

192.168.30.139

61616

8161

mq2

192.168.30.139

61617

8162

mq3

192.168.30.139

61618

8163

mq4

192.168.30.140

61619

8164

mq5

192.168.30.140

61620

8165

mq6

192.168.30.140

61621

8166

注意:Master-Slave模式是在一台机器上运行三个程序提供提供3选1的可用性,因此只在192.168.30.159上配置

/usr/local目录下创建mqcluster目录,然后在该目录中创建mq1,mq2,mq3的文件夹

mkdir /usr/local/mqcluster/mq1 -p
mkdir /usr/local/mqcluster/mq2 -p
mkdir /usr/local/mqcluster/mq3 -p

将ActiveMQ安装包放入上面三个目录中

cp -r ./apache-activemq-5.16.4/* /usr/local/mqcluster/mq1
cp -r ./apache-activemq-5.16.4/* /usr/local/mqcluster/mq2
cp -r ./apache-activemq-5.16.4/* /usr/local/mqcluster/mq3

配置brokername

vi /usr/local/mqcluster/mq1/conf/activemq.xml
vi /usr/local/mqcluster/mq2/conf/activemq.xml
vi /usr/local/mqcluster/mq3/conf/activemq.xml

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

修改为

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

持久化配置
采用KahaDB文件锁方式,让三个服务共用一个KahaDB文件,当主服务崩溃后,备用服务会自动运行。

vi /usr/local/mqcluster/mq1/conf/activemq.xml
vi /usr/local/mqcluster/mq2/conf/activemq.xml
vi /usr/local/mqcluster/mq3/conf/activemq.xml

<kahaDB directory="${activemq.data}/kahadb"/>

修改为

<kahaDB directory="/usr/local/mqcluster/mq1/data/kahadb"/>

修改openwire端口

vi /usr/local/mqcluster/mq1/conf/activemq.xml
vi /usr/local/mqcluster/mq2/conf/activemq.xml
vi /usr/local/mqcluster/mq3/conf/activemq.xml

<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

分别改为

<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

<transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

<transportConnector name="openwire" uri="tcp://0.0.0.0:61618?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>

注意:该行下面几列如mqttws等原理相同,如果使用需要保证端口不重复,如果不使用请删除!

修改Jetty端口,即web服务端口

vi /usr/local/mqcluster/mq1/conf/jetty.xml
vi /usr/local/mqcluster/mq2/conf/jetty.xml
vi /usr/local/mqcluster/mq3/conf/jetty.xml

 <property name="host" value="127.0.0.1"/>
        <property name="port" value="8161"/>

分别改为

 <property name="host" value="0.0.0.0"/>
        <property name="port" value="8161"/>

 <property name="host" value="0.0.0.0"/>
        <property name="port" value="8162"/>

 <property name="host" value="0.0.0.0"/>
        <property name="port" value="8163"/>

启动集群

/usr/local/mqcluster/mq1/bin/activemq start
/usr/local/mqcluster/mq2/bin/activemq start
/usr/local/mqcluster/mq3/bin/activemq start

测试集群是否生效
第一种方式:
通过web端口,同时只有一个端口能够访问,如mq1能够访问,通过
/usr/local/mqcluster/mq1/bin/activemq stop后,mq2mq3中会选出一个继续提供端口访问。

http://192.168.30.139:8161/
http://192.168.30.139:8162/
http://192.168.30.139:8163/

第二种方式:
查看日志,

cat /usr/local/mqcluster/mq1/data/activemq.log
cat /usr/local/mqcluster/mq2/data/activemq.log
cat /usr/local/mqcluster/mq3/data/activemq.log

此时主服务器的日志为

2022-04-09 08:03:40,021 | INFO  | ActiveMQ Jolokia REST API available at http://0.0.0.0:8161/api/jolokia/ | org.apache.activemq.web.WebConsoleStarter | main

备用服务器日志为

2022-04-09 08:06:01,001 | INFO  | Database /usr/local/mqcluster/mq1/data/kahadb/lock is locked by another server. This broker is now in slave mode waiting a lock to be acquired | org.apache.activemq.store.SharedFileLocker | main

四、配置Broker-Cluster集群

准备工作:
将第二台服务器按
Master-Slave模式搭建完,注意搭建的是192.168.30.140上的mq4mq5mq6

配置Broker-Cluster集群,使两组Master-Slave能够负载均衡

ActiveMQ高可用集群部署方案「建议收藏」

只修改192.168.30.139brokerA

vi /usr/local/mqcluster/mq1/conf/activemq.xml
vi /usr/local/mqcluster/mq2/conf/activemq.xml
vi /usr/local/mqcluster/mq3/conf/activemq.xml

persistenceAdapter标签前配置

<networkConnectors>
    <networkConnector name="brokerB" uri="static:(tcp://192.168.30.140:61619,tcp://192.168.30.140:61620,tcp://192.168.30.140:61621)" duplex="true" />
</networkConnectors>

重新启动所有节点即完成配置,配置开机启动和进程守护等内容本文不再赘述。

至此,ActiveMQ高可用+负载均衡集群搭建完毕。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/7055.html

(0)
上一篇 2023-01-03 09:53
下一篇 2023-01-03 09:53

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信