configurationpipe理工具故障转移行为

我目前正试图将“DevOps”出售给我的pipe理层,我正在调查的其中一项是configurationpipe理工具。 对我们来说最重要的事情之一是我们有一个系统具有高可用性和良好的故障转移行为。

  • 对于CF引擎,这不是一个问题,因为每个节点都可以configuration为作为服务器运行,如果服务器不可用,运行将继续。
  • 对于木偶,您可以selectMaster / Masterless模式以及他们的优缺点。
  • 对于Chef,初始运行需要主服务器获取策略,但是在此之后,如果主服务器不可用,任何运行都将继续使用当前的策略。
  • 对于Salt,如果主服务器出现故障,则不执行configuration,因为所有操作都在主服务器上完成
  • 对于Ansible(如盐),如果主服务器出现故障,则不再强制执行configuration,因为所有操作都是由主服务器完成的

我没有在此列表中包含Windows PowerShell DSC,因为我当前的用户案例是,我将使用PowerShell DSC协助pipe理Windows系统,使用Puppet,Chef,Ansible,Salt或CF-Engine作为整体pipe理工具

我想知道,如果我对各种工具的理解是否正确,是不是原因?

我只会对我有经验的人发表评论,那就是木偶和Ansible。 我省略了一些细节。

两者都可以设置为仅在需要时运行无代理或本地。 要在本地使用它们,您显然需要某种方式将所需的清单/工具书传输到目标机器并在那里运行。

在谈到使用主设备的木偶使用情况时,可以使用负载平衡器和实际主设备来实现冗余。

在Ansible中,没有大师的概念,只要你有一个访问剧本的方法,每台机器都可以通过ssh / powershell连接到托pipe机器。 也许你的意思是Ansible Tower,它使用数据库进行操作,如果需要可以将其集群化。

这使我们在两种情况下都有真正的冗余,那就是实际的脚本。 在几乎所有情况下,我都看到那些呆在git仓库中,所以它本质上是多余的,只是克隆它,你可以拥有多less“主”副本。

希望这可以帮助。

如果你看一下盐,组成主人和奴才之间的唯一信息是:

  • minion可以以某种方式parsing主ip
  • / etc / salt / pki / master目录中的小众公钥

如果您的盐主人死亡,系统将继续运行,没有任何效果。 但是你是对的,当主人不在的时候,你不能对你的configuration进行任何修改。 所以一个问题是你能多快回来?

您可以简单地重新安装主设备并启动它 – 您可以再次接受您的钥匙密钥(或重新安装潜在的备份),并且您与原来的主设备处于同一地点。 如果你不能重复使用同一台机器,那么你需要以某种方式将这些爪牙指向新的主机。

数据库中没有可能被破坏或丢失的状态数据。 这对我来说是美的。 它是一个叠加层,它不会挤入其中。不像其他的方式,例如juju,当你的数据库不存在的时候,你的系统就像被斩杀一样,你必须重新安装。

Salt还有Multimaster和Syndic – 高可用性是其发展中一个长期存在的话题。

为了使上述内容变得圆满,Chef(如果使用chef-clientchef-solo纯粹是本地的,并且没有可能会失败的服务器组件)需要每次运行的服务器。 在发生停机的情况下,可以使用caching数据,但绝对不是默认行为,甚至很容易。 我们build议您在冗余/集群系统中运行Chef Server,每个故障区域有一个群集。 查看厨师后台产品的群集和Facebook的杂货送货多服务器同步。

所以首先,我要感谢jscott,fredi,user378016和coderanger的所有答案。

回答我自己的问题

  • 对于CF引擎,这不是一个问题,因为每个节点都可以configuration为作为服务器运行,如果服务器不可用,运行将继续。

这在CF-Engine网站上有很好的logging,可以在这里find一个例子: https : //cfengine.com/learn/how-cfengine-works/

  • 对于木偶,您可以selectMaster / Masterless模式以及他们的优缺点。

木偶有各种各样的模式,正如弗雷迪指出的那样,模式是一种或另一种。 但是,在进行更多的挖掘之后,Puppet非常灵活,并且具有可以支持主模式和无主模式的良好function。

  • 对于Chef,初始运行需要主服务器获取策略,但是如果主服务器不可用,任何运行都将继续使用当前策略。

所以这是不正确的,当运行是服务器模式(不使用厨师独奏)运行需要连接到每个运行的主人。 正如已经提到的,有办法做回退caching,有一些有趣的潜力,也许值得一看。

  • 对于Salt,如果主服务器出现故障,则不执行configuration,因为所有操作都在主服务器上完成

所以感谢用户378016确认,我认为提供的答案确实很好地回答了这个问题(永久链接: https ://serverfault.com/a/805791/225383)

  • 对于Ansible(如盐),如果主服务器出现故障,则不再强制执行configuration,因为所有操作都是由主服务器完成的

所以Ansible是一个棘手的问题(再次感谢Fredi的回答)。 它只给在一台服务器上安装Ansible软件带来很大的好处。 存储在这个“主”上的剧本不一定在主控上运行,而是可以通过SSH应用在其他人上。 这当然要求您希望configuration的所有这些框都可以通过SSH访问,并满足某些前提条件(如剧本中所述)。 在某些情况下并不总是令人满意的。

编辑:我应该添加Ansible可以以类似于puppet-masterless,chef-solo的方式运行,方法是在要pipe理的节点上安装Ansible,并从git之类的地方拉取configuration,然后在本地应用configuration。


对于那些对我所推荐的CF-Engine,Chef或Puppet感兴趣的人。 尽pipeAnsible和Salt都很有趣,但是对于我的用户案例来说,这并不是最佳的解决scheme,因为无论报告指标如何,都需要确保策略的执行,SSH始终可用​​的依赖性并不是一个真正的select(是的,当我们可以在每一个盒子或某种调度器上安装服务器组件时,强制进行configuration,这似乎与他们最初的体系结构不直接相关)。

所有这些产品都非常好,有不同的长处和短处,在这种情况下,我觉得Ansible和Salt不仅适用于上述原因,而且也适用于各种其他原因。