我们集群部署采取采用2m-2s(同步双写)方式,每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功.
1、服务器环境
序号 | IP | 角色 | 架构模式 |
---|---|---|---|
1 | 192.168.202.129 | nameserver、brokerserver | Master1、Slave2 |
2 | 192.168.202.130 | nameserver、brokerserver | Master2、Slave1 |
2、Host添加信息
每台机器都需要执行
vi /etc/hosts
配置如下:
# nameserver
192.168.202.129 rocketmq-nameserver1
192.168.202.130 rocketmq-nameserver2
# broker
192.168.202.129 rocketmq-master1
192.168.202.129 rocketmq-slave2
192.168.202.130 rocketmq-master2
192.168.202.130 rocketmq-slave1
配置完成后, 重启网卡
systemctl restart network
3、防火墙配置
每台机器都需要执行,把防火墙关闭一下
# 关闭防火墙
systemctl stop firewalld.service
# 查看防火墙的状态
firewall-cmd --state
# 禁止firewall开机启动
systemctl disable firewalld.service
4、环境变量配置
每台机器都需要执行
vi /etc/profile
增加内容如下:
ROCKETMQ_HOME=/usr/local/rocketmq4.4
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin:$ROCKETMQ_HOME/bin
重新加载
source /etc/profile
5、创建消息存储目录
# master节点存储目录
mkdir -p /usr/local/rocketmq-store/store-m
mkdir -p /usr/local/rocketmq-store/store-m/commitlog
mkdir -p /usr/local/rocketmq-store/store-m/consumequeue
mkdir -p /usr/local/rocketmq-store/store-m/index
# slave节点存储目录
mkdir -p /usr/local/rocketmq-store/store-s
mkdir -p /usr/local/rocketmq-store/store-s/commitlog
mkdir -p /usr/local/rocketmq-store/store-s/consumequeue
mkdir -p /usr/local/rocketmq-store/store-s/index
6、配置文件
1) Master1
所在服务器:192.168.202.129
vi /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-a.properties
配置内容如下:
#所属集群名字
brokerClusterName=mq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=master01
#0表示Master, >0表示Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-store/store-m
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq-store/store-m/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq-store/store-m/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-store/store-m/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-store/store-m/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-store/store-m/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
2) Slave2
所在服务器:192.168.202.129
vi /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-b-s.properties
配置内容如下:
#所属集群名字
brokerClusterName=mq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=slave02
#0表示Master, >0表示Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-store/store-s
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq-store/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq-store/store-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-store/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-store/store-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-store/store-s/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
3) Master2
所在服务器:192.168.202.130
vi /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-b.properties
配置内容如下:
#所属集群名字
brokerClusterName=mq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=master02
#0表示Master, >0表示Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-store/store-m
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq-store/store-m/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq-store/store-m/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-store/store-m/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-store/store-m/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-store/store-m/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
4) Slave1
所在服务器:192.168.202.130
vi /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-a-s.properties
配置内容如下:
#所属集群名字
brokerClusterName=mq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=slave01
#0表示Master, >0表示Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-store/store-s
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq-store/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq-store/store-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-store/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-store/store-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-store/store-s/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
7、修改启动脚本文件
每台服务器都需要修改
1) runbroker.sh
vi /usr/local/rocketmq4.4/bin/runbroker.sh
需要根据内存大小进行适当的对JVM参数进行调整:
#===================================================================================
# JVM Configuration
#===================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
2) runserver.sh
vi /usr/local/rocketmq4.4/bin/runserver.sh
需要根据内存大小进行适当的对JVM参数进行调整:
#==================================================================================
# JVM Configuration
#==================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
8、服务启动
1) 启动NameServer集群
分别在192.168.202.129和192.168.202.130启动NameServer
cd /usr/local/rocketmq4.4/bin/
nohup sh mqnamesrv &
2) 启动Broker集群
在192.168.202.129上启动master01和slave02
master01
cd /usr/local/rocketmq4.4/bin/
nohup sh mqbroker -c /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-a.properties &
slave02
cd /usr/local/rocketmq4.4/bin/
nohup sh mqbroker -c /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-b-s.properties &
在192.168.202.130上启动master02和slave01
master02
cd /usr/local/rocketmq-4.9/bin/
nohup sh mqbroker -c /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-b.properties &
slave01
cd /usr/local/rocketmq-4.9/bin/
nohup sh mqbroker -c /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-a-s.properties &
启动完毕之后,使用JPS命令查看进程:
9、启动管控台
配置文件中的nameServer地址修改如下:
server:
port: 9999
rocketmq:
config:
namesrvAddrs:
- 192.168.202.129:9876
- 192.168.202.130:9876
启动
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
在集群页面中需要看到这几个节点:
程序端代码该怎么还还是怎么写.