繁体   English   中英

apache Kafka 3.X集群是否需要已经启动的zookeeper

[英]whether apache Kafka 3.X cluster requires already started zookeeper or not

我正在使用一个由三个 kafka 节点组成的 kafka 集群,它在已经启动并运行的节点的 zookeeper 集群上运行。 Docker-compose 与 kafka docker 映像版本 2.2.0 和 zookeeper docker 映像版本 3.5 一起使用。

现在我的计划是使用kafka 3.x的升级版本,其中声称不需要zookeeper(可能明确不需要)。 我的印象是 zookeeper 会自动启动。 但是我看到 Zookeeper 嵌入在 kafka 中,所以我也需要显式启动它。

为此,我必须将 kafka 3.x 重新打包成两个单独的 docker 图像。 第一张图片 ZOOKEEPER_IMAGE,会通过Docker 文件的 CMD 命令调用 zookeeper 的 zoo-start.sh 并设置动物园具体参数。

第二张图片 KAFKA_IMAGE 相反,会通过Docker 文件的 CMD 命令调用 kafka 的 start.sh 并设置 kafka 特定参数。 CMD ["/start.sh"]

我还可以看到许多 kafka 参数已更改,目前我收到此异常。

KafkaException:无法将 PLAINTEXT://127.0.0.1: 解析为代理端点 -

请建议我是否遵循正确的方法以及此异常的解决方案是什么。

下面是一个 zookeeper 和一个 Kafka 节点的代码。 类似原来docker compose的方式,包含3个kafka,3个zookeeper节点

zookeeper:
  hostname: ${HOST_IP}
  image: ${ZOOKEEPER_IMAGE}
  container_name: zookeeper
  command: /bin/bash -c "/start.sh"
  volumes:
    - ${VOLUMES_FOLDER}/zk/data:/data
    - ${VOLUMES_FOLDER}/zk/conf:/conf
  network_mode: "host"
  ports:
    - 0.0.0.0:${ZOOKEEPER_EXPOSED_PORT}:${ZOOKEEPER_EXPOSED_PORT}

kafka1:
  hostname: ${HOST_IP}
  image: ${KAFKA_IMAGE}
  depends_on:
  - zookeeper
  container_name: kafka1
  command: /bin/bash -c "/start.sh"
  volumes:
    - ${VOLUMES_FOLDER}/kf/1/logs:/logs
    - ${VOLUMES_FOLDER}/kf/1/data:/data
  environment:
    - KAFKA_ADVERTISED_HOST_NAME=${HOST_IP}
    - KAFKA_DELETE_TOPIC_ENABLE=true
    - KAFKA_BROKER_ID=10
    - port = ${KAFKA1_EXPOSED_PORT}
    - ZOOKEEPER_IP=${HOST_IP}
    - JMX_PORT=7208
  network_mode: "host"
  ports:
    - 0.0.0.0:${KAFKA1_EXPOSED_PORT}:${KAFKA1_EXPOSED_PORT}

印象中 zookeeper 会自动启动

它不会。 Kafka KRaft 使用 Raft 协议。 根本不需要 Zookeeper,因此不会启动。

Zookeeper 嵌入kafka

它不是。 Zookeeper 服务器脚本可用,但它们不会以任何嵌入式方式或自动使用。

将 kafka 3.x 重新打包成两个单独的 docker 图像

例如, bitnami/kafka图像已经提供了 KRaft 模式。 不清楚您当前使用的是什么图像。

您的错误可能是因为advertised.host.nameport都作为 Kafka 属性被删除了。 您应该使用listenersadvertised.listeners

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM