Docker部署Hashicorp Consul配置Watches触发快照后备份文件丢失
Consul Docker环境备份文件丢失原因分析
- 命令执行报错未被捕获:你当前的脚本仅将echo输出写入日志,
consul snapshot save命令的标准输出、错误输出均未做重定向,你看到的无报错是假象,实际命令大概率执行失败未生成文件。常见的命令执行失败原因包括: - 集群开启ACL但脚本未携带有权限的令牌,snapshot操作需要对应ACL权限才可执行
- Consul API未监听127.0.0.1、或开启了HTTPS访问,命令未加
-http-addr参数指定正确的API访问地址导致连接失败 - 脚本执行环境的PATH变量未包含consul二进制文件路径,导致命令未找到执行失败
- 文件存储位置混淆:你写入的
/consul/keyvalue.bak是容器内部的路径,如果你直接在宿主机目录查找肯定找不到,需要先进入运行中的Consul容器内对应目录查看。 - 容器临时文件系统特性:如果你没有将容器内的
/consul目录通过volume、bind mount等方式挂载到宿主机持久化目录,容器重启/销毁后,所有写入容器内部非挂载目录的文件都会被自动清理,自然找不到备份文件。如果你的trigger.log也在容器重启后消失,即可确认是该问题。 - 权限问题:虽然trigger.log可正常写入,但需确认consul进程对
/consul目录是否有可写权限,部分镜像中consul进程以非root用户运行,若目录属主为root且无其他用户写入权限,也会导致文件写入失败。
内容的提问来源于stack exchange,提问作者ChouChun
相关产品推荐
相关产品推荐

