背景:因公司迁移机房,需要在云主机上部署一套和本地一样的rocketMQ,原本计划直接购买云rocketMQ,云rocketMQ仅支持5.0.0,本地rocketMQ 是3.4.6,公司多个服务都使用本地的3.4.6版本的RocketMQ,所以需要再云上搭建一套简易版RocketMQ集群,并支持外网访问。
准备:两台开通外网的云主机,带宽100M,16G内存,500G硬盘,两台成本1000+
设置主机名,安装jdk,配置免密等等,前期的准备工作。
安装包:rocketmq-3.4.6.tar.gz
下载地址:
因为是只有两台,所以规划是2m-noslave
vi /opt/servers/rocketmq-3.4.6/devenv/conf/2m-noslave/broker-a.properties
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
brokerClusterName=AdpMqCluster
brokerName=broker-a
#0 表示 Master, >0 表示 Slave
brokerId=0
namesrvAddr=hadoop001:9876;hadoop002:9876
#外网ip
brokerIP1=101.200.149.*
#内网ip
brokerIP2=172.17.128.14
deleteWhen=04
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 0点
deleteWhen=00
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/opt/servers/rocketmq/data
#commitLog 存储路径
storePathCommitLog=/opt/servers/rocketmq/data/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/opt/servers/rocketmq/data/consumequeue
#消息索引存储路径
storePathIndex=/opt/servers/rocketmq/data/index
#checkpoint 文件存储路径
storeCheckpoint=/opt/servers/rocketmq/data/checkpoint
#abort 文件存储路径
abortFile=/opt/servers/rocketmq/data/abort
#限制的消息大小
#maxMessageSize=65536
maxMessageSize=5242880
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
pullMessageThreadPoolNums=128
vi /opt/servers/rocketmq-3.4.6/devenv/conf/2m-noslave/broker-b.properties
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
brokerClusterName=AdpMqCluster
brokerName=broker-b
#0 表示 Master, >0 表示 Slave
brokerId=0
namesrvAddr=hadoop001:9876;hadoop002:9876
#外网ip
brokerIP1=123.57.61.*
#内网ip
brokerIP2=172.17.128.15
deleteWhen=04
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 0点
deleteWhen=00
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/opt/servers/rocketmq/data
#commitLog 存储路径
storePathCommitLog=/opt/servers/rocketmq/data/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/opt/servers/rocketmq/data/consumequeue
#消息索引存储路径
storePathIndex=/opt/servers/rocketmq/data/index
#checkpoint 文件存储路径
storeCheckpoint=/opt/servers/rocketmq/data/checkpoint
#abort 文件存储路径
abortFile=/opt/servers/rocketmq/data/abort
#限制的消息大小
#maxMessageSize=65536
maxMessageSize=5242880
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
pullMessageThreadPoolNums=128
同步目录 /opt/servers/rocketmq-3.4.6 到hadoop002;
在hadoop001上启动NamesrvStartup:
nohup sh runserver.sh com.alibaba.rocketmq.namesrv.NamesrvStartup &
在hadoop001上启动BrokerStartup:
nohup sh mqbroker autoCreateTopicEnable=true -c /opt/servers/rocketmq/devenv/conf/2m-noslave/broker-a.properties &
在hadoop002上启动NamesrvStartup:
nohup sh runserver.sh com.alibaba.rocketmq.namesrv.NamesrvStartup &
在hadoop002上启动BrokerStartup:
nohup sh mqbroker autoCreateTopicEnable=true -c /opt/servers/rocketmq/devenv/conf/2m-noslave/broker-b.properties &
在hadoop002上启动console:
vi /opt/servers/rocketmq/rocketmq-externals-master/rocketmq-console/target/runconsole.sh
java -jar rocketmq-console-ng-1.0.0.jar --server.port=12581 --rocketmq.config.namesrvAddr=hadoop001:9876;hadoop002:9876
sh runconsole.sh
使用外网ip:12581 打开console界面
其他找运维人员设置相应的网络访问策略。
安装完成。