rocketmq dledger 3+3 模式断网异常

目前rocketmq版本是4.9。架构采用3+3 dledger模式,1个master下面有2个slave,然後有2组。消息是随机分配到其中1组处理。我们的云端是采用Red Hat OpenShift。我们遇到的问题是,当网络进行例行维护时,某个slave节点 採用drain驱逐节点(这个动作是机房人员日常维护),此时该个slave节点会重启。重启後,该组Topic的Perm权限就会由6变成4(只读),从Dashboard看,IP也有随着变动。此时如果有消息进来,就会报No route info of this topic: App01-topic See http://rocketmq.apache.org/docs/faq/ for further details. 此时需要手动进入rocketmq Dashboard对所有topic perm设置成6才能恢复正常。 请问有人知道这个问题原因是什麽吗? 以及如何解决这个问题,因为不知道网络什麽时候会维护,每次维护完都要手工重置perm为6这会影响正常服务。

11111.png

展开
收起
一燈大師 2023-12-07 10:09:52 128 分享 版权
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个问题可能是由于在网络例行维护时,drain驱逐节点的操作导致了slave节点的重启。重启后,该组Topic的权限可能会发生变化,主要是因为Broker的topic配置信息发生了变更,而namesrv的Topic的Queue信息并未得到相应的更新。

    RocketMQ的权限控制(ACL)提供了Topic资源级别的用户访问控制。为了解决这个问题,您可以考虑以下步骤:

    1. 为每个Topic设置固定的权限,以防止在节点重启后权限发生变化。可以使用mqadmin命令来设置Topic的权限。例如:mqadmin updateTopicPerm -t topicA -p 6
    2. 考虑使用IP白名单来限制只有特定的IP地址可以访问Topic。这可以通过mqadmin updateWhiteRemoteAddress命令来实现。
    3. 在Client客户端通过RPCHook注入AccessKey和SecretKey签名,这样可以进一步增强Topic的安全性。
    2023-12-07 13:46:49
    赞同 展开评论

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系列产品 Serverless 化。RocketMQ 中文社区:https://rocketmq-learning.com/

还有其他疑问?
咨询AI助理