快速构建RocketMQ 集群

释放双眼,带上耳机,听听看~!
🤖 由 ChatGPT 生成的文章摘要

配置jdk环境

wget https://d.frps.cn/file/tools/jdk/jdk-8u231-linux-x64.tar.gz
mkdir /usr/java
tar zxvf jdk-8u231-linux-x64.tar.gz -C /usr/java
ln -s /usr/java/jdk1.8.0_231/ /usr/java/jdk
cat > /etc/profile.d/java_home.sh << EOF
# set java environment  
export JAVA_HOME=/usr/java/jdk
export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/jre/lib/rt.jar
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
source /etc/profile

安装Rocketmq

IP地址 Port 部署 主从配置
192.168.31.70 9876 namesrv
192.168.31.71 9876 namesrv
192.168.31.70 10911 broker-a master
192.168.31.71 10911 broker-b master
192.168.31.70 11011 broker-a slave
192.168.31.71 11011 broker-b slave

所有节点安装Rocketmq

# 下载二进制包
wget https://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip

# 解压
unzip rocketmq-all-5.2.0-bin-release.zip
mv rocketmq-all-5.2.0-bin-release /opt/
ln -s /opt/rocketmq-all-5.2.0-bin-release /opt/rocketmq

# 在2台主节点创建数据存储目录
mkdir -p /app/rocketmq/master/data/store
mkdir -p /app/rocketmq/master/data/commitlog
mkdir -p /app/rocketmq/master/data/index

# 在2台从节点创建数据存储目录
mkdir -p /app/rocketmq/slave/data/store
mkdir -p /app/rocketmq/slave/data/commitlog
mkdir -p /app/rocketmq/slave/data/index

修改jmx相关log输出目录,默认/home/rocketmq

cd /opt/rocketmq/bin/

mqbroker
mqnamesrv
mqproxy
runbroker.sh
runserver.sh
tools.sh

添加以下内容

#rewrite user home
export JAVA_OPT="${JAVA_OPT} -Duser.home=/opt/rocketmq/logs"

配置nameserver节点

  • 192.168.31.70 nameserver-01节点
cat >  /opt/rocketmq/conf/namesrv.conf <<EOF
bindAddress=0.0.0.0
listenPort = 9876
enableControllerInNamesrv = true
controllerDLegerGroup = group1
controllerDLegerPeers = n0-192.168.31.70:9878;n1-192.168.31.71:9878
controllerDLegerSelfId = n0
controllerStorePath = /app/rocketmq/DledgerController
enableElectUncleanMaster = false
notifyBrokerRoleChanged = true
EOF
  • 192.168.31.71 nameserver-02节点
cat >  /opt/rocketmq/conf/namesrv.conf <<EOF
bindAddress=0.0.0.0
listenPort = 9876
enableControllerInNamesrv = true
controllerDLegerGroup = group1
controllerDLegerPeers = n0-192.168.31.70:9878;n1-192.168.31.71:9878
controllerDLegerSelfId = n1
controllerStorePath = /app/rocketmq/DledgerController
enableElectUncleanMaster = false
notifyBrokerRoleChanged = true
EOF

配置Rocketmq主节点

192.168.31.70节点配置文件

cat >broker-a.properties <<EOF
#所属集群名字
brokerClusterName=rocketmq-cluster
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.31.70:9876;192.168.31.71:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,10911为默认值
listenPort=10911
#Master监听slave请求端口,用于主从同步,默认为服务端口+1
haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/app/rocketmq/master/data/store
#commitLog 存储路径
storePathCommitLog=/app/rocketmq/master/data/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/app/rocketmq/master/data/store/consumequeue
#消息索引存储路径
storePathIndex=/app/rocketmq/master/data/store/index
#checkpoint 文件存储路径
storeCheckpoint=/app/rocketmq/master/data/store/checkpoint
#abort 文件存储路径
abortFile=/app/rocketmq/master/data/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.31.70
EOF

192.168.31.71节点配置文件

cat > broker-b.properties<<EOF
#所属集群名字
brokerClusterName=rocketmq-cluster
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.31.70:9876;192.168.31.71:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,10911为默认值
listenPort=10911
#Master监听slave请求端口,用于主从同步,默认为服务端口+1
haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/app/rocketmq/master/data/store
#commitLog 存储路径
storePathCommitLog=/app/rocketmq/master/data/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/app/rocketmq/master/data/store/consumequeue
#消息索引存储路径
storePathIndex=/app/rocketmq/master/data/store/index
#checkpoint 文件存储路径
storeCheckpoint=/app/rocketmq/master/data/store/checkpoint
#abort 文件存储路径
abortFile=/app/rocketmq/master/data/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.31.71
EOF

配置Rocketmq从节点

192.168.31.70 从节点配置文件


cat >broker-b-s.properties <<EOF
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.31.70:9876;192.168.31.71:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,10911为默认值
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/app/rocketmq/slave/data/store
#commitLog 存储路径
storePathCommitLog=/app/rocketmq/slave/data/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/app/rocketmq/slave/data/store/consumequeue
#消息索引存储路径
storePathIndex=/app/rocketmq/slave/data/store/index
#checkpoint 文件存储路径
storeCheckpoint=/app/rocketmq/slave/data/store/checkpoint
#abort 文件存储路径
abortFile=/app/rocketmq/slave/data/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.31.70
EOF

192.168.31.71 从节点配置文件

cat >broker-a-s.properties<<EOF
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.31.70:9876;192.168.31.71:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,10911为默认值
listenPort=11011
#Master监听slave请求端口,用于主从同步,默认为服务端口+1
#haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/app/rocketmq/slave/data/store
#commitLog 存储路径
storePathCommitLog=/app/rocketmq/slave/data/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/app/rocketmq/slave/data/store/consumequeue
#消息索引存储路径
storePathIndex=/app/rocketmq/slave/data/store/index
#checkpoint 文件存储路径
storeCheckpoint=/app/rocketmq/slave/data/store/checkpoint
#abort 文件存储路径
abortFile=/app/rocketmq/slave/data/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.31.71
EOF

启动Rocketmq namesrv

在70和71节点上启动namesre,2台节点都需要启动

nohup /opt/rocketmq/bin/mqnamesrv -c /opt/rocketmq/conf/namesrv.conf &

检查服务端口

[root@abcdocker rocketmq]# netstat -lntup|grep 9876
tcp6       0      0 :::9876                 :::*                    LISTEN      1378/java

启动Rocketmq broker

192.168.31.70执行以下启动脚本

nohup /opt/rocketmq/bin/mqbroker -n '192.168.31.70:9876;192.168.31.71:9876' -c /opt/rocketmq/conf/broker-a.properties &
nohup /opt/rocketmq/bin/mqbroker -n '192.168.31.70:9876;192.168.31.71:9876' -c /opt/rocketmq/conf/broker-b-s.properties  &

192.168.31.71执行以下启动脚本

nohup /opt/rocketmq/bin/mqbroker -n '192.168.31.70:9876;192.168.31.71:9876' -c /opt/rocketmq/conf/broker-b.properties &
nohup  /opt/rocketmq/bin/mqbroker -n '192.168.31.70:9876;192.168.31.71:9876' -c /opt/rocketmq/conf/broker-a-s.properties & 

Rocketmq Dashboard

dashboard需要手动构建

手动下载jar包

wget https://github.com/apache/rocketmq-dashboard
mvn spring-boot:run

mvn clean package -Dmaven.test.skip=true
java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

快速构建RocketMQ 集群

给TA打赏
共{{data.count}}人
人已打赏
Redis报错锦集

Redis Cluster集群连接错误RedisCommandTimeoutException: Command timed out after 6 second(s)

2023-3-30 17:20:12

Kafka报错锦集

kafka: Kraft mode You cannot use Kraft mode and Zookeeper at the same time. They are mutually exclusive. Disable zookeeper in '.Values.zookeeper.enabled' and delete values from '.Values.externalZookeeper.servers' if you want to use Kraft mode

2023-5-23 13:54:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索