本文采用伪集群的搭建方式,使用 3 台 Zookeeper,3 台 ActiveMQ。
使用环境:
- CentOS7.4
- jdk1.8
- zookeeper-3.4.10
- apache-activemq-5.15.0
1.搭建 Zookeeper 集群
https://blog.csdn.net/qq_40925105/article/details/86551122
2.搭建 ActiveMQ 集群
2.1 下载 ActiveMQ,并上传到服务器
下载地址:http://archive.apache.org/dist/activemq/
2.2 解压
tar -zxvf apache-activemq-5.15.0-bin.tar.gz
2.3 复制 activemq
在 /usr/local/ 目录下创建一个 java/activemqCloud 目录。把 zookeeper 解压后的文件夹复制到此目录下三份。分别命名为activemq1、activemq2、activemq3
mkdir -p /usr/local/java/activemqCloud
cp -r apache-activemq-5.15.0 /usr/local/java/activemqCloud/activemq1
cp -r apache-activemq-5.15.0 /usr/local/java/activemqCloud/activemq2
cp -r apache-activemq-5.15.0 /usr/local/java/activemqCloud/activemq3
2.4 修改 ActiveMQ 配置
三个 activemq 都要修改
2.4.1 修改监控端口号
为防止端口冲突,要修改 activemq/conf/jetty.xml 配置文件中监控相关端口号。三个 activemq 要修改成不一样的端口,如:分别为 8161、8162、8163
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/>
<!-- 默认端口号为 8161 -->
<property name="port" value="8161"/>
</bean>
2.4.2 修改 activemq.xml 配置文件
文件位置:activemq/conf/activemq.xml
修改客户端连接的端口号
为防止端口冲突,三个 activemq 要使用不同的端口号,且不能与其它已使用的端口号冲突
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<!-- 可以分别修改为:61616、61617、61618 -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<!-- 可以分别修改为:5672、5673、5674 -->
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<!-- 可以分别修改为:61613、61614、61615-->
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<!-- 可以分别修改为:1883、1884、1885-->
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<!-- 可以分别修改为:61610、61611、61612-->
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/></transportConnectors>
修改持久化策略
三个 activemq 都需要修改,注意端口号不要冲突
<persistenceAdapter>
<!-- 注释掉默认持久化策略 -->
<!-- <kahaDB directory="${activemq.data}/kahadb"/>-->
<!-- 添加 LevelDB 持久化策略 -->
<replicatedLevelDB
directory="${activemq.data}/levelDB"
replicas="2"
bind="tcp://0.0.0.0:8981"
zkAddress="140.21.0.1:2181,140.21.0.1:2182,140.21.0.1:2183"
hostname="140.21.0.1"
zkPath="/activemq/leveldb"/>
</persistenceAdapter>
directory: levelDB 数据文件存储的位置
replicas:计算公式(replicas/2)+1 , 当 replicas 的值为 2 的时候, 最终的结果是2,表示集群中至少有 2 台是启动的
bind: 用来负责 slave 和 master 的数据同步的 ip 和端口
zkAddress: 表示 zookeeper 集群地址
hostname:本机 ip