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

mat*_*att 15 networking linux cluster centos puppet

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

1:在所有机器上单独安装centos并使用chef/cfengine/puppet管理配置。这会很好,因为我想要一个借口来学习使用其中一个应用程序,但我不知道这是否真的是最好的解决方案。

2:制作一个完美的盒子并对其进行成像。通过 PXE 提供映像,每当我想进行修改时,我只需从新映像重新启动这些框即可。集群人员通常如何处理诸如在 /etc/sysconfig/network-scripts/ifcfg* 文件中包含 mac 地址之类的事情?我们也使用infiniband,如果hwaddr错误,它也拒绝启动。这些可以在启动时正确生成吗?

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

所有服务器都装有固态硬盘,速度快且功能强大。

谢谢,马特。

cag*_*nut 12

您的集群听起来更像是 HPC 集群,而不是像我这样的 OLTP 集群,但我认为我使用的设置也适合您。我将其称为“mpdehaan 三重奏”,因为这是编写或管理所涉及的三个工具的人的不二之选。

1.)用于基础构建配置的Cobbler。Cobbler 是一个项目,旨在成为您的 kickstart、pxe、yum-repo、dhcp、dns 等系统的交集。到目前为止,这是启动并运行 kickstart 设置的最简单方法,您可以根据需要发展其他功能。

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

3.)用于并行对多台机器的临时命令的功能。例如“部署新的 svn checkout 代码并重新启动 apache”。使用 func 在一组服务器上调用相同的 bash 命令非常容易,就像 cluster-ssh 一样。如果你真的想进入它,你可以用一些非常简单的 python 为它编写自己的模块。

所有这三个工具都有很好的 wiki 和活跃的 irc 频道,可以在 freenode 上获得帮助。


War*_*ner 5

概述

在某些方面,你在这里有两个问题..

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

我在下面分开了我的答案,分别解决这两件事,但它们非常密切相关。我在这里讨论的是技术解决方案,而不是任何相关的最佳实践,例如变更控制。

如果这不涵盖您的问题范围,请澄清,我很乐意详细说明。这是必要的基础,对于运行良好的技术基础架构至关重要。

构建服务器

我不喜欢 UNIX 世界中的图像;这更像是一种 Windows 风格的方法。甚至一些 Windows 人员现在似乎重新关注标准构建的脚本。

卫星似乎在 RHEL 世界中越来越流行。Spacewalk 是开源的对应物。您绝对必须完全接受 RHEL 方法才能使用它。这既用作服务器构建又用作配置管理。

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

首先,利用您的发行版构建自动化,例如 RHEL/CentOS 中的 Kickstart。Kickstart 将是一个带有变化的基线,具体取决于您的需求。Kickstart 构建可以从 PXE 服务器启动。

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

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



保持标准

您描述的内容也属于维护配置。构建标准、软件更新和其他事情都与构建相关,但在很多方面是分开的。

如果您选择依赖系统包,而不是为您最重要的服务器角色创建自己的基于源的构建,那么很多都可以使用本机系统实用程序进行维护。这可以是一个简单的脚本来for针对您的服务器列表运行循环并运行yum -y update package.

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

当您更新服务器的配置标准时,重要的是将其回填到您的标准服务器构建中。