rocketmq集群部署DLedger Controller

2023-10-23 12:36

本文主要是介绍rocketmq集群部署DLedger Controller,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • rockermq集群部署DLedger Controller
  • 到官网下载rockermq
  • 集群模式:3切片主从
    • 建目录
    • 配置Nameserver
      • 先修改内存
    • 启动NameServer
    • 停止NameServer
    • 配置Broker
    • 启动Broker
    • 启动管制台直接docker 启动即可,修改 -e 后面 nameserver 参数即可
    • 端口列表
      • 导入

rockermq集群部署DLedger Controller

准备3台机器,IP分别是192.168.4.87,192.168.4.74,192.168.4.124

到官网下载rockermq

rocketmq-all-5.1.4-bin-release.zip
分别解压RockerMq到3台机器的/data/rockermq目录下

集群模式:3切片主从

先停止防火墙
用3组BrokerName
主从自动选择

IPBrokerName目录说明
192.168.4.87RaftNode00rocketmq-a-sA主
192.168.4.87RaftNode22rocketmq-c-sC从
192.168.4.74RaftNode11rocketmq-b-sB主
192.168.4.74RaftNode00rocketmq-a-sA从
192.168.4.124RaftNode22rocketmq-c-mC主
192.168.4.124RaftNode11rocketmq-b-cB从

建目录

cd /data/rockermq/#192.168.4.87
mkdir -p rocketmq-nameserver/DledgerController
rm   -rf rocketmq-a-m/store/
mkdir -p rocketmq-a-m/store/commitlog
mkdir -p rocketmq-a-m/store/consumequeue
rm 	 -rf rocketmq-c-s/store/
mkdir -p rocketmq-c-s/store/commitlog
mkdir -p rocketmq-c-s/store/consumequeue#192.168.4.74
mkdir -p rocketmq-nameserver/DledgerController
rm   -rf rocketmq-b-m/store/
mkdir -p rocketmq-b-m/store/commitlog
mkdir -p rocketmq-b-m/store/consumequeue
rm   -rf rocketmq-a-s/store/
mkdir -p rocketmq-a-s/store/commitlog
mkdir -p rocketmq-a-s/store/consumequeue#192.168.4.124
mkdir -p rocketmq-nameserver/DledgerController
rm   -rf rocketmq-c-m/store/
mkdir -p rocketmq-c-m/store/commitlog
mkdir -p rocketmq-c-m/store/consumequeue
rm   -rf rocketmq-b-s/store/
mkdir -p rocketmq-b-s/store/commitlog
mkdir -p rocketmq-b-s/store/consumequeue

配置Nameserver

每台配置的controllerDLegerSelfId 分别是n0,n1,n2

87  vim rocketmq-nameserver/conf/nameserver.conf 
#Namesrv config
listenPort = 9876
# Nameserver 中是否开启 controller,默认 false
enableControllerInNamesrv = true#controller config
# DLedger Raft Group 的名字,同一个 DLedger Raft Group 保持一致即可。
controllerDLegerGroup = group1
# DLedger Group 内各节点的端口信息,同一个 Group 内的各个节点配置必须要保证一致。
controllerDLegerPeers = n0-192.168.4.87:9873;n1-192.168.4.74:9873;n2-192.168.4.124:9873
# 节点 id,必须属于 controllerDLegerPeers 中的一个;同 Group 内各个节点要唯一。
controllerDLegerSelfId = n0
# controller 日志存储位置。controller 是有状态的,controller 重启或宕机需要依靠日志来恢复数据,该目录非常重要,不可以轻易删除。
controllerStorePath = /data/rocketmq/rocketmq-nameserver/DledgerController
enableElectUncleanMaster = false
notifyBrokerRoleChanged = true
74  vim rocketmq-nameserver/conf/nameserver.conf 
...
controllerDLegerSelfId = n1
...
124  vim rocketmq-nameserver/conf/nameserver.conf 
...
controllerDLegerSelfId = n2
...

先修改内存

 vim bin/runserver.sh 
-server -Xms256m -Xmx1g -Xmn256mvim bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx1g"

启动NameServer

 vim start_nameserver.sh 

#!/bin/sh#cd `dirname $0`
#获取软连接的真实路径
DIR=`S=\`readlink "$0"\`; [ -z "$S" ] && S=$0; dirname $S`
cd "$DIR"echo `pwd`today=`date +"%Y%m%d"`
datetime=`date +"%Y%m%d%H%M%S"`#nohup sh bin/mqnamesrv > nohubNameserv &
nohup sh bin/mqnamesrv -c ./rocketmq-nameserver/conf/nameserver.conf > nohubNameserv.log &
	chmod +x ./start_nameserver.sh./start_nameserver.sh 

日志如下:

(base) [root@server87 rocketmq]# tail -f nohubNameserv.log 
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
load config properties file OK, ./rocketmq-nameserver/conf/nameserver.conf
The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876
The ControllerManager boot success. serializeType=JSON

NameServer和Controller已经启动成功

停止NameServer

vim ./stop_nameserver.sh 

#!/bin/sh#cd `dirname $0`
#获取软连接的真实路径
DIR=`S=\`readlink "$0"\`; [ -z "$S" ] && S=$0; dirname $S`
cd "$DIR"echo `pwd`today=`date +"%Y%m%d"`
datetime=`date +"%Y%m%d%H%M%S"`sh bin/mqshutdown namesrvsh bin/mqshutdown controller

配置Broker

注意配置:
#allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。在87	
vim rocketmq-a-m/conf/broker.conf
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode00
#control可不用id和role
brokerId = 0
brokerRole = SLAVE## 监听的端口
listenPort=30911
## 你设置的NameServer地址和端口
namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
#消息数据存放的根目录
storePathRootDir=/data/rocketmq/rocketmq-a-m/store
#commitlog保存目录
storePathCommitLog=/data/rocketmq/rocketmq-a-m/store/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /data/rocketmq/rocketmq-a-m/store/consumequeue
#enableDLegerCommitLog=true
dLegerGroup=RaftNode00
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871
#dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871;a2-192.168.4.124:9871
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=a0
sendMessageThreadPoolNums=16
## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
#brokerIP1=192.168.161.11############################################ enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
enableControllerMode = true
# controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
# syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
syncBrokerMetadataPeriod = 5000
# checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
# syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
# haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
# storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
storePathEpochFile = /data/rocketmq/rocketmq-a-m/store
#allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
allAckInSyncStateSet=true
#syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
#asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
#inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
#minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
在87	
vim rocketmq-c-s/conf/broker.conf
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode22
## 监听的端口
listenPort=30915
## 你设置的NameServer地址和端口
namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
#消息数据存放的根目录
storePathRootDir=/data/rocketmq/rocketmq-c-s/store
#commitlog保存目录
storePathCommitLog=/data/rocketmq/rocketmq-c-s/store/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /data/rocketmq/rocketmq-a-m/store/consumequeue
#enableDLegerCommitLog=true
dLegerGroup=RaftNode22
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
dLegerPeers=c0-192.168.4.87:9875;c2-192.168.4.124:9875
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=c0
sendMessageThreadPoolNums=16
## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
#brokerIP1=192.168.161.11############################################ enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
enableControllerMode = true
# controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
# syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
syncBrokerMetadataPeriod = 5000
# checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
# syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
# haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
# storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
storePathEpochFile = /data/rocketmq/rocketmq-c-s/store
#allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
allAckInSyncStateSet=true
#syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
#asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
#inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
#minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
在74
vim rocketmq-b-m/conf/broker.conf
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode11
brokerId = 1
brokerRole = SLAVE
## 监听的端口
listenPort=30911
## 你设置的NameServer地址和端口
namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
#消息数据存放的根目录
storePathRootDir=/data/rocketmq/rocketmq-b-m/store
#commitlog保存目录
storePathCommitLog=/data/rocketmq/rocketmq-b-m/store/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /data/rocketmq/rocketmq-b-m/store/consumequeue
#enableDLegerCommitLog=true
dLegerGroup=RaftNode11
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
dLegerPeers=b1-192.168.4.74:9874;b2-192.168.4.124:9874
#dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871;a2-192.168.4.124:9871
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=b1
sendMessageThreadPoolNums=16
## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
#brokerIP1=192.168.161.11############################################ enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
enableControllerMode = true
# controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
# syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
syncBrokerMetadataPeriod = 5000
# checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
# syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
# haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
# storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
storePathEpochFile = /data/rocketmq/rocketmq-b-m/store
#allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
allAckInSyncStateSet=true
#syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
#asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
#inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
#minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
在74
vim rocketmq-a-s/conf/broker.conf
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode00
## 监听的端口
listenPort=30915
## 你设置的NameServer地址和端口
namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
#消息数据存放的根目录
storePathRootDir=/data/rocketmq/rocketmq-a-s/store
#commitlog保存目录
storePathCommitLog=/data/rocketmq/rocketmq-a-s/store/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /data/rocketmq/rocketmq-b-m/store/consumequeue
#enableDLegerCommitLog=true
dLegerGroup=RaftNode00
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=a1
sendMessageThreadPoolNums=16
## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
#brokerIP1=192.168.161.11############################################ enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
enableControllerMode = true
# controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
# syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
syncBrokerMetadataPeriod = 5000
# checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
# syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
# haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
# storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
storePathEpochFile = /data/rocketmq/rocketmq-a-s/store
#allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
allAckInSyncStateSet=true
#syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
#asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
#inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
#minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。
在124
vim rocketmq-c-m/conf/broker.conf
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode22
## 监听的端口
listenPort=30911
## 你设置的NameServer地址和端口
namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
#消息数据存放的根目录
storePathRootDir=/data/rocketmq/rocketmq-c-m/store
#commitlog保存目录
storePathCommitLog=/data/rocketmq/rocketmq-c-m/store/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /data/rocketmq/rocketmq-a-m/store/consumequeue
#enableDLegerCommitLog=true
dLegerGroup=RaftNode22
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
dLegerPeers=c0-192.168.4.87:9875;c2-192.168.4.124:9875
#dLegerPeers=a0-192.168.4.87:9871;a1-192.168.4.74:9871;a2-192.168.4.124:9871
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=c2
sendMessageThreadPoolNums=16
## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
#brokerIP1=192.168.161.11############################################ enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
enableControllerMode = true
# controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
# syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
syncBrokerMetadataPeriod = 5000
# checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
# syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
# haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
# storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
storePathEpochFile = /data/rocketmq/rocketmq-c-m/store
#allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
allAckInSyncStateSet=true
在124
vim rocketmq-b-s/conf/broker.conf
brokerName=RaftNode11
## 监听的端口
listenPort=30915
## 你设置的NameServer地址和端口
namesrvAddr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876
#消息数据存放的根目录
storePathRootDir=/data/rocketmq/rocketmq-b-s/store
#commitlog保存目录
storePathCommitLog=/data/rocketmq/rocketmq-b-s/store/commitlog
#消费队列存储路径存储路径
#storePathConsumerQueue = /data/rocketmq/rocketmq-a-m/store/consumequeue
#enableDLegerCommitLog=true
dLegerGroup=RaftNode11
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:40911;n1-服务器2的IP:40912;n2-服务器3的IP:40913
dLegerPeers=b1-192.168.4.74:9874;b2-192.168.4.124:9874
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=b2
sendMessageThreadPoolNums=16
## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
#brokerIP1=192.168.161.11############################################ enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。
enableControllerMode = true
# controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879
controllerAddr = 192.168.4.87:9873;192.168.4.74:9873;192.168.4.124:9873
# syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。
syncBrokerMetadataPeriod = 5000
# checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。
# syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。
# haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。
# storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。
storePathEpochFile = /data/rocketmq/rocketmq-b-s/store
#allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。
allAckInSyncStateSet=true
#syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。
#asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。
#inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。
#minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。

启动Broker

在87vim start_broker.sh
#!/bin/sh#cd `dirname $0`
#获取软连接的真实路径
DIR=`S=\`readlink "$0"\`; [ -z "$S" ] && S=$0; dirname $S`
cd "$DIR"echo `pwd`today=`date +"%Y%m%d"`
datetime=`date +"%Y%m%d%H%M%S"`#nohup sh bin/mqnamesrv > nohubNameserv &
nohup sh bin/mqbroker -c ./rocketmq-a-m/conf/broker.conf > nohubBroker-a-m.log &
nohup sh bin/mqbroker -c ./rocketmq-c-s/conf/broker.conf > nohubBroker-c-s.log &
	chmod +x ./vim start_broker.sh./vim start_broker.sh

日志:

(base) [root@server87 rocketmq]# tail -f nohubBroker-*.log 
==> nohubBroker-a-m.log <==
10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [RocketmqBrokerMetricsSiftingAppender] to Logger[io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter]
10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting level of logger [io.opentelemetry.exporter.logging.LoggingMetricExporter] to INFO
10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting additivity of logger [io.opentelemetry.exporter.logging.LoggingMetricExporter] to false
10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [RocketmqBrokerMetricsSiftingAppender] to Logger[io.opentelemetry.exporter.logging.LoggingMetricExporter]
10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to INFO
10:24:43,072 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [DefaultSiftingAppender] to Logger[ROOT]
10:24:43,073 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.DefaultProcessor@7a9273a8 - End of configuration.
10:24:43,074 |-INFO in org.apache.rocketmq.common.logging.JoranConfiguratorExt@26a7b76d - Registering current configuration as safe fallback pointThe broker[RaftNode00, 192.168.4.87:30911] boot success. serializeType=JSON and name server is 192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876==> nohubBroker-c-s.log <==
10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [RocketmqBrokerMetricsSiftingAppender] to Logger[io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter]
10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting level of logger [io.opentelemetry.exporter.logging.LoggingMetricExporter] to INFO
10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.LoggerModelHandler - Setting additivity of logger [io.opentelemetry.exporter.logging.LoggingMetricExporter] to false
10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [RocketmqBrokerMetricsSiftingAppender] to Logger[io.opentelemetry.exporter.logging.LoggingMetricExporter]
10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to INFO
10:24:43,089 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [DefaultSiftingAppender] to Logger[ROOT]
10:24:43,090 |-INFO in org.apache.rocketmq.logging.ch.qos.logback.core.model.processor.DefaultProcessor@7a9273a8 - End of configuration.
10:24:43,090 |-INFO in org.apache.rocketmq.common.logging.JoranConfiguratorExt@26a7b76d - Registering current configuration as safe fallback pointThe broker[RaftNode22, 192.168.4.87:30915] boot success. serializeType=JSON and name server is 192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876

启动管制台直接docker 启动即可,修改 -e 后面 nameserver 参数即可


docker run -d \
--name rocketmq-dashboard \
--restart always \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.4.87:9876;192.168.4.74:9876;192.168.4.124:9876" \
-p 8088:8080 \
-t apacherocketmq/rocketmq-dashboard:latest

http://192.168.4.87:8088/#/cluster
在这里插入图片描述

端口列表

30909
30911
30912
30913
30915
309169876
9871
9873
9874
9875
9877

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。

这篇关于rocketmq集群部署DLedger Controller的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/267865

相关文章

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus