Apache RocketMQ这个错误日志只出现在从节点上 主节点却没有问题 为什么?这个方法的[阿里云消息队列MQ]

Apache RocketMQ这个错误日志只出现在从节点上 主节点却没有问题 为什么?这个方法的org.apache.rocketmq.broker.out.BrokerOuterAPI#getTimerCheckPoint如下行调用出错

RemotingCommand response = this.remotingClient.invokeSync(MixAll.brokerVIPChannel(true, addr), request, 3000);

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 那时候是不是还没切换,所以单向配置没问题。主备切换场景中,谁都可能成为主,所以要把同组broker所有ip都配置到白名单中。这部分内容 4.x还是5.x都没有变过的
    https://rocketmq.apache.org/zh/docs/4.x/bestPractice/04access,
    此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

  2. 问题1:如果该错误只在从节点上出现,可能是因为从节点与主节点的配置不同步或数据同步不完整导致的。建议您检查从节点与主节点的配置是否一致,并确保从节点已成功拉取到主节点的数据。

    此外,也有可能是由于网络原因导致的,建议您检查从节点和主节点之间的网络连接是否正常。

    问题2:如果您在Kubernetes集群中部署RocketMQ,并且需要动态获取Pod的IP地址并设置白名单,可以考虑使用ConfigMap来存储Pod的IP地址,并使用downwardAPI来获取Pod的IP地址。然后将这些IP地址添加到broker.conf文件中的plain_acl.yml配置文件中的globalWhiteRemoteAddresses中。

    例如,在ConfigMap中定义以下数据:

    apiVersion: v1kind: ConfigMapmetadata:  name: pod-ipdata:  ip: $(POD_IP)

    然后,在broker.conf文件中配置以下内容:

    plain:  plainLogin:    users:      - username: admin        password: 123456        accessKey: rocketmq1        secretKey: rocketmq2        whiteRemoteAddress:          - file:/opt/rocketmq/conf/plain_acl.yml      - username: test        password: 123456        accessKey: rocketmq3        secretKey: rocketmq4        whiteRemoteAddress:          - file:/opt/rocketmq/conf/plain_acl.ymlglobalWhiteRemoteAddresses: ${ROCKETMQ_DEFAULT_PLAIN_WHITE_REMOTE_ADDRESSES}

    最后,在Kubernetes Pod的环境变量中设置以下内容:

    containers:  - name: rocketmq-broker    env:      - name: POD_IP        valueFrom:          fieldRef:            fieldPath: status.podIP      - name: ROCKETMQ_DEFAULT_PLAIN_WHITE_REMOTE_ADDRESSES        valueFrom:          configMapKeyRef:            name: pod-ip            key: ip

    这样可以动态地将Pod的IP地址添加到broker.conf文件中的plain_acl.yml配置文件中。

    问题3:是的,您可以在plain_acl.yml配置文件中设置globalWhiteRemoteAddresses来指定白名单,支持IP地址和域名。如果您要使用域名,请确保所有Broker都能够解析该域名。