Consul 是否保留 Key Value 存储?

Does Consul persist the Key Value store?

我正在评估一些分布式键值存储,etcdConsul 看起来都非常有前途。我对服务发现、健康监控和配置服务感兴趣。

我喜欢 Consul 提供的额外功能,但我无法确定它是否在服务中断时保留 Key-Value 存储? etcd 似乎提供了持久性。有什么建议吗?

我在 Docker 上 运行 progrium/docker-consul 图片并添加了一些键值对。使用 Ctrl-C 关闭它后,当我重新启动容器时,这些值仍然存在。我还通过 docker exec 从命令行杀死了 Consul,数据也被持久化了。

progrium/docker-consul 镜像将所有数据保存在 /data 目录中。

来自一位核心 Consul 开发人员 message github:

Any API-registered services and checks also get their configuration written into data-dir for persistence between agent restarts, so their configuration would be lost if this directory was lost between Consul restarts. This doesn't apply to services/checks created in the static configuration JSON files of course.

因此,在集群节点正常关闭的情况下,键值存储保存到数据目录。

如果节点意外关闭(暂停),我没有发现它是否将 KV 存储持久保存到数据目录。

Consul 代理(客户端和服务器)将数据保存到数据目录中。

代理不保留数据的唯一情况是它以“-dev”模式启动。