1.broker权限修改
将broker在namesrv的权限改为禁写
sh mqadmin wipeWritePerm -b broker-d -n namesrv1的ip地址:9876
参数详解:
-b:broker名称
-n:namesrv地址
注意:需要将剔出集群的borker-d从所有namesrv中改写权限,并且一次只能改写一个namesrv。因为实测发现rocketmq提供的api接口并不能以Name server address list的方式使用。eg: 192.168.0.1:9876;192.168.0.2:9876。
2.进入控制台Cluster界面检查权限修改是否成功
刷新Cluster页面,当borker-d的Today Produce Count项数据不再变动,而其他broker今日生产数量依旧增长,说明禁写权限修改成功(如果不在往集群生产消息,也可能一直不变)。
3.从消费组中剔除broker-d
等到broker-d所有数据消费完后(上图Today Produce Count和Today Consume Count相等),进入Consumer界面,依次点击每个消费组的“DELETE”按钮,在弹框中选中broker-d,然后提交就能剔除broker-d
4.停止服务
将broker-d对应的主从节点的rocketmq服务停止。
sh /data/rocketmq-4.3/bin/mqshutdown brokershutdown了broker-d的节点后,可以发现,Topic界面中的每个Topic配置中自动剔除了broker-d。
经多次实测验证,上述方法不会丢失数据。