【问题标题】:Configuring kafka connect with multi brokers使用多个代理配置 kafka 连接
【发布时间】:2021-04-27 16:33:02
【问题描述】:

步骤

  • 我已经使用了两个 kafka brokers 并且我已经启动了 zookeeper、kafka server 和 kafka connect 服务。
  • 我有一个源类型的 kafka 连接器,可用于从数据库中获取数据。
  • 如果我使用其余 API 启动连接器 [连接器 1],那么它将使用负载平衡器访问任何一台 kafka 服务器 [服务器 1]。之后服务器 1 将存储并运行连接器。但服务器 2 不会知道在服务器 1 中运行的连接器 [连接器 1]。

期待

  • 所以如果 kafka server 1 宕机了,那么另一个 kafka server 2 应该能够在发生故障的 kafka server 1 中运行连接器。

  • 在启动连接器时,kafka 服务器应该知道有多少连接器正在运行,这样如果任何一个代理无法完成这项工作,那么另一台服务器将能够继续这项工作。

现实

  • 另一台 Kafka 服务器 2 未按要求完成工作。

有什么办法可以通过使用 kafka 进行配置设置来实现吗?

请给我一些建议。

卡夫卡服务器 1

卡夫卡服务器 2

【问题讨论】:

    标签: kubernetes apache-kafka apache-kafka-connect


    【解决方案1】:

    您似乎已经在单个 pod 中启动了所有进程。

    您应该在不同的 pod 中将 Kafka、Zookeeper 和 Connect 作为单独的服务运行。

    我建议你参考 Confluent 或 Strimzi 站点来查找 Kafka Kubernetes Helm Charts / Operators


    但要回答这个问题 - 您可以给一个或多个经纪人 connect-distributed.properties bootstrap.server 值。然后每个代理都作为 Kafka 集群的一部分连接,并在一个代理不可用时重新连接

    “Kakfa 服务器”(代理)不运行连接器

    如果你想运行一个连接工作者集群,你还需要设置他们的rest.advertised.listener地址,以便他们可以相互通信。

    【讨论】:

    • - 我使用普通的 apache kafka 来运行连接器 - 这里我使用了两个 kafka 代理来提高可用性并提高效率。 - 我已经完成了一些测试用例,例如停止任何一项服务,例如 kafka connect 和 kafka broker。 - 在停止任何 kafka 连接服务时,连接器与另一个 kafka 连接服务完美配合。 - 但是在停止 kafka 服务器 1 时,连接器进入未分配状态 [由 Rest API 验证] - 期望就像连接器应该只处于运行状态。 imgur.com/YBdB2Fy
    • 同样,代理不运行连接器。听起来您的内部主题之一(例如 _consumer_offsets 或 3 Connect 主题)的复制因子不为 2,而您停止的代理是唯一活跃的领导者
    • 是的,你是对的......它在更改服务器属性配置后运行良好,如下所示 # 组元数据内部主题“__consumer_offsets”和“__transaction_state”的复制因子 offsets.topic.replication .factor=2 transaction.state.log.replication.factor=2
    • 酷。如果我已经回答了您的问题,请随时使用帖子旁边的复选标记接受答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多