开源工具链

软件开发者们对于工具链相当熟悉:一个程序的输出构成了另一个程序的录入,从而组成了一系列程序。比如说,使用GNU Emacs编辑器,GNU bin-utils和GNU编译器集GCC)的组合。软件开发者们编写很多在其它程序中调用的程序与流程,而不是将同一段代码在所有的地方都重复一遍。

有了新生的DevOps和敏捷运维运动,运维人员们组成了社区,帮助人们用自己所喜爱的工具来定义属于自己的工具链。DevOps的工具链项目就是这些社区当中的一员。

正如软件开发商有不同的专用工具来串联成一条软件工具链比如编辑、编译、构建脚本等),系统管理员也可以运用由这些能够实现自动管理功能和维护Linux服务器的工具组成的工具链。它们可以分为三大类:预备、配置管理和监控。

开源工具所适合的开源工具链
图1.1开源工具所适合的开源工具链

整合系统管理工具

开源工具链对于维护高服务水平而言可以说是一件很好的礼物,因为自动化和准确无误的运作比手动解决问题更快、更有效率。如果你想保持五个九的可用服务水平99.999%的正常运行时间的超低容错率系统),那么为了让服务水平不受影响,你在每一年中只允许有5分15秒的停机时间。对于一个管理员而言,这样的时间甚至来不及接收错误报告页,更不用说登陆到服务器进行问题诊断了。另外,除了通过监控和管理服务对问题作出及时反应与修复,也可以制定一种防止故障发生的机制。

构建工具链可以从使用服务器自动构建工具开始。服务器自动构建工具可以加速部署速度,并可以在短时间内大规模部署服务器,同时也可以让构建过程更容易复制。在发生严重故障时,还可以重建架构。

在早期,Linux用户可能会整理出一个软件包列表,发至rpm进行批量软件安装,这就是一个非常简单的工具链。后来,我们用Kickstart来执行无人值守的Linux安装。现在,Cobbler把这个功能提升到了一个新的高度:它实现了物理机与虚拟机的并行系统构建,并且可以进行DHCP和DNS的配置。

Cobbler还集成了其它的工具,比如用于配置管理自动化的Puppet等软件。这个工具可以在系统安装完毕后进行服务的自动更新。

PuppetLabs的创始人Luke Kanies指出,“无论是何种规模的公司,都可以使用Puppet来管理机器。从最初的安装到最后的使用寿命终止,所有构建服务器或者部署新应用版本的时候都可以完全避免人工干预。”

开源工具链的另外一个例子是集预备、配置和自动化工具于一身,比如由红帽资助的Genome项目。Genome是一系列用于维持云架构的工具。Genome可以部署多层次的网络应用,包括Apache反向代理层,JBoss应用服务器层,以及PostgresSQL数据库层。

Genome架构
图1.2  Genome架构

上述大部分工具都是实时的,可以用来进行变动并执行某些任务。然而,它们却缺乏关于当前系统状况的信息,于是监控工具就有了用武之地。对于传统的系统管理员而言,监控无非是在发生错误的时候通过一个页面或者一封邮件提醒他们。但是,监控工具比如Nagios、OpenNMS和Zenoss Core)能够提供更为完善的服务器性能检测。这些信息告诉管理员们有关运行中的工具正处在怎样的状态下。它们中的一些甚至可以提供在其它工具中开启程序的界面。例如,Zenoss Core可以在一个检测状态台上通过Cfengine、Chef或者Puppet来重新配置服务。

在一次O’Reilly Velovity的会议上,我们曾经进行过一次叫做DevOps GameDay的演示。这次演示由一个同时托管于东部和西部海岸的亚马逊EC2数据中心的网络应用程序组成。在西海岸的管理员制造了一些服务器故障,Zenoss Core对架构进行了监测,发现了故障并且通知OpsCode的Chef采取行动。Chef随后通过Dynect API更新了Dynect平台上的服务,从而恢复了向东海岸设备的正常数据传输。每次在新的服务器上线时,Chef都能够将新情况推送至Zenoss,并开始在补救架构中对它们进行监测。

网络应用程序故障工具链示例
图1.3 网络应用程序故障工具链示例

这次演示让大家认识到架构自动化改进系统恢复的能力。在这种情况下,系统能够保持内置冗余和多个网路服务器以及DNS之间的平衡。当系统发现了故障时,架构可以在90秒内进行自动恢复。此外,虽然这只是一个简单的演示,但是同样的设计可以运用到其它的工具和情景中去。

总结

多年以来,专有软件管理厂商一直在尝试通过广泛的管理套件来提供完整的服务周期管理。这些产品通常在一个秘密环境下进行研发,然后通过收购规模较小的公司的技术来进行不断地补充。这种东拼西凑的方式往往让他们出售给大多数用户的产品有着一长串的功能,但事实上总是效果少于承诺。

开源工具对于管理架构的好处不言而喻。首先,它们为用户提供了选择余地。其次,技术得到了开放的发展,而终端用户能够更好的诠释功能集成软件的发展。第三,开源工具促进创新,并且极具包容性,它鼓励大家的参与,因为使用它们很少会受到限制,这将有利于它们的发展。最后,开源软件的氛围利于开放标准、互操作性和开放API,这使得集成变得更为简单。

Opescode公司服务部副总裁John M.Willis说到,“在云中,架构管理可以不再依赖节奏缓慢的非集成遗留软件。在Opscode,我们把开源软件、自动化架构和系统集成看做是高度可扩展系统的最后路程。今天的架构需要快速、频繁、灵活的管理。依赖于非集成的封闭方案不可能跟上不断变化的IT世界的步伐。开放API和单触摸点交易是高度可扩展操作的新标准。”

无论你的基础架构如何,都可以试试看使用开源工具创建属于你自己的工具链,也许会有想象不到的收获。

51CTO.com译稿,转载请注明原文作译者和出处。】

原文:http://www.linux.com/news/enterprise/systems-management/335742:open-source-toolchains-for-linux-systems-administrators


相关内容