克隆与脚本安装(使用 Kick-start/Puppet)相比有哪些缺点?
我阅读了很多支持脚本安装的意见,其中由于硬件不断变化,克隆被认为是不可靠的方法。
就我而言,由于我们使用的是同一家供应商,因此硬件非常统一,即使硬件发生变化,调整克隆的图像设置(我使用 SystemImager)的努力也不是很困难。
它也更快,大约需要 5 分钟,而脚本安装则需要 20 - 30 分钟(当然没有本地镜像),并且能够捕获很难编写脚本的小细节(例如 MySQL DB 保护)。
但是从我读到的内容来看,克隆仍然受到很多批评,所以有人可以分享他对此的看法和经验吗,以及是否值得我将我们的部署基础设施更改为脚本安装?
提前致谢!
答案1
克隆和 kickstart 只管用一次。它们不是永久维护系统的解决方案。除非每次需要升级脚本或应用补丁时都重新部署整个服务器。
例如,前几天我遇到了 SSH 超时问题。向 sshd_config 添加一些选项解决了该问题。我在 puppet repo 中编辑了标准 sshd_config 文件,它负责推送更新的文件并在每台服务器上重新启动 SSH。此外,我设置的任何新服务器都将获得此更新的配置。
如果我仅使用整个系统克隆,我可以编辑主映像上的 sshd_config,但无法轻松地更新所有服务器上的现有配置文件。
puppet 之类的东西的另一个巨大好处是模块化程度更高。您可能有一个“apache”映像或一个“mysql”映像,但如果您需要一个同时具有 apache 和 mysql 的服务器,该怎么办?您需要部署的服务组合越多,情况就越糟。
使用我的 Puppet 配置,这很简单
include apache
include mysql::server
include ...
最后,puppet 的另一个好处是真正记录了您的服务器是如何设置的。想知道安装了哪些软件包或修改了哪些文件?只需阅读 puppet 配置即可。如果您使用主映像,则需要不断尝试使文档与映像保持同步。
答案2
“全局唯一”标识符——用于各种事物,各种平台(MSWindows COM、*nix、复制数据库)通常将 nic、mac 地址作为确保整个网络“唯一”的一部分。克隆——可能会忽略这一点,复制——可能会导致分布式、联网系统突然以奇怪的、不确定的方式运行(也称为:竞争条件——哪个进程首先收到消息。)小心!