Chef 11 已经为超大规模 Web 运维做好准备

  • Aslan Brooke
  • 臧秀涛

2013 年 2 月 21 日

话题:ErlangDevOps

本月初 Opscode发布了 Chef 11,为满足超大规模 Web 运维的需求增强了可伸缩性。在保持向后兼容的同时,Opscode 用 Erlang 重写了全部核心服务器 API。为表现重写采用 Erlang 这一事实,Opscode 将核心服务器 API 更名为“Erchef”。他们也将服务器源代码从客户端分离出来,并将服务器分解为多个用 Erlang 编写的组件对象。

Seth Falcon 跟进写了一篇博文,提供了关于 Chef 11 的一些额外背景信息,其中包括:

Erlang 的进程模型、多核可伸缩性、以进程为单位的垃圾回收模型所带来的软实时性能以及不共享任何内存等特性使之非常适合于高容量 Web 服务的编写。

此外,关于用 Erlang 重写会有多大改进,Timothy Prickett Morgan 写道:

相对于用 Ruby 编写的 Chef 10,Chef 11 的内存使用减少了一个数量级。

Chef 11 能够在一台服务器中管理多达10000 个节点,比 Chef 10 服务器能处理的节点数超出 4 倍多。

Chef 11 的 Web 用户界面仍然使用 Ruby,不过现在不再运行在Merb之上,而是运行在 Rails 3.2 框架上,可以通过 API 与“Erchef”进行交互。Omnibus 打包现在使将核心服务器 API 和 GUI 发布为针对多种平台的原生包管理系统中单独的包成为可能,支持的平台包括:Enterprise Linux [x86_64] (支持版本有 5 和 6), Ubuntu [x86_64] (支持版本有 10.04、10.10、11.04、11.10、12.04 和 12.10)。Opscode 还将发布面向现有 Chef 10 开源服务器用户的迁移工具。

Opscode 在 Chef 11 的客户端工具中也添加了很多改进,其中包括如下几个方面的功能修改:属性、安全、远程文件镜像、片段模板(partial template)、锁文件和 LWRP。然而,这些改进和新特性也带来了一些破坏性的变化。要想部署 Chef 11 的服务器组件并运行 Chef 10 客户端,工程师应该升级操作手册(cookbook),使之满足 Chef 11 客户端组件的需求。

Chef 11 客户端工具集的其他改进包括:

  • Knife 命令行工具现在包含了 knife-essentials。
  • Knife ssh 会基于远程命令行执行情况返回退出代码。
  • Shef 更名为“chef-shell”。
  • 包含了一个用于运行单一操作手册的新工具“chef-apply”。

Chef 11 继续以开源产品形式提供,不过现在也有来自Opscode 的支持

查看英文原文Chef 11 is Ready for Hyperscale

ErlangDevOps