Centos7.2下RocketMQ 集群部署(2m-2s-sync)

一、环境准备与介绍
1、部署架构、
使用的模式是 2m-2s-sync
2、broker机器信息

Master 1:192.168.31.5
Slave 1:192.168.31.6
Master 2:192.168.31.7
Slave 2:192.168.31.8

3、nameserver机器信息

Name Server 1:192.168.31.5
Name Server 2:192.168.31.6
Name Server 3:192.168.31.7

4、安装jdk
安装jdk-8u172-linux-x64.rpm,此处省略。
二、下载与安装配置
1、下载rocketmq并解压

cd /data/server
wget https://archive.apache.org/dist/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
unzip rocketmq-all-4.2.0-bin-release.zip -d /data/server/rocketmq
cd /data/server/rocketmq/

2、配置 rocketmq broker-a(在Master1上操作)

# vim conf/2m-2s-sync/broker-a.properties
#所属集群名称
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样;主从节点一样,也就是这个值区分broker组的;
brokerName=broker-a
#主从标识:0 表示Master, >0 表示Slave;同一个组中区分主从的标识,只能有一个主;
brokerId=0
#当前broker监听的IP
brokerIP1=192.168.31.5
#用于HA主从同步
brokerIP2=192.168.31.5
#nameServer地址,分号分割
namesrvAddr=192.168.31.5:9876;192.168.31.6:9876;192.168.31.7:9876
#在发消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
#删除长期无用文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间(h),默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间使用率
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/server/rocketmq/store
#commitLog存储路径
storePathCommitLog=/data/server/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/data/server/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/server/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckPoint=/data/server/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/server/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#broker角色
#- ASYNC_MASTER    异步复制Master
#- SYNC_MASTER     同步双写Master
#- SLAVE    从节点
brokerRole=SYNC_MASTER
#刷盘策略
#- ASYNC_FLUSH    异步刷盘
#- SYNC_FLUSH     同步刷盘
flushDiskType=ASYNC_FLUSH

3、配置 rocketmq broker-a-s(在Slave1上操作)

# vim conf/2m-2s-sync/broker-a-s.properties
#所属集群名称
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#主从标识:0 表示Master, >0 表示Slave
brokerId=1
#当前broker监听的IP
brokerIP1=192.168.31.6
#用于HA主从同步
brokerIP2=192.168.31.6
#nameServer地址,分号分割
namesrvAddr=192.168.31.5:9876;192.168.31.6:9876;192.168.31.7:9876
#在发消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
#删除长期无用文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间(h),默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/server/rocketmq/store
#commitLog存储路径
storePathCommitLog=/data/server/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/data/server/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/server/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckPoint=/data/server/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/server/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#broker角色
#- ASYNC_MASTER    异步复制Master
#- SYNC_MASTER     同步双写Master
#- SLAVE    从节点
brokerRole=SLAVE
#刷盘策略
#- ASYNC_FLUSH    异步刷盘
#- SYNC_FLUSH     同步刷盘
flushDiskType=ASYNC_FLUSH

4、配置 rocketmq broker-b(在Master2上操作)

# vim conf/2m-2s-sync/broker-b.properties
#所属集群名称
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#主从标识:0 表示Master, >0 表示Slave
brokerId=0
#当前broker监听的IP
brokerIP1=192.168.31.7
#用于HA主从同步
brokerIP2=192.168.31.7
#nameServer地址,分号分割
namesrvAddr=192.168.31.5:9876;192.168.31.6:9876;192.168.31.7:9876
#在发消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
#删除长期无用文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间(h),默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/server/rocketmq/store
#commitLog存储路径
storePathCommitLog=/data/server/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/data/server/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/server/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckPoint=/data/server/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/server/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#broker角色
#- ASYNC_MASTER    异步复制Master
#- SYNC_MASTER     同步双写Master
#- SLAVE    从节点
brokerRole=SYNC_MASTER
#刷盘策略
#- ASYNC_FLUSH    异步刷盘
#- SYNC_FLUSH     同步刷盘
flushDiskType=ASYNC_FLUSH

5、配置 rocketmq broker-b-s(在Slave2上操作)

# vim conf/2m-2s-sync/broker-b-s.properties
#所属集群名称
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#主从标识:0 表示Master, >0 表示Slave
brokerId=1
#当前broker监听的IP
brokerIP1=192.168.31.8
#用于HA主从同步
brokerIP2=192.168.31.8
#nameServer地址,分号分割
namesrvAddr=192.168.31.5:9876;192.168.31.6:9876;192.168.31.7:9876
#在发消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
haListenPort=10912
#删除长期无用文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间(h),默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/server/rocketmq/store
#commitLog存储路径
storePathCommitLog=/data/server/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/data/server/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/server/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckPoint=/data/server/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/server/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#broker角色
#- ASYNC_MASTER    异步复制Master
#- SYNC_MASTER     同步双写Master
#- SLAVE    从节点
brokerRole=SLAVE
#刷盘策略
#- ASYNC_FLUSH    异步刷盘
#- SYNC_FLUSH     同步刷盘
flushDiskType=ASYNC_FLUSH

6、在4台主机上操作,更改默认日志路径和JVM大小
6.1、更改日志路径

mkdir -p /data/server/rocketmq/logs
sed -i 's#${user.home}/logs/rocketmqlogs/#/data/server/rocketmq/logs/#g' conf/logback_broker.xml
sed -i 's#${user.home}/logs/rocketmqlogs/#/data/server/rocketmq/logs/#g' conf/logback_namesrv.xml
sed -i 's#${user.home}/logs/rocketmqlogs/#/data/server/rocketmq/logs/#g' conf/logback_tools.xml

6.2、创建数据存储目录

mkdir -p /data/server/rocketmq/store
mkdir -p /data/server/rocketmq/store/commitlog
mkdir -p /data/server/rocketmq/store/consumequeue
mkdir -p /data/server/rocketmq/store/index

6.3、环境变量配置

vi /etc/profile,追加:
ROCKETMQ_HOME=/data/server/rocketmq
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
source /etc/profile

6.4、测试环境JVM配置

# vim bin/runbroker.sh
// 根据机器实际内存调整,这里演示的机器内存比较小,配置的值比较小
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
# vim bin/runserver.sh
// 根据机器实际内存调整,这里演示的机器内存比较小,配置的值比较小
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
# vim bin/tools.sh
// 根据机器实际内存调整,这里演示的机器内存比较小,配置的值比较小
JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"

6.5生产环境JVM配置

# vim bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
# vim bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
# vim bin/tools.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"

三、启动集群
1、启动Name Server,在3台 Name Server上操作

nohup sh bin/mqnamesrv > /data/server/rocketmq/logs/mqnamesrv.log 2>&1 & 

2、启动Master1,在Master1上操作

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties > /data/server/rocketmq/logs/broker-a.log 2>&1 &

3、启动Slave1,在Slave1上操作

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties > /data/server/rocketmq/logs/broker-a-s.log 2>&1 &

4、启动Master2,在Master2上操作

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties > /data/server/rocketmq/logs/broker-b.log 2>&1 &

5、启动Slave2,在Slave 2上操作

nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties > /data/server/rocketmq/logs/broker-b-s.log 2>&1 &

6、查看 NameServer(9876)和 Broker(10909、10911、10912)启动情况,在4台主机上操作

netstat -nltup|egrep "9876|10909|10911|10912"
或者
sh bin/mqadmin clusterList -n "192.168.31.5:9876;192.168.31.6:9876;192.168.31.7:9876"
或者
jps

7、测试集群生产消费情况

在4台主机上操作
# export NAMESRV_ADDR='192.168.31.5:9876;192.168.31.6:9876;192.168.31.7:9876'
在其中3台机器上操作,启动3个消费者
# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
在其中1台机器上操作,启动一个生产者,在3个消费者机器就可以看到消费信息
# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

四、安装管理面板
1、下载控制台源码
https://codeload.github.com/apache/rocketmq-externals/zip/master
2、widows下解压编译打包

cd rocketmq-externals/rocketmq-console
打包并获取target中rocketmq-console-ng-2.0.0.jar:
mvn clean package -Dmaven.test.skip=true

3、上传至任意服务器(如Slave2),启动服务

cd /data/server
nohup java -jar rocketmq-console-ng-2.0.0.jar --server.port=16080 --rocketmq.config.namesrvAddr='192.168.31.5:9876;192.168.31.6:9876;192.168.31.7:9876' >/data/server/rocketmq/logs/mq-console.log 2>&1 &

访问控制台:http://192.168.31.8:18080/
五、其他知识点
关闭broker命令:sh bin/mqshutdown broker
关闭namesrv命令:sh bin/mqshutdown namesrv
生产者发消息报错:SLAVE_NOT_AVAILABLE,可能是因为brokerIP2没有配置。
启动集群后从节点不能从主同步,可能是因为默认的数据存储目录不可用,建议自定义存储目录。
相关资源下载地址如下:
rocketmq-all-4.2.0-bin-release.zip: https://download.csdn.net/download/xuxile/15873978
rocketmq-console-ng-2.0.0.jar: https://download.csdn.net/download/xuxile/15874074
rocketmq-externals-master.zip: https://download.csdn.net/download/xuxile/15874020


 

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页