- 三主三从
- 异步同步消息
- 异步刷盘
共三台机器,每台上分别布有一台主从。
如下:
机器1 | broker-a | broker-b-s |
机器2 | broker-b | broker-c-s |
机器3 | broker-c | broker-a-s |
上传压缩包至 /tmp,解压到/usr/local
unzip 压缩包名(rocketXXXX) -d /usr/local
重命名文件夹:
cd /usr/local
mv rocketXXXX rocketmq
创建目录:
#/data目录的空间至少为1T+
#机器1
mkdir -pv {/rocketmqdata/store-a,/rocketmqdata/store-b-s,/rocketmqdata/store-a/commitlog,/rocketmqdata/store-b-s/commitlog}
#机器2
mkdir -pv {/rocketmqdata/store-b,/rocketmqdata/store-c-s,/rocketmqdata/store-b/commitlog,/rocketmqdata/store-c-s/commitlog}
#机器3
mkdir -pv {/rocketmqdata/store-c,/rocketmqdata/store-a-s,/rocketmqdata/store-c/commitlog,/rocketmqdata/store-a-s/commitlog}
设置环境变量:
vim etc/profile
export ROCKETMQ_HOME=/usr/local/rocketmq
export PATH=$PATH:$ROCKETMQ_HOME/bin
//使配置生效source /etc/profile
安装包解压后2m-2s-async目录下默认只有broker-a,broker-b相关的四个配置文件,没有broker-c的配置文件。只需要将broker-a或者broker-b任意一份文件复制重命名即可。
节点一:修改broker-a.properties、broker-b-s.properties 节点二:修改broker-b.properties、broker-c-s.properties 节点三:修改broker-c.properties、broker-a-s.properties
主broker:
namesrvAddr=xxxx:9876
brokerClusterName=testCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
listenPort=10911
storePathRootDir=/rocketmqdata/store-a
storePathCommitLog=/rocketmqdata/store-a/commitlog
brokerIP1=xxxx
#主从同步地址
brokerIP2=xxxx
#是否开启ACL验证
aclEnable = true
从broker::
namesrvAddr=xxxx:9876
brokerClusterName=testCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=10921
storePathRootDir=/rocketmqdata/store-b-s
storePathCommitLog=/rocketmqdata/store-b-s/commitlog
brokerIP1=xxxx
#主从同步地址
brokerIP2=xxxx
#是否开启ACL验证
aclEnable = true
注意主从的不同之处:
在三台机器上启动nameserver:
nohup sh /usr/local/rocketmq/bin/mqnamesrv 2>&1 &
得到无单点的nameserver服务。端口号为 IP:9876
命令如
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties 2>&1 &
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties 2>&1 &
## 设置名称服务地址
export NAMESRV_ADDR='xxxx:9876'
## 投递消息
sh /usr/local/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
## 任意一台机器消费消息
sh /usr/local/rocketmq/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
sh /usr/local/rocketmq/bin/mqshutdown broker
sh /usr/local/rocketmq/bin/mqshutdown namesrv
参考链接:https://zhuanlan.zhihu.com/p/61141452
1 下载源码 Release rocketmq-console 1.0.0 version*的ZIP包,解压,并cd到源码的根路径
2 执行命令前本地需要安装 Maven 并设置环境变量 `M2_HOME` 指向 Maven 安装根目录,并将 `%M2_HOME%\bin` 添加到环境变量 Path 中。本地执行MVN打包
mvn clean package -D maven.test.skip=true
得到为rocketmq-console-ng-1.0.0.jar包。
3 上传至rocketmq/admin
执行
nohup java -jar /usr/local/rocketmq/admin/rocketmq-console-ng-1.0.0.jar --server.port=12581 --rocketmq.config.namesrvAddr=xxx:9876 &
--server.port为运行的这个web应用的端口,如果不设置的话默认为8080;--rocketmq.config.namesrvAddr为RocketMQ命名服务地址,如果不设置的话默认为“”。
4 访问界面
curl命令:curl 地址:端口
关闭broker与nameserver,修改plain_acl.yml,再次启动。
1 connect to null failed
## 设置名称服务地址
export NAMESRV_ADDR=' xxx:9876'
2 缺少JDK环境
yum -y list java*
yum install -y java-1.8.0-openjdk.x86_64
java -version
3 ACL配置文件
用户名不能太短
4 service not available now, maybe disk full, CL: 0.93 CQ: 0.93 INDEX: 0.93, m
磁盘需要扩容
5 Brockerbusy
[TIMEOUT_CLEAN_QUEUE]broker busy, start flow control for a while, period in queue: 206ms, size of queue: 5
疑似硬盘瓶颈,待解决