运营将来时:不可变基础设施与内建故障恢复

在上个月伦敦Velocity大会的演讲中,Vagrant的缔造者Mitchell Hashimoto介绍了他对于“未来的运营”的愿景,在其中谈到了“不可变基础设施”与内建的故障恢复。

Mitchell的愿景涉及了可重复的环境(通过配置管理工具)、超快部署时间(通过预建的静态映像)和服务编制时间(通过分散式编制工具)。在这个情景中,配置全新的服务器与更换故障服务器并没有什么不同。

这一愿景是构筑在不可变基础设施的理念之上的。在该理念中,机器在启动时得以配置,并将永远不会进行修改。后续出现的任何环境变更,都会通过部署新机器并取代过时的不可变机器(并出现一些警告,例如复杂的数据库服务器变更,或是诸如CSS修改等小型应用变更)来实现。这一理念曾被一些人视为空想,因为现今在任何系统中都存在大量的外部依赖。

对Mitchell来说,这个问题由于目前诸如Puppet或Chef等配置管理工具而愈加明显。由于包依赖、网络可用性或环境描述中的变更(Chef的cookbooks或Puppet的manifests),相同服务器的可重复部署难以得到保证。Mitchell认为,可预见性的关键是使用预建并且经过测试的机器映像(二进制)——类似于从源代码编译得来的软件二进制包。

在Mitchell看来,机器映像之所以在过去有着不太好的名声,是因为它们难以维护。但是借助当前的配置管理工具,映像现在易于进化,并且以持续集成的方式构建。Packer等新工具能够基于单一的模板和环境描述集合,为多管理程序(VirtualBox、VMWare等等)构建映像,从而进一步简化了任务。

然而,在映像部署之后(而不是作为部署流程本身的一部分),依旧需要执行服务发现和编制任务(比如建立负载均衡)。Serf是Mitchell开发的另一个用于该领域的工具。他表示,Serf的设计初衷是为了通过松耦合代理和基于流言机制的成员制(新的代理必须与已加入的现有代理联系,才能够加入系统),支持故障探测和恢复。类似地,某个代理探测到故障节点,并向其他代理“传播(gossip)”这一消息——由它们决定是否需要替换该节点。

Mitchell宣称,这一切的主要价值在于机器映像生成过程中的编制速度,以及配置管理流程的简化(只需要配置Serf代理服务,然后Serf将在机器启动的时候自动启动)。

在问答环节,Mitchell还表示,在他看来Docker(用于应用容器)、Packer(用于公共基础设施)和Serf(用于服务编制)的共存毫无问题。

查看英文原文:FutureOps with Immutable Infrastructures and Built-in Failure Recovery

你可能感兴趣的:(运营将来时:不可变基础设施与内建故障恢复)