|
@@ -2,19 +2,27 @@ services:
|
|
|
zookeeper:
|
|
zookeeper:
|
|
|
image: registry.cn-chengdu.aliyuncs.com/reghao/zookeeper:3.8.4
|
|
image: registry.cn-chengdu.aliyuncs.com/reghao/zookeeper:3.8.4
|
|
|
restart: always
|
|
restart: always
|
|
|
- hostname: node211
|
|
|
|
|
container_name: zookeeper
|
|
container_name: zookeeper
|
|
|
|
|
+ hostname: node211
|
|
|
ports:
|
|
ports:
|
|
|
- "2181:2181"
|
|
- "2181:2181"
|
|
|
- - "2888:2888"
|
|
|
|
|
- - "3888:3888"
|
|
|
|
|
|
|
+ - "2888:2888" # 🚨 集群必须暴露:原子广播端口
|
|
|
|
|
+ - "3888:3888" # 🚨 集群必须暴露:Leader选举端口
|
|
|
volumes:
|
|
volumes:
|
|
|
- /opt/docker/zookeeper/data:/data
|
|
- /opt/docker/zookeeper/data:/data
|
|
|
- /opt/docker/zookeeper/datalog:/datalog
|
|
- /opt/docker/zookeeper/datalog:/datalog
|
|
|
|
|
+ - /opt/docker/zookeeper/logs:/logs
|
|
|
environment:
|
|
environment:
|
|
|
- ZOO_MY_ID: 1
|
|
|
|
|
- ZOO_SERVERS: server.1=192.168.0.211:2888:3888;2181,server.2=192.168.0.212:2888:3888;2181,server.3=192.168.0.213:2888:3888;2181
|
|
|
|
|
|
|
+ ZOO_MY_ID: 1 # 🚨 机器1固定为 1
|
|
|
|
|
+ # 🚨 核心:用双引号包裹的全局集群视图(三台机器此项完全一致)
|
|
|
|
|
+ ZOO_SERVERS: "server.1=192.168.0.211:2888:3888;2181,server.2=192.168.0.212:2888:3888;2181,server.3=192.168.0.213:2888:3888;2181"
|
|
|
|
|
+ ZOO_AUTOPURGE_PURGEINTERVAL: 24
|
|
|
|
|
+ ZOO_AUTOPURGE_SNAPRETAINCOUNT: 5
|
|
|
|
|
+ ZOO_LOG4J_PROP: "INFO, ROLLINGFILE"
|
|
|
|
|
+ ZOO_LOG_MAXFILESIZE: "100MB"
|
|
|
|
|
+ ZOO_LOG_MAXBACKUPINDEX: 10
|
|
|
JVMFLAGS: "-Xms512m -Xmx512m"
|
|
JVMFLAGS: "-Xms512m -Xmx512m"
|
|
|
|
|
+ ZOO_MAX_CLIENT_CNXNS: 60
|
|
|
deploy:
|
|
deploy:
|
|
|
resources:
|
|
resources:
|
|
|
limits:
|
|
limits:
|
|
@@ -23,8 +31,14 @@ services:
|
|
|
reservations:
|
|
reservations:
|
|
|
cpus: '0.5'
|
|
cpus: '0.5'
|
|
|
memory: 512M
|
|
memory: 512M
|
|
|
|
|
+ logging:
|
|
|
|
|
+ driver: "json-file"
|
|
|
|
|
+ options:
|
|
|
|
|
+ max-size: "100m"
|
|
|
|
|
+ max-file: "3"
|
|
|
healthcheck:
|
|
healthcheck:
|
|
|
- test: ["CMD-SHELL", "echo ruok | nc localhost 2181 | grep imok"]
|
|
|
|
|
- interval: 10s
|
|
|
|
|
|
|
+ test: ["CMD", "zkServer.sh", "status"]
|
|
|
|
|
+ interval: 15s # 🚨 适当延长检查间隔,给集群选举留出时间
|
|
|
timeout: 5s
|
|
timeout: 5s
|
|
|
- retries: 3
|
|
|
|
|
|
|
+ retries: 5 # 🚨 增加重试次数,防止因同伴未拉起被 Docker 误杀
|
|
|
|
|
+ start_period: 20s # 🚨 给 20 秒宽限期
|