我想在码头工人上创建可扩展的 Kafka 集群。我使用 docker image https://hub.docker.com/r/wurstmeister/kafka/来创建 kafka 服务器。为了创建单节点 kafka 和 zookeeper,我使用了以下 docker-compose:

version: '3.1'
services:
  kafka:
    image: "wurstmeister/kafka"
    ports:
     - "9095:9092"
    hostname: kafka
    depends_on:
     - zookeeper
    environment:
     - KAFKA_ADVERTISED_HOST_NAME=kafka
     - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
     - KAFKA_ADVERTISED_PORT=9092
     - KAFKA_CREATE_TOPICS=check:3:1
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2185:2181"

使用这些设置,我可以在 kafka 消费者设置中分别从我的应用程序代码中访问 kafka broker 和 zookeeper,分别为kafka:9092zookeeper:2181

但是现在我想要可扩展的集群,所以我将 docker-compose 修改为:

version: '3.1'

services:
  kafka:
    image: "wurstmeister/kafka"
    ports:
     - "9095:9092"
    hostname: kafka
    depends_on:
     - zookeeper
    environment:
     - KAFKA_ADVERTISED_HOST_NAME=kafka
     - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
     - KAFKA_ADVERTISED_PORT=9092
     - KAFKA_CREATE_TOPICS=check:3:1
    deploy:
      replicas: 3
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2185:2181"

在这种情况下,3 个 kafka 经纪人正在创建。但是,在这种情况下,如果我无法通过在我的应用程序代码的 kafka 使用者设置中使用 kafka broker 作为kafka:9092和 kafka zookeeper 作为zookeepr:2181来访问我的主题“检查”。我该如何修改我的docker-compose.yml或我的应用程序代码 kafka 消费者设置,以便我可以从这些多个代理中读取?