开发者社区 > 云原生 > 云消息队列 > 正文

Apache RocketMQ这个错误日志只出现在从节点上 主节点却没有问题 为什么?这个方法的

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

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

展开
收起
真的很搞笑 2023-06-06 13:46:52 122 0
2 条回答
写回答
取消 提交回答
  • 那时候是不是还没切换,所以单向配置没问题。主备切换场景中,谁都可能成为主,所以要把同组broker所有ip都配置到白名单中。这部分内容 4.x还是5.x都没有变过的
    https://rocketmq.apache.org/zh/docs/4.x/bestPractice/04access,
    此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-07-19 15:52:25
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

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

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

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

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

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: pod-ip
    data:
      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.yml
    
    globalWhiteRemoteAddresses: ${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都能够解析该域名。

    2023-06-06 16:38:37
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载