ActiveMQ高可用集群部署方案

ActiveMQ高可用集群部署方案

首页枪战射击gz穿越火线单机版手游更新时间:2024-06-18
一、环境准备

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

systemctl stop firewalld systemctl disable firewalld二、软件准备

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

yum list java*

需要安装java-1.8.0-OpenJDK.x86_64和java-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

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.0和 5.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/

三、部署Master-Slave模式

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

规划如下,仅以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"/>

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

修改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后,mq2和mq3中会选出一个继续提供端口访问。

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上的mq4、mq5、mq6

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

只修改192.168.30.139即brokerA组

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高可用 负载均衡集群搭建完毕。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved