本月初Opscode发布了Chef 11,为满足超大规模Web运维的需求增强了可伸缩性。在保持向后兼容的同时,Opscode用Erlang重写了全部核心服务器API。为表现重写采用Erlang这一事实,Opscode将核心服务器API更名为“Erchef”。他们也将服务器源代码从客户端分离出来,并将服务器分解为多个用Erlang编写的组件对象。
\u0026#xD;
Seth Falcon跟进写了一篇博文,提供了关于Chef 11的一些额外背景信息,其中包括:
\u0026#xD;
\u0026#xD;Erlang的进程模型、多核可伸缩性、以进程为单位的垃圾回收模型所带来的软实时性能以及不共享任何内存等特性使之非常适合于高容量Web服务的编写。
\u0026#xD;
\u0026#xD;
此外,关于用Erlang重写会有多大改进,Timothy Prickett Morgan写道:
\u0026#xD;
\u0026#xD;相对于用Ruby编写的Chef 10,Chef 11的内存使用减少了一个数量级。
\u0026#xD;Chef 11能够在一台服务器中管理多达10000个节点,比Chef 10服务器能处理的节点数超出4倍多。
\u0026#xD;
\u0026#xD;
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开源服务器用户的迁移工具。
\u0026#xD;
Opscode在Chef 11的客户端工具中也添加了很多改进,其中包括如下几个方面的功能修改:属性、安全、远程文件镜像、片段模板(partial template)、锁文件和LWRP。然而,这些改进和新特性也带来了一些破坏性的变化。要想部署Chef 11的服务器组件并运行Chef 10客户端,工程师应该升级操作手册(cookbook),使之满足Chef 11客户端组件的需求。
\u0026#xD;
Chef 11客户端工具集的其他改进包括:
\u0026#xD;
- Knife命令行工具现在包含了knife-essentials。\u0026#xD;
- Knife ssh会基于远程命令行执行情况返回退出代码。\u0026#xD;
- Shef更名为“chef-shell”。\u0026#xD;
- 包含了一个用于运行单一操作手册的新工具“chef-apply”。\u0026#xD;
Chef 11继续以开源产品形式提供,不过现在也有来自Opscode的支持。
\u0026#xD;
查看英文原文:Chef 11 is Ready for Hyperscale