修改配置文件
服务器说明:(生产中应该将 NameServer 部署到其他服务器中,在这为了方便,与Broker部署在一起)
服务器 | ip | 安装的服务 |
---|---|---|
服务器1-主 | 192.168.56.102 | DLedger,Broker,NameServer |
服务器2-从 | 192.168.56.103 | DLedger,Broker,NameServer |
服务器3-从 | 192.168.56.104 | DLedger,Broker,NameServer |
服务器1配置-Master
vim conf/dledger/broker-n0.conf
- 修改Broker配置
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode00
## 监听的端口
listenPort=30911
## 你设置的NameServer地址和端口
namesrvAddr=192.168.56.102:9876;192.168.56.103:9876;192.168.56.104:9876
storePathRootDir=/tmp/rmqstore/node00
storePathCommitLog=/tmp/rmqstore/node00/commitlog
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=n0-192.168.56.102:40911;n1-192.168.56.103:40912;n2-192.168.56.104:40913
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=n0
sendMessageThreadPoolNums=16
## 由于我的虚拟机配置了多个网卡,所以会绑定ip错误,因此我配置了这项,
brokerIP1=192.168.56.102
其他配置与详细说明:Broker 配置
服务器2配置-Slave
vim conf/dledger/broker-n1.conf
- 修改Broker配置
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30921
namesrvAddr=192.168.56.102:9876;192.168.56.103:9876;192.168.56.104:9876
storePathRootDir=/tmp/rmqstore/node01
storePathCommitLog=/tmp/rmqstore/node01/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.56.102:40911;n1-192.168.56.103:40912;n2-192.168.56.104:40913
## must be unique
dLegerSelfId=n1
sendMessageThreadPoolNums=16
brokerIP1=192.168.56.103
服务器3配置-Slave
vim conf/dledger/broker-n2.conf
- 修改Broker配置
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30931
namesrvAddr=192.168.56.102:9876;192.168.56.103:9876;192.168.56.104:9876
storePathRootDir=/tmp/rmqstore/node02
storePathCommitLog=/tmp/rmqstore/node02/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.56.102:40911;n1-192.168.56.103:40912;n2-192.168.56.104:40913
## must be unique
dLegerSelfId=n2
sendMessageThreadPoolNums=16
brokerIP1=192.168.56.104
启动集群
- 在服务器1 执行
nohup sh bin/mqnamesrv > nohubNameserv &
nohup sh bin/mqbroker > nohubBroker -c conf/dledger/broker-n0.conf &
- 在服务器2 执行
nohup sh bin/mqnamesrv > nohubNameserv &
nohup sh bin/mqbroker > nohubBroker -c conf/dledger/broker-n1.conf &
- 在服务器3 执行
nohup sh bin/mqnamesrv > nohubNameserv &
nohup sh bin/mqbroker > nohubBroker -c conf/dledger/broker-n2.conf &
查看集群情况
sh bin/mqadmin clusterList -n 127.0.0.1:9876
[root@localhost rocketmq-4.8.0]# sh bin/mqadmin clusterList -n 127.0.0.1:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
RaftCluster RaftNode00 0 192.168.56.102:30911 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 442545.08 -1.0000
RaftCluster RaftNode00 2 192.168.56.103:30921 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 442545.08 -1.0000
RaftCluster RaftNode00 3 192.168.56.104:30931 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 442545.08 -1.0000
BID 为 0 的是Master
kill 主broker 并再次查看集群情况
sh bin/mqshutdown broker
sh bin/mqadmin clusterList -n 127.0.0.1:9876
[root@localhost rocketmq-4.8.0]# sh bin/mqadmin clusterList -n 127.0.0.1:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
RaftCluster RaftNode00 0 192.168.56.104:30931 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 442545.18 -1.0000
RaftCluster RaftNode00 2 192.168.56.103:30921 V4_8_0 0.00(0,0ms) 0.00(0,0ms) 0 442545.18 -1.0000
复制代码
Master切换成功
备注
Broker 配置
参考文档:
参数名 | 默认值 | 说明 |
---|---|---|
listenPort | 10911 | 接受客户端连接的监听端口 |
namesrvAddr | null | nameServer 地址 |
brokerIP1 | 网卡的 InetAddress | 当前 broker 监听的 IP |
brokerIP2 | 跟 brokerIP1 一样 | 存在主从 broker 时,如果在 broker 主节点上配置了 brokerIP2 属性,broker 从节点会连接主节点配置的 brokerIP2 进行同步 |
brokerName | null | broker 的名称 |
brokerClusterName | DefaultCluster | 本 broker 所属的 Cluser 名称 |
brokerId | 0 | broker id, 0 表示 master, 其他的正整数表示 slave |
storePathCommitLog | $HOME/store/commitlog/ | 存储 commit log 的路径 |
storePathConsumerQueue | $HOME/store/consumequeue/ | 存储 consume queue 的路径 |
mappedFileSizeCommitLog | 1024 * 1024 * 1024(1G) | commit log 的映射文件大小 |
deleteWhen | 04 | 在每天的什么时间删除已经超过文件保留时间的 commit log |
fileReservedTime | 72 | 以小时计算的文件保留时间 |
brokerRole | ASYNC_MASTER | SYNC_MASTER/ASYNC_MASTER/SLAVE |
flushDiskType | ASYNC_FLUSH | SYNC_FLUSH/ASYNC_FLUSH SYNC_FLUSH 模式下的 broker 保证在收到确认生产者之前将消息刷盘。ASYNC_FLUSH 模式下的 broker 则利用刷盘一组消息的模式,可以取得更好的性能。 |
enableDLegerCommitLog | 是否启动 DLedger | true |
dLegerGroup | DLedger Raft Group的名字,建议和 brokerName 保持一致 | RaftNode00 |
dLegerPeers | DLedger Group 内各节点的端口信息,同一个 Group 内的各个节点配置必须要保证一致 | n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913 |
dLegerSelfId | 节点 id, 必须属于 dLegerPeers 中的一个;同 Group 内各个节点要唯一 | n0 |
sendMessageThreadPoolNums | 发送线程个数,建议配置成 Cpu 核数 | 16 |
启动内存不够
修改 bin/runbroker.sh
和 bin/runserver.sh
中的
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g
将参数调低 (可以改为别的值)
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
报连接超时
查看防火墙服务状态 systemctl status firewalld
将防火墙关闭 systemctl stop firewalld
配置 rocketmq-console
下载代码构建项目 maven install https://github.com/apache/rocketmq-externals
运行 rocketmq-console 项目
rocketmq.config.namesrvAddr 配置nameServer地址