配置的静态与动态供应

Static vs dynamic provisioning of configs

我正在尝试为新项目寻找合适的配置管理工具。我遇到了领事。在我提出问题之前,我想引用领事页面上的内容:

Static configuration that may be provided by configuration management tools can be moved into the dynamic key/value store. This allows application configuration to be updated without a slow convergence run.

它还说:

That said, Consul is not a replacement for configuration management tools. These tools are still critical to set up applications, including Consul itself. Static provisioning is best managed by existing tools while dynamic state and discovery is better managed by Consul.

来源:https://www.consul.io/intro/vs/chef-puppet.html

我的理解是 consul 是一个动态配置管理工具,而且速度很快。但我的问题是它与 chef 等静态配置管理工具有何不同?

最重要的是什么时候选择什么?

其实并没有那么快或慢。 Chef/Ansible/Puppet/etc 的问题。是这些系统通常 运行 定期,例如每 30 分钟一次。

因此,如果一个节点发生变化(或者 added/deleted),可能需要长达 30 分钟的时间,直到所有其他节点都注意到这一点(无论是应用程序服务器还是数据库服务器相互发现)。

Consul(也许 consul-template)在这里要快得多,有点直接。所有连接的笔记都会收到通知,说有什么变化了。但是,它没有提供上述配置管理工具的原语。

所以两者的结合也是有效的。 Chef/Puppet/Ansible/etc。安装包和编写大部分配置,加上 Consul(或 etcd)用于快速移动的部分。

这是我在这个问题上的 0.05 美元: 如果您在某些云上有 动态 基础设施——这意味着偶尔创建和销毁的服务器 ("ephemeral servers"),通常是为了满足一些不断变化的负载,那么 consul 是一个很好的工具:这些服务器可以启动并在启动时从 consul 读取它们的配置。

理想情况下,在此用例中,您将启动根据您的需要定制的预制服务器。例如,您的服务器在启动时需要对其进行管理。您可以使用 Ansible 将 consul 预烘焙到服务器中。

所以过程是这样的:

  1. 您为您的服务器创建一个模板,其中包含您需要的所有好东西(库、应用程序、consul,等等)。您可以使用 Ansible 来这样做。这只完成一次(每个模板)
  2. 您使用云来启动这些模板 - 当它们启动时,它们上的 consul 客户端从 Consul 集群获取一些额外的配置值(每次启动服务器时都会发生这种情况)。