RocketMQ集群 - 多节点单副本模式
编辑多组节点(集群)单副本模式
一个集群内全部部署 Master 角色,不部署Slave 副本,例如2个Master或者3个Master,这种模式的优缺点如下:
-
优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;
-
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。
这个标题内容是官方文档抄的啊,就那么一看,我工作项目就有用到这个鬼东西,就学习一下,Emmm...
前情提要
是这样,RocketMQ 分 Broker 和 NameServer ,Broker 往 NameServer 注册自己的地址,然后生产者消费者从 NameServer 拿到 Broker 信息往里推消息。
我准备搭建3个NameServer + 3个Master节点(建议一般规模的集群启动3个NameServer),所以最少需要3台机器,下边是我准备的虚拟机
一个标题 | 两个标题 | 三个标题 |
---|---|---|
broker-a | nameserver-1 | 192.168.31.120 |
broker-b | nameserver-2 | 192.168.31.121 |
broker-c | nameserver-3 | 192.168.31.122 |
-
为了避免网络不通的状况百出(菜鸡还没有掌握它要用的所有端口,9876,10911,11011,还有什么),我直接就给防火墙关了
-
这东西他要用 JVM 来跑,所以3台还要配好 JDK 环境
这里下了个最新5.0的
完了把 rocketmq-dashboard
也下下,RocketMQ 后台控制面板的,后面安装控制面板要用的
- 再然后,我把 RocketMQ 上传到3台机器的 /home 目录下(当然你也可以用别的)
安装 RocketMQ
解压缩
首先解压压缩包,然后我喜欢重命名一下,如果没有 unzip
指令的话,直接 yum 安装一下就得了
unzip ./rocketmq-all-5.0.0-bin-release.zip
mv ./rocketmq-all-5.0.0-bin-release ./rocketmq
cd ./rocketmq
进入 rocketmq 目录,有这些东西
修改启动参数(3台机器都要修改)
测试机内存什么的比较小,改改虚拟机内存小点免得出问题,生产中部署 MQ 的机器内存应该都比较大,也许不用改改
- NameServer 改这个
./bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
- Broker 改这个
./bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
注意3台机子都要改哦~
修改配置
在 ./conf/2m-noslave/
目录下,给出了这种集群模式的配置模板
他这只有ab两个,可是我有3个机器,按照我的习惯我3个机器一个读a一个读b另一个必须要读c,所以我要在第3台机器上拷贝一份来改改,假设
120 --- a
121 --- b
122 --- c
ok,122要拷一份配置文件
cp ./conf/2m-noslave/broker-a.properties ./conf/2m-noslave/broker-c.properties
修改配置如下:
- 120 - a
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.31.120:9876;192.168.31.121:9876;192.168.31.122:9876
brokerIP1=192.168.31.120
- 121 - b
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.31.120:9876;192.168.31.121:9876;192.168.31.122:9876
brokerIP1=192.168.31.121
- 122 - c
brokerClusterName=DefaultCluster
brokerName=broker-c
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.31.120:9876;192.168.31.121:9876;192.168.31.122:9876
brokerIP1=192.168.31.122
启动 NameServer
NameServer 要先于 Broker 启动的
nohup sh bin/mqnamesrv > logs/mqnamesrv.log 2>&1 &
后台启动,把默认的 nohup.out
输出到 logs/mqnamesrv.log
查看日志,看到 The Name Server boot success.serializeType=JSON
就行
tail -f ~/logs/rocketmqlogs/namesrv.log
3台机器都要启动噢
启动 Broker
- 120 - a
nohup sh bin/mqbroker -n "192.168.31.120:9876;192.168.31.121:9876;192.168.31.122:9876" -c ./conf/2m-noslave/broker-a.properties --enable-proxy > logs/mqbroker.log 2>&1 &
- 121 - b
nohup sh bin/mqbroker -n "192.168.31.120:9876;192.168.31.121:9876;192.168.31.122:9876" -c ./conf/2m-noslave/broker-b.properties --enable-proxy > logs/mqbroker.log 2>&1 &
- 122 - c
nohup sh bin/mqbroker -n "192.168.31.120:9876;192.168.31.121:9876;192.168.31.122:9876" -c ./conf/2m-noslave/broker-c.properties --enable-proxy > logs/mqbroker.log 2>&1 &
- 查看日志,看到
The broker[broker名称, IP] boot success.serializeType=JSON
就行
tail -f ~/logs/rocketmqlogs/broker.log
停止应用
sh bin/mqshutdown broker
sh bin/mqshutdown namesrv
安装 RocketMQ-dashboard
在【前情提要】我已经下载了 rocketmq-dashboard
它的源码,解压拉到 idea,然后刷一下 pom.xml 下载依赖,再然后修改修改配置启动就好了,简简单单
打个jar包自己部署得了诶
附录
https://rocketmq.apache.org/zh/docs/deploymentOperations/15deploy
https://rocketmq.apache.org/zh/docs/deploymentOperations/18Dashboard
- 1
- 0
-
分享