我是使用如下docker-compose.yml在2台主机上启动的服务,一台可以,但另一台一直不行,始终报连不上。
version: '2'
services:
zookeeper:
image: zookeeper:3.6.3
restart: always
volumes:
- /data/zookeeper/data:/data
ports:
- "2181:2181"
- "2888:2888"
- "3888:3888"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=$machine_ip:2888:3888
整了大半天...各种方法都试了,没啥用,感觉不是配置的问题。
最后仔细一看,一台机器明明我配置的是ZOO_MY_ID: 2的机器,一直报自己是ZOO_MY_ID: 1的身份去连别人连不上的错...
woc!瞬间明白了。。。因为我原来使用的是单主机单个zookeeper服务,想升级成多主机的zookeeper集群,就在原有的docker-compose配置上追加了environment 的内容,直接docker-compose up -d,没做其他修改。猜测他始终认为自己id=1是不是之前老的数据挂载影响了,就把宿主机挂载的目录(/data/zookeeper/data)删除了,删除容器重新起,结果:就好了!
我真的是。。。
很多问题,都是挂载数据引起的,包括遇到的因为目录权限引起的各式各样的问题,还是要注意。