全球与本地傀儡管理

全球与本地傀儡管理

有人曾经使用 Puppet 管理过多个地理分布的系统吗?

我有几个几乎完全相似的部署(服务器 IP 除外),我希望将其管理转换为 Puppet。

我有 2 个选择:

  • 让每个部署都托管自己的 PuppetMaster 以提供本地配置,然后以某种方式同步 PuppetMasters(可能再次使用 puppet)

  • 在 AWS EC2 上托管 PuppetMaster 以实现高可用性,并从单点为所有部署提供配置

有人尝试过第二种选择吗?效果如何?我对这种环境下的高可用性性能特别感兴趣。

谢谢。

答案1

您提出的两种方法都没有错。我们有三个 Puppetmaster,都位于一个站点,为世界各地的节点提供服务 - 我们根据连接的 Puppet 节点是否在开发/测试/生产中来区分它们。其他人则喜欢按地理区域运行 Puppetmaster。其他人则很多有些傀儡大师只管理一个节点!

关键是必不可少的在版本控制系统中存储和管理 puppetmaster 清单树 - 将其视为公司维护的任何其他代码。我推荐 Git,但如果您更习惯使用 Subversion,也可以使用。puppetmaster 只是一种服务,它提供 VCS 的特定视图,而不是中央数据库本身。

将内容放入 VCS 后,您就可以将所需的清单/模块部署到相应的 puppetmaster,并轻松保持同步。惯例似乎是每个 puppet 模块都有一个 git/svn 存储库/模块,但没有什么可以阻止您将整个树放在一个存储库/模块下。

我的问题是:

  • 每个部署中有多少个节点?如果你说的是 50 多个节点,那么聘请本地操纵者肯定是值得的。
  • 除了贵公司之外,还有第三方使用这些部署吗?Puppetmaster 需要具有非常高的安全性 - 将其视为所有系统大门的钥匙,并且将包含非常敏感的信息。
  • 同样,对于基于部署的 PM,您会将它们托管在自己的服务器/VM 上,还是需要将任务交给现有机器?出于安全考虑,我强烈建议 puppetmaster 服务器单独承担该角色。
  • 您期望 EC2 如何为您提供更高的可用性?据我所知,EC2 实例不是 HA,尽管应该可以在 AWS 负载均衡器服务后面运行 2 个以上的 Puppetmaster。
  • 部署是否有很大差异?您是否想在一天中的不同时间更改它们?多个操控者可为您提供更精细的控制。

答案2

您还可以使用无 Puppetmaster 的系统,使用分布式 VCS(例如 Git),使用此处描述的方案:

http://bitfieldconsulting.com/scaling-puppet-with-distributed-version-control

答案3

我们还拥有多个 Puppet Master,以及同步的不同环境。为此,我们在 Subversion 中管理所有 Puppet 模块和清单,然后使用常规 Puppet 清单和名为 vcsdeploy 的模块将 Puppet 模块部署到 Puppet Master 上,该模块负责检查:

http://www.practicalclouds.com/content/guide/pclouds-vcsdeploy-deploy-stuff

当我们想要同步时,我们会标记一个版本,然后为 Puppet Master 更新 nodes.pp。

问候

戴夫

相关内容