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

时间:2016-12-12 05:57:33

标签: docker apache-kafka apache-zookeeper

我是分布式系统的新手,我正在使用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?
或者我应该把它们留在那里?感谢

[UPDATE]

kafka 当然会配置为在同一个docker-compose.yml文件中启动。

但是Dockerfile的{​​{1}}是在本地编写的。而且我认为我应该相应地修改kafka中的zookeeper.connect=...,而不是使用server.properties

1 个答案:

答案 0 :(得分:3)

你应该把所有以逗号分隔的列表:

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

因此,如果一个ZK发生故障,经纪人可以连接到副本。