150
第
5
章
本质上,架构即代码是指编写代码(你可以使用高级语言或任何描述性语言)来
管理除了部署之外的配置和自动化配置基础设施。不同于基础设施自动化,它只
涉及多次复制步骤,并在多台服务器上执行它们。
自动化部署基本原理
尽管在执行任务时各种自动安装程序和配置工具在实现上有所不同,但大部分设
计原理是比较相似的。正如借助监控和度量收集工具可以发现,这些概念和设计
原理都源于高性能计算领域。因为高性能计算和网络运营在其基础架构上有着许
多相似点,网站运营社区采用了其中的许多方法和工具。在本节中,我们简要概
述主要目标并详细介绍每个目标。
目标 1:最小化提供新容量的时间
当你试图确认你的容量什么时候耗尽时,你必须考虑到新硬件的采购、安装和部
署所需环境的时间。如果你的容量在六周内耗尽,且你需要三周时间来增加新硬件,
这样一来你只有三周的时间用来部署、配置。自动化部署和配置工具通过最大限
度地控制整合机器接入网络,可以使这一过程所需要的时间最少。实现这一目标
的一个关键方面是拥有统一的硬件(请参阅侧栏供进一步讨论)。
目标 2:变化集中分布
当修改主机的配置时,最好有个中心配置库,通过它我们推进对服务器进行对应
的调整。因为中心配置库在此所起的作用相当于一个指挥塔台,通过它来有效管
理你的基础架构的各个部分。与服务器架构不同,在分布式架构中,分布式资源
有助于水平扩展,集中配置和管理环境有以下优点:
•
版本控制可用于所有配置:操作系统、应用程序或其他方面。
RCS/CVS/
Subversion
等一些工具用来跟踪基础设施的每一个变化的方方面面:谁引起的
变化?什么变化?何时变化?为什么变化?
•
使得安装和配置文件的复制和备份更加容易管理。
•
聚合配置和管理日志系统是理想的故障诊断资源。