Docker 从一组动物园管理员中选择哪个主机名

Docker 从一组动物园管理员中选择哪个主机名,docker,apache-kafka,apache-zookeeper,Docker,Apache Kafka,Apache Zookeeper,我是分布式系统的新手,我正在使用docker建立一组zookeepers 例如,我启动了三个zookeepers: services: zoo1: image: zookeeper restart: always ports: - 2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server

我是分布式系统的新手,我正在使用docker建立一组zookeepers

例如,我启动了三个zookeepers:

services:
  zoo1:
    image: zookeeper
    restart: always
    ports:
      - 2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

  zoo2:
    image: zookeeper
    restart: always
    ports:
      - 2181
    environment: 
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

  zoo3:
    image: zookeeper
    restart: always
    ports:
      - 2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
要启动一个kafka,我必须配置它的
server.properties

在zookeeper.connection=localhost:2181示例中,我应该在这里配置什么

zookeeper.connection=zoo1 / zoo2 / zoo3:2181?
或者我应该把他们三个留在那里?谢谢

[更新]

当然,kafka将被配置为在相同的
docker compose.yml
文件中启动


但是
kafka
Dockerfile
是本地编写的。我认为我应该相应地修改
server.properties
中的
zookeeper.connect=…
,而不是使用
localhost
,您应该将所有内容都放在逗号分隔的列表中:

zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181

因此,如果一个ZK宕机,代理可以连接到一个副本。

您的卡夫卡是否在主机的容器上运行?@BuiNgocLuan,是的,它是由同一个
docker compose.yml中的
docker compose
启动的。所以他们应该在同一个网络中。虽然我已经找到了答案,但还是要谢谢你,你有正确的答案。