gpt4 book ai didi

configuration - 使用 Chef/Puppet 并管理手动更改

转载 作者:行者123 更新时间:2023-12-04 03:42:22 24 4
gpt4 key购买 nike

我正在为事实上的高可用性服务运行复杂的服务器设置。到目前为止,我大约需要两天时间来设置所有内容,所以我想自动配置。

但是,我对(运行的)服务器做了很多手动更改。一个典型的例子是更改防火墙配置以应对各种黑客攻击、数据包泛滥等。能够在事件节点上快速工作很重要。此外,服务器维护着许多事件的 TCP 连接,并且为了简单的配置更改而丢失这些连接是不可能的。

我不明白 Chef 或 Puppet 是否旨在处理此问题。一旦我更改了一些系统配置,我想将它存储在某个地方并在配置下一个实例时使用它。我应该坚持使用其中一种工具还是选择其他工具?

最佳答案

手动更改和配置不需要手动操作。他们甚至不一起喝茶。

在工作中,我们使用 puppet 来管理所有架构,并且由于性能瓶颈、攻击等,我们需要匆忙进行手动更改。

我们要做的是首先确保 puppet 能够设置架构的每个部分,以便在没有任何特定调整的情况下交付。

然后当我们需要进行手动更改时,如果您很着急,只要您不弄乱由 puppet 管理的文件就没有风险,如果它是 puppet 管理的文件,我们需要更改什么,那么我们只需停止 puppet 代理并做任何事情我们需要。

匆忙结束后,我们进行如下操作:

这些更改应该应用于具有相同症状的所有服务器?

如果是这样,那么您可以开发 puppet 调用的“事实”,它是每次运行时在代理上运行的代码,并将结果保存在所有 puppet 模块中可用的变量中,例如,如果您更改了 ip conntrack max 值,因为防火墙无法处理所有连接,您可以轻松地(十行代码)在 puppet 中每次运行一个具有当前 conntrack 计数值的变量,因此告诉 puppet 设置与当前使用情况相关的最大值。然后所有其他服务器都将受益于此调整,并且您可能不再需要处理 conntrack 问题(只要您继续以短频率运行 puppet,这是默认设置)

在给定的紧急情况下,这些更改应该始终手动应用吗?

如果配置是由 puppet 管理的,想办法让配置包含其他文件,并告诉 puppet 忽略它。这是最简单的方法,但并不总是可行(例如/etc/network/interfaces 不支持包含)。如果不可能,那么您将不得不在紧急情况下停止 puppet 代理,以便能够更改 puppet 文件,而不会在下一次 puppet 运行时被删除。

是否仅针对此主机进行此更改,而其他主机都不需要它?

无论如何将其添加到 puppet 中!如果 $fqdn == my.very.specific.host 放一个甜食,然后放入您需要的任何东西。即使对于单个案例,将您所做的所有更改迁移到服务器总是有益的(并且耗时),因为如果由于某种原因您的服务器崩溃到不可恢复的状态(例如硬件),这将允许您完全恢复服务器设置问题)

总之:

对我来说,处理手工更改的技巧是在推理您决定如何进行更改以及在紧急情况结束后将该逻辑转移到 puppet 上时付出了很多努力。如果您因为给定的软件插槽都已使用但服务器上仍有可用内存而感到有问题,那么处理流量峰值是合理的,允许运行更多插槽,然后花一些时间将该逻辑移入 puppet .当然要非常小心,并且与您要测试它的架构上不同场景的数量一样耗时,但最后它非常,非常有返回的。

关于configuration - 使用 Chef/Puppet 并管理手动更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com