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