首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过卷在docker设置中持久化Zookeeper数据?

如何通过卷在docker设置中持久化Zookeeper数据?
EN

Stack Overflow用户
提问于 2018-09-18 12:21:28
回答 1查看 2.3K关注 0票数 4

因此,我在本地环境中使用official docker image在docker上设置Zookeeper。现在,我希望这个Zookeeper设置能够通过将Zookeeper数据目录作为卷挂载到我的容器中来持久化节点及其值。

这很简单,但让我困惑的是,Zookeeper在容器中的数据目录在/data,而数据日志目录在/datalog。理想情况下,除了datalog目录之外,我还希望Zookeeper持久化data文件夹中的节点和值。但是,我发现虽然datalog目录有log.*文件中的数据,但data目录没有任何与我创建的测试节点相关的数据。

代码语言:javascript
复制
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# 

我的目标是通过我的docker-compose.yml中的Zookeeper服务来实现-

代码语言:javascript
复制
volumes:
  - zkdata:/datalog

但是,我挂载的是事务日志目录而不是实际的数据目录,这似乎有悖于直觉。Zookeeper实际上如何以及在哪里持久化节点数据,我如何才能正确地将其作为卷挂载到我的docker容器中?

我实际上可以将Zookeeper环境变量设置为/data并将其挂载为docker卷,但我的问题是为什么Zookeeper数据为空,而ZOO_DATA_LOG_DIR目录不为空。

EN

回答 1

Stack Overflow用户

发布于 2019-12-05 18:00:12

也许您应该在zookeeper配置中看到dataDir路径,并将该路径挂载到卷中。在我的示例中,zookeeper配置位于/ config /zoo.cfg

代码语言:javascript
复制
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

dataDir是zookeeper存储内存中数据库快照的位置,在失败的情况下将引用这些快照。

由于dataDir为/data,因此我在卷中安装了/data目录,因此条目为:

代码语言:javascript
复制
volumes:
  - zkdata:/data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52378898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档