什么是不可变服务器(immutable servers)?

125次阅读
没有评论

问题描述

有关不可变服务器(immutable servers)的一些问题,例如:
– 如何在不丢失进行事后分析的能力的情况下实现不可变服务器模式?
– 配置管理工具在不可变基础设施中扮演什么角色?

对于这个概念,我知道它与服务器有关,但是对于“不可变”一词的语法,我认为它与“不可能改变”有关。如果我的猜测接近,我不知道到底是什么不能改变(我怀疑它与声卡之类的东西无关…)。

我的问题:
– 在DevOps的背景下,什么是“不可变服务器”?
– 为什么要使用它们?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

不可变服务器(Immutable Servers)是什么?

不可变服务器是指在创建后无法更改的服务器(除了更新和安全补丁)。与其在服务器上更改软件,您可以使用所需软件创建一个新的服务器镜像,然后终止旧服务器。

这个概念有助于确保您的测试、开发和QA服务器都是相同的,这对于多种原因都很重要,超出了本问题的范围。不可变服务器的另一个好处是能够将应用程序回滚到旧服务器。例如,如果我需要更改生产服务器1上的K,我可以启动服务器2并更改K。然后,经过10分钟,我注意到K破坏了我的应用程序,而不是立即修复它,这可能需要几个小时并可能导致客户的停机时间,我将流量重定向回服务器1,同时我找出服务器2出了什么问题。

为什么使用不可变服务器?

不可变服务器的一个重要优点是,它们确保了服务器的一致性和可靠性,并提供了简单、可预测的部署过程。它们可以减少服务器在运行过程中出现问题的可能性,例如服务器崩溃等。

但是,您必须知道如何通过全面的部署自动化和快速的服务器配置来高效地创建不可变服务器。

想象一下,如果您在挖掘比特币,您不希望服务器崩溃导致停机时间,您需要尽快恢复它,因此不可变基础设施被认为是解决方案。

实施方式

尽管不可变服务器的一般思想很清楚,但实施方式有很多细微差别。例如,有些方法建议根本不更新服务器,而是始终替换服务器。这是因为更新会导致部署的服务器在不同时间启动并经历多个不同的更新过程,这会导致服务器集合不均匀,并可能导致服务器处理工作的方式存在细微差异。另一个流行的变化点是关于对服务器的远程访问的纪律。有些人喜欢完全禁用对服务器的远程管理访问,以确保不会进行手动维护。

历史背景

据我所知,“不可变服务器”一词是由Kief Morris提出的,但这个想法本身要早得多。1999年,FreeBSD jails已经普及了完全自动化配置一次性计算环境的想法,这是我在听到这个名字来描述这种技术之前多年开始实施“不可变服务器”模式的方式。

不可变性,以基于CD-ROM的物理不可变性的形式,也是制造可信计算系统的一种流行措施,但这与不可变服务器模式不同。


参考资料:
Martin Fowler的不可变服务器

正文完