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

Which hostname to choose from a group of zookeepers

我是分布式系统的新手,我正在使用docker设置一组zookeeper

例如,我启动了三个zookeeper

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文件中启动。

但是kafkaDockerfile是本地写的。我认为我应该相应地修改 server.properties 中的 zookeeper.connect=... 而不是使用 localhost.

你应该把所有的都放在逗号分隔的列表中:

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

因此,如果一个 ZK 出现故障,代理可以连接到一个副本。