文章目录
前言
RocketMQ集群方式有好几种
官网地址 https://rocketmq.apache.org/zh/docs/4.x/deployment/01deploy
- 2m-2s-async:2主2从异步刷盘(吞吐量较大,但是消息可能丢失
- 2m-2s-sync:2主2从同步刷盘(吞吐量会下降,但是消息更安全)
- 2m-noslave :2主无从(单点故障),然后还可以直接配置broker.conf,进行单点环境配置
- dledger:用来实现主从切换的。集群中的节点会基于Raft协议随机选举出一个leader,
其他的就都是follower。通常正式环境都会采用这种方式来搭建集群。
dledger搭建参考文档 https://rocketmq.apache.org/zh/docs/4.x/bestPractice/02dledger
搭建过程中踩过的坑也也会记录下来
一、单台集群部署
## 启动
nohup sh bin/dledger/fast-try.sh start
## 关闭
nohup sh bin/dledger/fast-try.sh stop
先启动 fast-try.sh start
启动时发现权限不足
nohup: 无法运行命令"bin/mqbroker": 权限不够
查看启动脚本
cat bin/dledger/fast-try.sh
那我们就修改下nohup 后面加上sh
修改后如下
function startNameserver() {
export JAVA_OPT_EXT=" -Xms512m -Xmx512m "
nohup sh bin/mqnamesrv &
}
function startBroker() {
export JAVA_OPT_EXT=" -Xms1g -Xmx1g "
conf_name=$1
nohup sh bin/mqbroker -c $conf_name &
}
再次启动发现可以了
执行命令 查看集群情况 BID =0的是主节点
sh bin/mqadmin clusterList -n 127.0.0.1:9876
再看看dashboarb
启动之前请先开放6个端口 如果还有端口访问不了的请自行开放出来
firewall-cmd --zone=public --add-port=30909/tcp --permanent
firewall-cmd --zone=public --add-port=30911/tcp --permanent
firewall-cmd --zone=public --add-port=30919/tcp --permanent
firewall-cmd --zone=public --add-port=30921/tcp --permanent
firewall-cmd --zone=public --add-port=30929/tcp --permanent
firewall-cmd --zone=public --add-port=30931/tcp --permanent
### 如果不想一次次开放下面命令也可以
firewall-cmd --zone=public --add-port=30900-30930/tcp --permanent
## 重启防火墙
systemctl reload firewalld
## 查看开放的端口
firewall-cmd --list-ports
## 其它命令
### 关闭端口
firewall-cmd --zone=public --remove-port=30909/tcp --permanent
启动生产者和消费者再看 master消费一个
停止master
lsof -i:30911
## 找到pid杀死 我的是118276
kill 118276
我们再启动 被杀死的broker
nohup sh bin/mqbroker -c conf/dledger/broker-n0.conf &
发现30911作为slave回来了
二、多台集群部署
先准备三台机器
192.168.141.101
192.168.141.102
192.168.141.103
1.修改配置
192.168.141.101修改如下
profile不修改也可以
vim /etc/profile
## 加入192.168.141.102 192.168.141.103 同理102 103也改成这样
export NAMESRV_ADDR=192.168.141.101:9876
source /etc/profile
修改 broker.conf 后面我们启动哪个就修改哪个 我是把 broker-n0.conf复制一份到broker.conf,也可以直接修改broker-n0.conf,启动时启动自己配置的conf文件就可以
cd /bsoft/mdt/rocketmq/rocketmq-4.8.0/rocketmq-4.8.0/conf/dledger
cp broker-n0.conf broker.conf
vim broker.conf
## 修改的配置如下改动地方namesrvAddr dLegerPeers dLegerSelfId
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=192.168.141.101:9876;192.168.141.102:9876;192.168.141.103:9876
storePathRootDir=/tmp/rmqstore/node00
storePathCommitLog=/tmp/rmqstore/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-192.168.141.101:40911;n1-192.168.141.102:40911;n2-192.168.141.103:40911
## must be unique
dLegerSelfId=n0
sendMessageThreadPool