跨多个服务器或PXE与cfEngine / Chef / Puppet管理应用程序


15

我们有一个运行在几个(大约5个,并且将会增长)的盒子上的应用程序。所有机器的硬件都是相同的,理想情况下软件也应相同。到目前为止,我一直在手工管理它们,现在不再想要(静态IP地址,禁用所有必需的服务,安装必需的软件包...)。任何人都可以平衡以下选项的利弊,或提出更明智的建议吗?

1:分别在所有盒子上安装centos并使用Chef / cfengine / puppet管理配置。那样很好,因为我想找一个借口来学习使用其中一种应用程序,但是我不知道这是否是最佳解决方案。

2:使一个盒子完美并成像。通过PXE提供映像,每当我要进行修改时,都可以从新映像中重新启动包装盒。集群专家通常如何处理/ etc / sysconfig / network-scripts / ifcfg *文件中具有mac地址的问题?我们也使用infiniband,如果hwaddr错误,它也拒绝启动。这些可以在启动时正确生成吗?

我倾向于PXE解决方案,但是我认为使用munin或nagios进行监视会更加复杂。任何人都有这类问题的经验吗?

所有服务器中都装有SSD,并且功能强大且快速。

谢谢,马特

Answers:


12

您的集群听起来更像是HPC集群,而不是像我的OLTP集群,但我认为我使用的设置也可以为您工作。我称其为“ mpdehaan trifecta”,因为那是编写或管理所涉及的三个工具的家伙的后遗症。

1.)补鞋匠,用于基础建筑供应。Cobbler是一个项目,旨在成为您的kickstart,pxe,yum-repo,dhcp,dns等系统的交集。到目前为止,这是启动和运行kickstart的最简单方法,您可以根据需要使用其他功能。

2.)用于配置管理的人偶。理想的情况是你的皮匠内置主机是非常准系统是知道CONFIGS 刚好够家里打电话在启动时你的傀儡服务器。然后,Puppet将应用您的配置设置,并使它们在整个环境中永久保持一致。

3.)Func用于将并行命令并行发送到多台计算机。例如“部署新的svn代码签出并重新启动apache”。使用func在一组服务器上调用相同的bash命令非常容易,就像cluster-ssh一样。如果您真的想使用它,则可以使用一些非常简单的python为其编写自己的模块。

这三个工具都具有良好的Wiki和有效的irc渠道,可在freenode上提供帮助。


我认为这是我要追求的解决方案。我会试一试,让大家知道。我可能也会在过程中写博客。谢谢!
马特2010年

5

总览

在某些方面,您在这里有两个问题。

  • 如何构建和维护标准服务器?
  • 如何维护标准配置并在以后进行更改?

我在下面分别回答了这两个问题,但将它们紧密联系在一起。我在这里讲的是技术解决方案,而不是任何相关的最佳实践,例如变更控制。

如果这不涵盖您的问题的范围,请澄清一下,我将很乐意阐述。这是必要的基础,这对于运行良好的技术基础结构至关重要。

构建服务器

我不喜欢UNIX世界中的映像。那更像是Windows风格的方法。甚至有些Windows用户似乎现在都在重新关注标准构建的脚本。

卫星似乎在RHEL世界中越来越流行。Spacewalk是开放源代码的对应版本。您绝对必须完全购买RHEL方法才能使用此方法。这既用作服务器构建,又用作配置管理。

理想情况下,您希望在文件服务器上为所有必需的软件建立本地镜像和存储库。

首先,利用您的发行版构建自动化,例如RHEL / CentOS中的Kickstart。Kickstart将是一个基线,可以根据您的需要进行变化。可以从PXE服务器启动Kickstart构建。

对于构建的更高级部分以及不适合Kickstart文件的任何内容,您可以编写自己的自定义脚本。但是,您可能会发现puppet或cfengine比自定义脚本更适合您。我发现自定义脚本是最灵活的,并且不仅限于任何一种方法。

如果您选择编写自己的脚本,则建议使用通用配置的核心脚本。这将是安全性配置,强化以及适用于所有构建的所有内容。然后是最终脚本,以最终确定服务器角色。例如,Web服务器或数据库服务器。



维持标准

您描述的内容也属于维护配置。生成标准,软件更新和其他内容与生成有关,但在很多方面是独立的。

如果您选择依赖系统软件包,而不是为最重要的服务器角色创建自己的基于源代码的内部版本,则可以使用本机系统实用程序来维护其中的许多内容。这可以是一个简单的脚本,可以for针对服务器列表运行循环并运行yum -y update package

对于配置管理,这是puppet,cfengine和其他配置管理实用程序起作用的地方。这些都是非常有用的实用程序,它们提供了必要的基础,而无需从头开始编写自己的脚本。

在更新服务器的配置标准时,将其回填到标准服务器内部非常重要。


0

我最近完成了一个大型项目,以$ WORK推出集中化的构建/配置和配置管理系统。我们正在运行CentOS。

我恰好喜欢的设计为我们提供了几乎一键式(一个Web GUI页面)的构建过程,使用一些自定义的PHP脚本通过一个简单但有效的Web UI将所有内容绑定在一起。

一般理论是:

  1. 从单个统一的,极简的KickStart文件进行所有安装(好吧,好的,一个用于x86,一个用于x86-64,但实际上是相同的文件,只需最少的软件包选择)。
  2. KickStat安装后脚本引导Puppet。
  3. Puppet应用所有特定于节点/主机的配置,软件包安装等。

我同意映像不是Unix-y的处理方式……它们确实更适合Windows世界,在该世界中,脚本化/自动安装和配置并不那么简单。

您可以将Puppet替换为其他符合要求的配置管理系统,但是我碰巧喜欢Puppet的声明性及其融合概念。

该系统具有许多优点:

  • Puppet处理通用基础安装之后的所有操作,因此所有必需的软件包和配置都在一个地方。
  • 人偶清单是低级文档的另一个来源。
  • 只要您坚持使用Puppet(即不要进行本地配置更改,或将其合并回Puppet),构建一台机器的副本就很简单了。
  • 由于所有主机都是基于同一基础构建的,因此您可以使用基础(KickStart)软件包集预安装硬件或VM,然后只需根据需要添加类即可将它们转变为功能节点。
  • Puppet允许“标记”主机以进行生产或开发,因此构建主​​机的开发/测试副本,升级软件包或根据需要进行配置更改,测试然后合并回生产中,都非常容易。

0

如果您沿着pxe路线走,一定要看看

http://etherboot.org/wiki/index.php

Gpxe将为您提供更多的启动目标灵活性。启动aoe刀片非常容易,没有什么比从远程http服务器上启动内核更重要了!!!!!:-)。

您需要什么服务器启动时间?

创建完美的映像是不可能的,因为您始终需要应用安全补丁和软件升级。如果它们面向互联网,您不能只是忽略修补程序。

在pxe方面,您有一些选择,具体取决于集群的文件I / O。只需引导内核并通过aoe或iscsi远程安装磁盘。

您也可以在复制图像时做一些非常聪明的事情。这对于升级和回滚任何可能有问题的更改非常有用。

使用nfs root和集群nfs解决方案也取得了成功。您可以根据其客户地址指定要提供的不同文件。

同样,您必须检查您的应用程序是否喜欢运行nfs。它并不适合所有工作负载。

集群nfs服务器可以包含192.168.0.1:/etc/hostname 192.168.0.2:/etc/hostname

因此,每个客户端都引用相同的文件,但会获得与客户端相关的文件。这是相当令人印象深刻的东西,但这并不简单!

如果将文件系统集中在网络存储上,所有这些将使您更快地推出。通过网络将操作系统映像到远程磁盘需要花费时间!

如果您使用这些解决方案中的任何一个,请确保您具有设计良好且具有容错能力的网络层,并且您的nfs / SAN服务器设计合理且安全!

断开连接可能会损害NFS / SAN的服务器运行状况。:-(

为tftp / pxe编写一些脚本来控制启动过程非常容易。

如果我更了解您实际尝试集群的什么,那么也许可以想到一个更适合您的解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.