我是分布式系统的新手,我正在使用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
。
答案 0 :(得分:3)
你应该把所有以逗号分隔的列表:
zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181
因此,如果一个ZK发生故障,经纪人可以连接到副本。