基于Linux的企业自动化实践:服务器的构建、部署与管理
上QQ阅读APP看书,第一时间看更新

1.1.2 解决挑战

面对这一挑战,我们认识到了标准化的需求。建立一个合适的SOE要做到以下几点:

·实现规模经济

·提高日常运营的效率

·让所有相关人员都能轻松快速地跟上企业变化的速度

·轻松地适应企业不断增长的需求

毕竟,如果一个环境的定义简洁,那么参与其中的每个人都会更容易理解和合作。这反过来意味着任务完成得更快、更容易。简而言之,标准化可以节省成本并提高可靠性。

必须强调的是,这是一个概念,而不是绝对的。建立这样一个环境没有对错之分,尽管有最佳实践存在。在本章中,我们将进一步探讨这个概念,并帮助你确定与SOE相关的核心最佳实践,以便你在定义自己的SOE时做出明智的决策。

让我们更详细地探讨这个问题。无论是基于Linux、Windows、FreeBSD还是任何其他技术,每个企业对其IT环境都有一定的需求。有时,这些标准被很好地理解和记录,而有时,它们只是暗示,也就是说,每个人都假设环境符合这些标准,但没有官方定义。这些需求通常包括以下几个方面:

·安全性

·可靠性

·可扩展性

·持久性

·可支持性

·易用性

当然,这些都是高层次的需求,而且常常是相互交叉的。

1.安全性

环境中的安全性是由几个因素共同建立的。让我们看看以下问题,以了解其中涉及的因素:

·配置是否安全?

·我们允许使用弱口令了吗?

·是否允许超级用户root远程登录?

·我们是否记录和审核了所有连接?

现在,在一个非标准的环境中,如何确保这些需求在所有Linux服务器上都实施了呢?要做到这一点,就意味着它们都是以同样的方式构建的,它们都应用了相同的安全参数,而且从来没有人重新访问这个环境来改变任何东西。简而言之,这需要相当频繁的审计来确保合规性。

但是,如果环境已经标准化,并且所有服务器都是从一个公共源代码或使用一个公共自动化工具构建的(我们将在本书后面部分演示),那么你就可以信心十足地说你的Linux资产是安全的。

当然,基于标准的环境不是绝对安全的,如果在此环境的构建过程中存在导致某个漏洞的问题,自动化意味着此漏洞将被复制到整个环境中!了解环境的安全要求并谨慎地实施这些要求是很重要的,要持续地维护和审计环境,以确保它保持安全级别。

安全性还可以通过修补程序来实现,这些修补程序可确保你运行的任何软件都不存在允许攻击者危害你的服务器的漏洞。一些Linux发行版的使用寿命比其他发行版长。例如,Red Hat Enterprise Linux(以及CentOS等衍生产品)和Ubuntu LTS发行版都有很长的、可预测的生命周期,可以很好地作为Linux资产的候选产品。

因此,它们应该成为你的标准的一部分。相比之下,如果使用Fedora这样的前沿(bleeding edge)Linux发行版,可能是因为它当时有最新的软件包,那么你可以确定其生命周期将很短,并且更新将在不远的将来停止,因此你可能会遇到潜在的未修补漏洞,并且需要升级到Fedora的较新发行版本。

即使升级到较新版本的Fedora,有时软件包也会变得孤立(orphaned),也就是说,它们不会包含在较新的版本中。这可能是因为它们被另一个软件包取代了。不管是什么原因,将一个发行版升级到另一个发行版可能会造成错误的安全感,除非研究透彻,否则应该避免升级。所以,标准化有助于确保良好的安全实践。

2.可靠性

许多企业期望他们的IT操作99.99%的时间都能正常运行。实现这一点的部分途径是健壮的软件、相关错误修复的应用程序和定义良好的故障排除过程。这可确保在最坏的停机情况下,停机时间尽可能少。

正如我们在关于安全性的讨论中所说的,标准化在这里同样有帮助,一个好的底层操作系统选择可以确保你能够持续访问错误修复和更新,并且如果你知道你的业务需要供应商备份以确保业务连续性,那么,选择一个有支持合同的Linux操作系统(例如,Red Hat或Canonical提供的)是有意义的。

同样,当所有服务器都按照一个定义良好且易于理解的标准构建时,对它们进行更改便会产生可预测的结果,因为每个人都知道它们在使用什么。如果所有服务器的构建略有不同,那么善意的更改或更新可能会产生意外的后果,并导致代价高昂的停机时间。

再次强调,使用标准化,即使出现最坏的情况,每个相关人员都应该知道如何处理问题,因为他们知道所有服务器都是基于特定的基本映像构建的,并且具有特定的配置。这些知识和信心减少了故障排除时间,并最终缩短了停机时间。

3.可扩展性

所有企业都希望自己的业务增长,而且大多数情况下,这意味着IT环境需要扩展以应对不断增长的需求。在以非标准方式构建服务器的环境中,扩展环境变得更具挑战性。

例如,如果水平扩展(将更多相同的服务器添加到现有服务中),则新服务器都应具有与现有服务器相同的配置。在没有标准的情况下,第一步是确定初始服务器集是如何构建的,然后克隆这个初始服务器集并进行必要的更改以生成更多单独的服务器。

这个过程有些麻烦,然而,在标准化的环境中,调查步骤是完全不必要的,横向扩展成为一个可预测的、可重复的、照常进行(business-as-usual)的任务。它还确保了更高的可靠性,因为在缺少非标准配置项的情况下,新服务器不会产生意外的结果。人类是不可思议的,聪明的人既能够把人送上月球,也同样能够忽略配置文件中的一行。标准化的思想是为了降低这种风险,因此可以使用经过深思熟虑的操作系统模板快速高效地扩展环境,我们将在本章继续讨论这个模板的概念。

4.持久性

在部署服务时,有时需要特定的软件版本。让我们以在PHP上运行的Web应用程序为例。现在,假设由于历史原因,特定企业已经在CentOS 6(或RHEL 6)上实现了标准化。这个操作系统只配备了PHP 5.3,这意味着如果你突然使用一个只支持PHP 7.0及更高版本的应用程序,则需要弄清楚如何托管它。

一个显而易见的解决方案是推出Fedora虚拟机映像。毕竟,它与CentOS和RHEL共享类似的技术,并且包含了许多更新的库。我对这种解决方案有几方面的切身体会!不过,让我们从全局考虑。

RHEL(以及基于此的CentOS)的使用寿命约为10年,具体取决于你购买的时间点。在企业中,这是一个很有价值的建议——这意味着可以保证你构建的任何服务器从构建之日起最多10年(甚至更长)都有修补程序和支持。这与我们之前关于安全性、可靠性和下一节中的可支持性的观点有紧密的联系。

但是,在Fedora上构建的任何服务器的使用寿命都在12~18个月(取决于Fedora的发布周期)——在企业环境中,必须在12~18个月之后重新部署服务器是一个不必要的难题。

这并不是说在Fedora或任何其他快速演变的Linux平台上都没有部署的理由,只是,在一个安全性和可靠性至关重要的企业中,你不太可能想要一个生命周期短的Linux平台,因为短期收益(较新的库支持)将在12~18个月内被缺少更新和需要重建/升级平台所带来的痛苦所替代。

当然,这在很大程度上取决于你对基础设施的处理方式,有些企业对其服务器采用类似容器的处理方式,并在每次新的软件发布或应用程序部署时重新部署服务器。如果你的基础设施和构建标准是由代码(如Ansible)定义的,那么完全可以在对你的日常操作影响相当小的情况下完成这项工作,而且不太可能有任何一台服务器的操作系统版本保持过长的时间,导致过时或不受支持。

归根结底,选择权在你,你必须确定哪条路线能为你带来最大的商业利益,而不会使你的运营面临风险。标准化的一部分是对技术做出合理的决策,并在可行的情况下采用这些决策,你的标准可能包括频繁的重新构建,以便可以使用Fedora之类的快速演进的操作系统。同样,你也可能会认为标准是服务器将有很长的使用寿命,并且升级到位,在这种情况下,最好选择一个版本相对稳定的操作系统,比如Ubuntu LTS版本或RHEL/CentOS。

在下一节中,我们将更详细地了解SOE如何受益于可支持性。

5.可支持性

如前所述,标准化环境带来了两个好处。首先,一个精心选择的平台意味着很长的供应商支持生命周期。这也意味着供应商(对于RHEL这样的产品)或社区(对于CentOS)的长期支持。一些操作系统(如Ubuntu服务器)可以直接从Canonical获得社区支持或付费合同。

然而,可支持性不仅仅意味着来自供应商或整个Linux社区的支持。记住,在企业中,在任何外部人员介入之前,你的员工才是你的一线支持。现在,想象一下拥有一支一流的Linux团队,并向他们展示由Debian、SuSe、CentOS、Fedora、Ubuntu和Manjaro组成的服务器。它们之间既有相似之处,也有巨大的差异。在它们之间有4种不同的软件包管理器用于安装和管理软件包,这只是一个示例。

虽然完全可以支持,但它确实给你的员工带来了更大的挑战,这意味着,任何加入公司的人都需要具备全面且丰富的Linux经验,或者需要全面的入职流程。

在一个标准化的环境中,你可能会使用不止一个操作系统,但是,如果你可以使用CentOS 7和Ubuntu Server 18.04 LTS来满足所有需求(并且知道,由于你的选择,你将在未来几年内受到保护),则可以立即减少Linux团队的工作量,使他们能够花更多的时间创造性地解决问题(例如,使用Ansible自动化解决方案),花更少的时间来找出操作系统之间的细微差别。正如我们讨论过的,在出现问题时,由于更熟悉每个操作系统,因此可以耗费更短的时间进行调试,从而缩短停机时间。

这使我们很好地进入了易用性这个主题。

6.易用性

最后一个类别与前面最后两个类别有很大的重叠,也就是说,你的环境越标准化,给定的一组员工就越容易掌握它。这会自动提升我们目前讨论的所有好处,包括缩短停机时间、更容易招聘合适的员工等。

在阐述了SOE帮助解决的挑战之后,我们将在下一节继续分析这种环境,以便从技术角度理解它。