我正在评估一些分布式键值存储,etcd和Consul看起来都非常有前途。我对服务发现、健康监控和配置服务感兴趣。
我喜欢 Consul 提供的额外功能,但我无法确定它是否会在服务出现故障时保留 Key-Value 存储?似乎 etcd 提供了持久性。有什么建议吗?
我正在评估一些分布式键值存储,etcd和Consul看起来都非常有前途。我对服务发现、健康监控和配置服务感兴趣。
我喜欢 Consul 提供的额外功能,但我无法确定它是否会在服务出现故障时保留 Key-Value 存储?似乎 etcd 提供了持久性。有什么建议吗?
领事代理(客户端和服务器)将数据保存到数据目录中。
代理不保留数据的唯一情况是它以“-dev”模式启动。
我最终在 Docker 上运行了progrium/docker-consul映像并添加了一些键值对。使用 Ctrl-C 将其关闭后,当我重新启动容器时,这些值仍然存在。我还通过docker exec从命令行杀死了 Consul ,并且数据也被持久化了。
progrium/docker-consul 镜像将所有数据保存在 /data 目录中。
来自github 上的核心 Consul 开发人员消息之一:
任何 API 注册的服务和检查也会将其配置写入 data-dir 以在代理重新启动之间保持持久性,因此如果在 Consul 重新启动之间丢失此目录,它们的配置将丢失。当然,这不适用于在静态配置 JSON 文件中创建的服务/检查。
因此,在集群节点正常关闭的情况下,键值存储保存到数据目录。
如果节点意外关闭(停止),我没有发现它是否将 KV 存储保留到数据目录。