【问题标题】:'partitions have leader brokers without a matching listener' on kubernetes after kafka restartkafka 重启后 kubernetes 上的“分区有没有匹配侦听器的领导代理”
【发布时间】:2019-09-12 22:00:27
【问题描述】:

我有几个 Spring Boot 应用程序通过在 kubernetes 集群中运行的 kafka 进行通信。使用 bitnami/kafka helm chart 部署 kafka。

在 kafka 代理(我只有一个实例)重新启动之前,一切正常。在那之后,我得到了生产者'X 分区有没有匹配侦听器的领导代理'......要解决这个问题,我必须再次设置整个集群以使其正常工作,这意味着杀死所有应用程序,删除 kafka 和卷并将所有内容放回原处。

找到了一些关于“advertised.listeners”的东西,但还没有任何效果。 比如那个: https://medium.com/@tsuyoshiushio/configuring-kafka-on-kubernetes-makes-available-from-an-external-client-with-helm-96e9308ee9f4

我的问题是,为什么它在一开始就可以工作,只有在崩溃之后才停止......

谢谢 奥利弗

【问题讨论】:

    标签: spring-boot kubernetes apache-kafka azure-aks


    【解决方案1】:

    对我来说的问题是,为什么它在开始工作并且只有在崩溃之后才停止......

    当您的 Kafka 代理重新启动时,它会获得一个新的 IP 地址。您必须确保新 IP 地址反映在您的代理属性中,即它必须包含在通告的侦听器中。

    您可以在 Kafka 部署之上拥有一个 Kubernetes 服务,并将其包含在您的广告侦听器中作为一种解决方法

    另一种方法是设置有状态,以便您的代理 pod 始终获得相同的 IP 地址。关闭您的代理,添加 advertised.listeners 并将其设置为代理 pod IP 并启动它。

    一个经验法则是,您的 kafkacat 主题元数据不得返回无法访问的地址。

    【讨论】:

    • 谢谢答案..我也认为重启后IP已经改变。我想知道的是我已经有一个服务,当我在kafka失败后查看日志文件时,spring boot应用程序使用了这个服务:java.io.IOException:无法解析地址:kafka-0.kafka -headless.xy.svc.cluster.local:9092
    • @IEE1394 你能telnet kafka-0.kafka-headless.xy.svc.cluster.local 9092吗?
    • 是的,我可以从集群内的busybox进行远程登录
    • @IEE1394 那么,您可能需要检查您的 adsd.listeners 并查看它是否反映相同。您是否尝试使用 kafkacat 获取主题的元数据并查看那里的 IP 是什么?
    • 目前我没有 kafkacat .. 我手动将它添加到广告的听众中并试一试
    猜你喜欢
    • 2019-05-03
    • 2020-11-11
    • 2019-01-28
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多