docker - 在 docker swarm 中部署多个 Zookeeper
问题描述
我正在尝试使用 Docker Swarm 部署多个动物园管理员(每个都在自己的容器中)。
最终我想使用 3 个动物园管理员,但现在我只是想让 2 个实例工作。
我当前的 docker-compose.yml:
version: '3'
services:
zoo1:
image: zookeeper
restart: unless-stopped
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;server.2=zoo2:2888:3888
volumes:
- ./full-stack/zoo1/data:/data
- ./full-stack/zoo1/datalog:/datalog
networks:
- kafka_network
zoo2:
image: zookeeper
restart: unless-stopped
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;server.2=0.0.0.0:2888:3888
volumes:
- ./full-stack/zoo2/data:/data
- ./full-stack/zoo2/datalog:/datalog
networks:
- kafka_network
visualizer:
image: dockersamples/visualizer:stable
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
ports:
- "8080:8080"
deploy:
placement:
constraints: [node.role == manager]
networks:
kafka_network:
external:
name: kafkaNetwork
kafkaNetwork 是我使用命令创建的覆盖网络
docker network create -d overlay --attachable kafkaNetwork
我找到了以下 docker 论坛帖子https://forums.docker.com/t/cannot-get-zookeeper-to-work-running-in-docker-using-swarm-mode/27109/3但无法成功让我的 zookeeper 实例工作。
解决方案
解决了。
version: '3.2'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888
推荐阅读
- swift - 将日期字符串转换为所需的日期格式,输出为零
- azure-devops - 看不到通过 API 添加的测试附件
- php - 调用 PDO() 时的未知数据库,用于使用 WAMPServer 3.2.0 在 phpMyAdmin 上创建的 MySQL 数据库
- java - 在流函数中解析对象
- go - 无法在 go 例程中获取多个通道值
- google-cloud-platform - GCP Composer - 如何运行 Python 3 而不是 Python 2
- php - SoapCall 从 WSDL PHP 中可用的服务中调用特定服务
- node.js - 获取图片并上传到 Google Cloud Storage
- javascript - 如何配置依赖检查来处理 TSX?
- javascript - app.js:3524 Uncaught ReferenceError: THREE not defined at Object../node_modules/three-bmfont-text/index.js