上周五是7月的最后一个星期五,同时也是全世界系统管理员们的节日——系统管理员日。11年前,美国的IT系统管理员Ted Kekatos发起了这个节日,希望能与全世界那些不善言词,默默付出,却总是被遗忘在网络线堆的技术好人们共同庆祝,让人们在这一天想起还有这样一群默默付出的人。
鉴于系统管理员日的到来,国外的各个服务器相关的技术站点都展开了不同的活动庆祝。本文是Linux.com的Mark Hinkle献上的礼物,这个礼物是一组叫做“系统管理员工具箱”的系列技术文章。
另一方面,51CTO操作系统频道也在一直筹备给系统管理员们的礼物,那就是名叫运维的工作到底啥样儿的专题。这个专题将澄清有关系统管理员很闲、系统管理员没前景等各种传闻,并向所有读者们展示系统管理员们真实的生活。系统管理员和运维们也可以通过这个专题,看看国内外的同行们都是怎样工作的。这个专题目前仍在建设中,如果你有兴趣跟51CTO的朋友们分享经验,可以进入这个帖子参与讨论;如果您有意参与更多建设或进行投稿,可以直接与本专题的编辑联系:yangsai#51cto.com。
下面请系统管理员们先打开这份由Linux.com制造、51CTO翻译加工的礼物:《面向Linux系统管理员的开源工具链》
【51CTO 8月2日外电头条】今天的系统管理有两大明显趋势,它们是DevOps和进展稍微迟缓的敏捷运维运动。这些措施流行于许多Web 2.0和云计算公司,比如Twitter、谷歌还有雅虎,当然也不乏像Facebook这样其产品高度依赖IT技术的公司。但是,实际上这种做法也同样非常适合传统企业中的IT管理员们,这些企业往往都有大规模的基础架构和不切实际的工作负荷,需要提高工作效率来达成其业务目标。
DevOps鼓励与开发者们共同进行产品研发。系统管理员的角色经历了不断的变化,已经从被动执行重复系统建设任务的基础架构维护者演变成现在的系统设计和建设工程师。在过去,系统管理员可能在一批随机的脚本中搜集他们的专业领域知识;但是现在,精明的系统工程师们已经开始编写基础架构,并可以确保对于这些编码的理解和制度化能够遍及整个公司。(参考阅读:系统管理员与开发者界限日渐模糊)
据Red Monk的分析师Michael Coté说,“虚拟化和云计算总是在强调优化架构,让IT管理员们的工作更为简单,为公司节约开支。在此基础上,DevOps的理念是运用云技术来改善应用交付的过程,这将为整个应用程序注入敏捷软件开发和常用功能交付的概念。这一小小的目标需要进行可观的技术和文化重构,但是为了达到提高终端用户体验目的,这绝对值得一试。”
你可以找三个熟知自己行业条款的从业者,去问问他们如何定义这些条款,得到的三个答案可能会略有不同。DevOps和Agile并不被定义为是一次技术性改变,而是专业和文化上的改变。它们重新定义了IT管理员的职能:从系统和IT架构维护(传统系统管理员),向管理和定义可复制的、有弹性的和高度可用的IT系统转变(系统工程师)。
这一变化势必会带来一些战术上的改善,用以达成更高的可用性和工作效率。以下做法是敏捷系统工程师们最常使用的办法。(不了解敏捷的读者们可以参考51CTO开发频道的专题:初探敏捷开发)
- 基础架构自动化——相比起执行重复任务而言,管理员们需要创建机械化进程,让它们有效的使用工具。这些工具可以用来生成一致的结果并被团队中的其他成员所分享。
- 服务器版本控制——任何变化并不直接应用到服务器上,而是应用到一个中央版本库内。所有改变从中央版本库推送到服务器上,从而在出现错误的时候会有一个返回机制。
- 频繁的改进和发布/更新——旧的思维方式是,尽可能减少对服务器和架构进行改变(无论是次数还是规模)来降低风险。而敏捷的运维思路是,通过频繁的微小变化来改善服务器的性能,而由于每次的变化都很小,当出现问题的时候,他们可以轻易地跟踪那些影响架构的不利变化。
为了实现这些目标,系统工程师需要一个更强大的工具包。幸运的是,开源界为了这一目标已经研发了大量的工具。
#p#
开源工具链
软件开发者们对于工具链相当熟悉:一个程序的输出构成了另一个程序的录入,从而组成了一系列程序。比如说,使用GNU Emacs编辑器,GNU bin-utils和GNU编译器集(GCC)的组合。软件开发者们编写很多在其它程序中调用的程序与流程,而不是将同一段代码在所有的地方都重复一遍。
有了新生的DevOps和敏捷运维运动,运维人员们组成了社区,帮助人们用自己所喜爱的工具来定义属于自己的工具链。DevOps的工具链项目就是这些社区当中的一员。
正如软件开发商有不同的专用工具来串联成一条软件工具链(比如编辑、编译、构建脚本等),系统管理员也可以运用由这些能够实现自动管理功能和维护Linux服务器的工具组成的工具链。它们可以分为三大类:预备、配置管理和监控。
图1.1开源工具所适合的开源工具链
- 预备类工具可以使Linux服务器上的软件安装包自动化。它们借助服务器上的软件包系统比如rpm或者apt来安装软件包,有些甚至会做一些粗略的配置工作。
- 配置管理和自动化是用来设置参数或者开启一个新服务器上的服务。它们也可以用来把系统还原到遇到错误之前的状态。
- 监控工具用来收集服务器数据,从而生成可用性、性能和其它系统状态的报告。
整合系统管理工具
开源工具链对于维护高服务水平而言可以说是一件很好的礼物,因为自动化和准确无误的运作比手动解决问题更快、更有效率。如果你想保持五个九的可用服务水平(99.999%的正常运行时间的超低容错率系统),那么为了让服务水平不受影响,你在每一年中只允许有5分15秒的停机时间。对于一个管理员而言,这样的时间甚至来不及接收错误报告页,更不用说登陆到服务器进行问题诊断了。另外,除了通过监控和管理服务对问题作出及时反应与修复,也可以制定一种防止故障发生的机制。
构建工具链可以从使用服务器自动构建工具开始。服务器自动构建工具可以加速部署速度,并可以在短时间内大规模部署服务器,同时也可以让构建过程更容易复制。在发生严重故障时,还可以重建架构。
在早期,Linux用户可能会整理出一个软件包列表,发至rpm进行批量软件安装,这就是一个非常简单的工具链。后来,我们用Kickstart来执行无人值守的Linux安装。现在,Cobbler把这个功能提升到了一个新的高度:它实现了物理机与虚拟机的并行系统构建,并且可以进行DHCP和DNS的配置。
Cobbler还集成了其它的工具,比如用于配置管理自动化的Puppet等软件。这个工具可以在系统安装完毕后进行服务的自动更新。
PuppetLabs的创始人Luke Kanies指出,“无论是何种规模的公司,都可以使用Puppet来管理机器。从最初的安装到最后的使用寿命终止,所有构建服务器或者部署新应用版本的时候都可以完全避免人工干预。”
开源工具链的另外一个例子是集预备、配置和自动化工具于一身,比如由红帽资助的Genome项目。Genome是一系列用于维持云架构的工具。Genome可以部署多层次的网络应用,包括Apache反向代理层,JBoss应用服务器层,以及PostgresSQL数据库层。
图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译稿,转载请注明原文作译者和出处。】
【编辑推荐】