Docker 从一组动物园管理员中选择哪个主机名
我是分布式系统的新手,我正在使用docker建立一组zookeepers 例如,我启动了三个zookeepers: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
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
启动的。所以他们应该在同一个网络中。虽然我已经找到了答案,但还是要谢谢你,你有正确的答案。