什么是配置管理?

配置管理是公司或组织定义和跟踪其基础设施资源状态的过程。 封装在这些资源中的是物理硬件和软件。 它是一种确保在对系统进行更改时对这些更改进行跟踪的方法,这些更改面向最终预定义的状态应该是什么标准。

此外,配置管理的自动化对于构建和维护更复杂的系统来说是不可或缺的。 要理解配置管理在当今复杂的技术生态系统中的重要性,想象一下逆向意味着什么是有用的。

无配置管理

考虑一个基于 Web 的服务,它的环境由多个服务器实例组成。 一些服务器负责服务 Web 流量,其他服务器负责负载平衡、数据库节点、缓存节点等。 此 Web 服务有一个系统管理员负责维护这些服务器和应用程序的正常运行时间。

有一天,在流量特别大的事件中,用户开始偶尔报告来自服务的错误代码。 系统管理员开始进行故障排除并意识到其中一个 Web 节点不再为流量提供服务。 在对无响应的 Web 节点之一进行故障排除时,系统中的其他 Web 节点开始因流量过载。 随之而来的是多米诺骨牌效应,突然之间,用户根本无法访问该服务。

系统管理员意识到首先关闭的 Web 节点已将其磁盘填满。 他们迅速解决了问题,使问题和其他网络节点重新上线,一切又开始顺利运行。 但是,他们注意到引发级联故障的原始 Web 节点上的磁盘继续填满。 经过进一步调查,系统管理员确定某些服务的详细日志记录已启用。 此设置被确定为服务器磁盘已满错误的根本原因。 他们调整系统配置以关闭该功能,并且高流量事件继续进行而不会出现问题。

通常,启用详细日志记录功能来解决问题。 它没有关闭的事实导致应用程序停机。 如果应用程序有适当的配置管理和自动化到位,Web 节点的期望状态将被强制执行,并且事件可能不会发生。

配置管理的好处

配置管理可确保以集中方式记录和控制更改,无论更改有多小。 通常,使用配置管理工具(如 Puppet、Ansible、SaltStack 或 Chef)部署的设置会被编码。 配置本身可能由代码组成,但通常是某些版本控制系统的一部分,该系统跟踪每个建议的调整。

在广泛的分布式系统中,手动识别、修复和验证系统问题的配置更改的解决方案可能是不可能的,并且可能变得昂贵和复杂。 通过使用配置管理工具自动化这些流程,在环境中持续实施所需状态可以提高稳定性和可靠性。 通过使用配置管理工具自动化这些流程,在环境中持续实施所需状态可以提高稳定性和可靠性。

config.mgmt5

适当维护开发和生产环境之间的相同性是配置管理的一个相当大的好处。 当确信该环境与用户交互的环境之间没有差异时,在发布之前利用开发环境来测试代码会更有意义。 开发环境本质上是一个测试场,但这并不意味着它不应该是代码最终部署位置的有效表示。

代码中的配置管理

config.mgmt4

配置管理不仅仅存在于系统管理的上下文中。 持续集成和持续交付的概念深深植根于配置管理之中。 将代码从版本控制系统导出到较低环境并进入生产的软件管道是配置管理。

通常,这些管道负责针对单元、集成和功能测试套件运行提交的代码。 最终,这些管道还可以创建已测试代码的打包可部署版本,甚至可以将该代码推送到生产环境中。 这些是一系列提前配置的步骤,可以推动实现所需的状态。

配置管理工具

今天有许多配置管理工具可用。 使用正确的工具在很大程度上取决于组织的需求。 它们都旨在使定义、构建和维护系统的过程自动化。 当今使用率很高的配置管理工具的一些示例包括 Ansible、Chef、Puppet 和 SaltStack。

其他配置管理工具采用了不同的方法。 例如,Chef 具有命令式配置风格。 这实质上意味着用户定义配置的每个步骤。 每个步骤完成后,Chef 继续下一步,依此类推。 动作可能相互依赖,它们的隐含定义最终决定了系统将达到的状态。

config.mgmt6

另一方面,Puppet 采用声明式范式。 这里的最大区别在于,实现所需状态所需的各个步骤的抽象级别更高。 用户将声明所需的状态是什么,然后信任 Puppet 来处理其余的事情。 可以多次应用人偶配置以确保实现选定的设计。

Ansible 和 SaltStack 是采用混合方法的配置管理工具的示例。 Ansible 和 SaltStack 最初都是作为执行引擎构建和设计的。 这意味着它们被构建为能够同时在多台机器上运行命令。 他们可以根据所需状态的声明推断应该发生什么,或者根据隐式指令执行配置。 这些指令通常使用剧本或 SLS 文件中提供的基于 YAML 的语言编写。 尽管在执行和设计上存在差异,但所有配置管理工具都可以促进配置的集中修改,将不同的系统分组,并识别不合规的结构并提供补救。

结论

通过网络或其他方式提供的服务将不可避免地变得更加复杂。 产品本身将变得更加直观,并将满足更细微的兴趣领域。 反过来,这些服务的实施也将不可避免地变得更加复杂。

提供性能的一致性对于创造优质的用户体验至关重要。 无论系统设计得多么完善和冗余,如果没有适当的配置管理和配置管理的自动化,提供高可用性和流畅的用户体验几乎是不可能的。 在系统配置和更改中及周围实施适当的控制流程将确保更高水平的系统可靠性,从而提高用户对该系统的信心。

从今天开始您的稳定之旅!

立即致电 1.800.580.4985 与我们联系,与知识渊博的托管解决方案提供商交谈,他们可以立即为您提供所需的信息,以做出明智的决定。

忙到不想说话? 点击 这里 与我们进行快速聊天以了解更多信息。 您是否想要电子邮件中的信息,您可以在闲暇时查看? 立即给我们发送电子邮件,以获得关于哪些产品最适合您的需求的可靠建议。

我们期待您的回音!