ocketmq集群要保证使用,至少需要有一台namesrv+一套broker存活。
当我们在进行rocketmq集群所在服务器进行扩容时(加内存、加磁盘等操作),或在某种条件下需要将整个集群重启(包含namesrv和broker),而不影响业务系统的使用,平滑启停,那么可以根据上述这个条件去操作,方案如下:
1、先将集群所有topic(除系统自带以及重试队列)中broker-a的权限改为禁写(perm从6改为4)。
admin控制台操作
进入Topic页面–>依次打开每个topic(不包含重试Topic和系统自带Topic)对应的topic config–>将perm改为4
命令行操作
./mqadmin updateTopic -c rocketmq-cluster -b broker-a主节点的ip:10911 -t topic名称 -n 任意一台namesrv的ip:9876 -p 4 -r 读队列数 -w 写队列数
*注意:rocketmq的默认读写队列为8,如果未修改读写队列数,则使用updateTopic命令更新的时候不需要跟上 -r和-w,若修改过,则要加上自己实际修改的值,否则会改成默认的8个。
2、待broker-a中不再进行消费数据(可从控制台Cluster页面的Today Consume Count项观测),则可对broker-a的主从节点进行下机,先下broker,再下namesrv(若这套broker上部署了nam