gra*_*tii 5 docker apache-zookeeper
因此,我使用官方 docker 镜像在 docker 上的本地环境中设置 Zookeeper 。现在,我想要的 Zookeeper 设置是能够通过将 Zookeeper 数据目录安装为容器内的卷来持久保存节点及其值。
这很简单,但令我困惑的是,Zookeeper 在容器内的数据目录位于,/data而数据日志目录位于/datalog。理想情况下,我希望 Zookeeper 除了数据日志目录之外,还能将节点和值保留在数据文件夹内。但是,我发现虽然数据日志目录中包含log.*文件中的数据,但数据目录中没有任何与我创建的测试节点相关的数据。
bash-4.4# pwd
/datalog/version-2
bash-4.4# ls
log.1 log.3 log.5 log.8
bash-4.4# pwd
/data/version-2
bash-4.4# ls
bash-4.4#
Run Code Online (Sandbox Code Playgroud)
我的目标是通过我的 Zookeeper 服务实现的docker-compose.yml-
volumes:
- zkdata:/datalog
Run Code Online (Sandbox Code Playgroud)
但这似乎违反直觉,我正在安装事务日志目录而不是实际的数据目录。Zookeeper 实际上如何以及在何处保存节点数据,以及如何将其正确安装为 Docker 容器中的卷?
我实际上可以将ZOO_DATA_LOG_DIR环境变量设置为/data并将其安装为 docker 卷,但我的问题实际上是关于为什么 Zookeeper 数据为空而数据日志目录不是。
小智 2
也许您应该在 Zookeeper 配置中看到 dataDir 路径并将该路径挂载到卷中。就我而言,zookeeper 配置位于 /config/zoo.cfg
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181
Run Code Online (Sandbox Code Playgroud)
dataDir是zookeeper存储内存数据库快照的地方,在发生故障时将被引用。
由于 dataDir 是 /data,所以我在卷中安装了 /data 目录,因此条目为:
volumes:
- zkdata:/data
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5607 次 |
| 最近记录: |