具有多个配置服务器的 Chef/Puppet

具有多个配置服务器的 Chef/Puppet

Puppet 或 Chef 是否支持复制的 puppetmasterd/Chef 服务器?这些工具会导致单点故障,这对我来说似乎非常令人惊讶,但我在他们的文档或 Google 中找不到任何关于此内容的提及。

我知道 Puppet 和 Chef 可以在没有服务器的情况下运行(可以使用 git 进行更新,如http://bitfieldconsulting.com/scaling-puppet-with-distributed-version-control),但这看起来像是二等公民,并且可能会失去一些监控能力。

答案1

对于木偶你需要

  1. 相同的清单。这可以通过将清单保存在版本控制中并在每台服务器上检查它们,无论如何您都应该这样做。
  2. 单一数据库存储配置,如果您使用它。这就像从默认的 sqlite 切换到 MySQL 或 PostgreSQL 一样简单。然后,您可以使用这些数据库的工具来复制数据库(如果需要)。
  3. 所有 Puppetmaster 都拥有来自同一证书颁发机构的证书。丹·博德这是我见过的最好的解释。然而,它可能不起作用就像您期望的那样。另外,我不确定这如何与客户端证书配合使用(即/var/lib/puppet/ssl/ca/签名/*)。也许他们的验证总是由单个 CA 处理(引入单点故障),或者也许 pem 文件在由 CA 签名后分发给每个 puppetmaster。

答案2

Chef 从一开始就被设计为在多个服务器上运行,用于其所有后端组件,因为这是 Chef 的核心功能。Opscode 平台- 高度可扩展的托管 Chef 服务器。

Chef Server 的各个核心组件:

  • API 服务器
  • 数据存储 (CouchDB)
  • 搜索引擎(SOLR)

因此,每个组件都能够在单独的服务器上运行,并且可以将 Chef 配置为每个组件使用单独的服务器。有关配置信息,请参阅Chef 配置设置页面。首先,couchdb_url 和 solr_url 设置可以指向运行这些组件的单独服务器(或多个服务器),或者位于它们前面的负载均衡器。

Chef Server API 还需要访问可能位于共享文件系统中的食谱。

答案3

如果您担心单点故障,请创建一个 puppet 集群:)

  1. 创建一个集群corosync/pacemaker(或老式心跳),使其变为主动/被动或主动/主动
  2. 使用以下方法复制两台(或更多)服务器的重要数据:DRBD或其他方法
  3. 利润!

Puppet 客户端从 DNS 标识的 Puppet 服务器获取其清单(除非您在客户端上指定服务器,但这不是很好),因此您有很多方法可以保证您永远不会没有服务器,无论是主动/被动集群,如果主动服务器发生故障,被动服务器将获取 IP 地址,或者甚至在发生故障时将 DNS 条目更改为新服务器(第一个选项是最优雅的)。

目前,有关集群的一个很好的资源是来自集群实验室。该指南包含DRBD配置示例,因此非常详尽。

相关内容