【问题标题】:Expose additional port on Kafka Connect for thread listener port在 Kafka Connect 上为线程侦听器端口公开其他端口
【发布时间】:2021-11-28 13:42:42
【问题描述】:

我正在使用 Kafka Connect,并在我的连接器插件中启动了一个独立线程,该线程正在侦听端口(例如“9090”)。我想使用这个端口来允许应用程序(在 kafka 环境之外)与我的连接器插件进行通信。

我在 docker-compose 中运行 Kafka Connect(和 kafka 环境)。

问题:如何在 docker compose 中公开端口,以便外部应用程序可以访问我的连接器插件线程侦听器端口?

到目前为止,这是我想出的,但我需要在 kafka 连接组件上公开一个外部端口似乎很奇怪。这是一种合理的做法还是有更好的方法让应用程序与我的连接插件线程侦听器端口进行通信?

以下是我的 docker-compose 文件的一部分,显示了我如何在连接时公开端口“9090”:

:
:
:
      connect:
        image: confluentinc/cp-kafka-connect:6.2.0
        hostname: connect
        container_name: connect
        depends_on:
          - zookeeper
          - kafka
        ports:
          - 8083:8083
          - 9090:9090
        environment:
          CONNECT_BOOTSTRAP_SERVERS: "kafka:9092"
          CONNECT_REST_PORT: 8083
          CONNECT_REST_ADVERTISED_HOST_NAME: "connect"
:
:
:

【问题讨论】:

  • Connect 只是运行一个 Jetty 服务器。您正在打开一个新端口,所以这有什么问题?请记住,每个 Connect 任务不能在同一主机上打开相同的端口,因此您将被限制为 tasks.max=1
  • @OneCriketeer 正确 - 为了处理音量,我会增加“tasks.max”并添加我需要收听的一系列端口(与 tasks.max 相同的数量)。
  • 我假设您会遍历端口以找到下一个打开的端口?但这可能是任务重新平衡的问题......无论如何,例如Syslog connector,基本上需要同样的事情

标签: apache-kafka docker-compose apache-kafka-connect confluent-platform


【解决方案1】:

下面的解决方案与我的预期非常相似,并由@OneCricketeer 验证,但我在连接 docker-compose 配置中添加了一系列端口(以下为 9090-9094)。我还会让“侦听器”线程组件侦听等于 tasks.max 数量的端口范围(在下面的示例中,它将是 5)。

:
:
:
      connect:
        image: confluentinc/cp-kafka-connect:6.2.0
        hostname: connect
        container_name: connect
        depends_on:
          - zookeeper
          - kafka
        ports:
          - 8083:8083
          - 9090-9094:9090-9094
        environment:
          CONNECT_BOOTSTRAP_SERVERS: "kafka:9092"
          CONNECT_REST_PORT: 8083
          CONNECT_REST_ADVERTISED_HOST_NAME: "connect"
:
:
:

【讨论】:

  • 很好 - 我会更新解决方案
猜你喜欢
  • 2019-08-21
  • 2019-01-03
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2017-06-04
  • 2015-02-22
相关资源
最近更新 更多