




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
持续集成之“自动化部署” 管理资料 在前文依赖管理中,我们讨论了如何在代码变得庞大,组件增多的情况下,做好外部库和内部组件依赖管理,从而提高构建效率, 星期一早上,Alice一进办公室,就看到一脸倦意的Joe坐在椅子上,喝着咖啡。 “今天怎么来得这么早?看样子,你没睡好啊?”Alice问道。 “当然啦,昨天晚上我就来了。”Joe无精打采地回答道。 “怎么啦?” “还不是因为新版本上线出了点儿问题”,Joe说道。“看来我们要把部署这件事好好讨论一下,再这样下去,不只我要来,你们也要和我一样啦!呵呵!” 当天下午,Joe邀请了运维团队的主要负责人Tom和Steven,召开了一个关于部署问题的讨论会。 Joe说道:“先请运维部门的Tom介绍一下上周末的新版本上线过程和发现的问题吧。” Tom描述了上线部署全过程。 “上周末上线部署时出现的情况是:在本次部署之前,我们的集群中,有两台机器因HotFix,其程序配置被修改过,与其它机器不一致。因此,该机器上的部署失败,导致部分服务不可用。运维人员查了很长时间没有发现问题,星期日打电话把Joe叫来帮助我们查问题时,Joe才回忆起有那么一次HotFix,但当时负责的运维人员已经离职,没人其它运维人员知道这件事情。”Tom说道,“我们对问题进行了分析,认为应该加强我们的上线流程管理,对于那种HotFix也应该发起一个审批流程,并且在该流程中不但要主要负责人审批,而且要对相关人发出周知通报。另外,我们的运维人员应该对上线单进行严格审核,并对部署中所涉及的机器进行更详细的验证,对生产环境中的任何修改都要进行登记。即使非常紧急,也要在事后补充记录一下。” “这些方法固然很好,但其实我们可以采用更好的办法来解决。”Joe接着说到,“假如我们在部署运维工作也能够借鉴持续集成的做法,利用一些最佳实践,那么这次部署事故根本就不会发生。比如(1)将部署操作脚本化;(2)进行持续部署验证测试;(3)部署脚本通用化,环境变量等使用配置方式传入;(4)让测试环境尽可能与生产环境一致,至少在成本条件允许的情况下尽量保持相似;(5)对环境配置进行版本控制;(6)任何人不得直接对生产环境进行直接的手工操作,等等。” Bob说道:“嗯,其实那些上线步骤中所描述的内容都可以进行脚本化,之前也讨论过这一问题。目前上线步骤中的内容基本都可以写成自动化脚本,即使现在不行,也可以通过少量改造,使其可以自动化。但问题是. .”Bob犹豫了一下,接着说道,“如何来验证这些脚本是正确的呢?” Joe 说道:“保证运维人员是如何验证上线申请单上的上线步骤是正确的呢?同样,我们也可以做一些部署验证就行了。这些部署的验证也可以通过脚本方式来进行,比如在安装之前验证程序所用端口没有被占用,安装之后验证该端口已被该程序所使用;比如安装之前验证程序日志中记录了该程序已停止运行,在安装之后验证程序日志中刻录该程序已重新启动;等等”。 Alice问道:“那我们还要调试这些部署脚本呀?没有线上生产环境,我们怎么调试呢?” Joe 回答道:“首先我们应该加强基础设施这方面的投入。在力所能及的情况下,让测试环境与生产环境相似。比如,生产环境可能有100台机器的集群,那我们至少要找两台机器的集群做测试环境。生产环境中使用Tomcat,我们的测试环境和开发环境中也应该使用相同的Tomcat,而不用Jetty。” Joe 停下来,喝了一口咖啡,接着说道:“这样一来,我们的部署脚本就可以在开发环境、测试环境进行测试了。当开发人员进行本地测试时,可以使用这个脚本进行单机的部署。当测试人员进行集成测试时,可以使用同样的脚本进行多机部署。与机器数量无关的配置可以统一放在某配置文件中, Tom问道:“那这些脚本由谁来写?由谁维护呢?” Joe回答道:“谁最了解情况,就由谁来写。其实,我们也应该像对待产品代码一样,来对待这些脚本和配置文件,把它们放在我们的代码库里,进行版本控制。无论是运维人员还是开发人员,或者测试人员,对这些脚本的修改都应该提交到版本控制库中,除非他所做的修改只是为了测试他自己在本地的程序,那就不用提交了。这样一来,谁在什么时候对什么进行了修改,为什么做修改?这个审计问题就可以直接由版本控制系统来回答,也就做到了所有内容可追踪了。” “听上去,对于配置文件、脚本等进行版本管理的确是解决了运维部署的很多问题。但如何对环境管理进行版本控制呢?”Tom问道。 Joe想了想,说道:“环境管理比较复杂。一般来说,环境包括几个层次,包括硬件及网络配置、操作系统、我们的应用程序所依赖的软件堆栈及其配置、以及我们的应用程序运行时所需的数据及其配置。目前对我们来说,对于硬件及网络配置、操作系统这两层来说,有两种方式进行管理。一种是利用一些专用软件进行自动化的远程配置,即只要给机器加电,就可以通过一些技术对一台机器进行系统的安装与配置。另一种是使用虚拟化技术来进行系统配置管理。对我们现在的游戏平台来说, 使用后者即可。只要将基本的环境做成虚拟机镜像文件,并将其作为环境基线进行版本管理。当然,由于镜像通常较大,所以最好不要使用常见的版本控制工具(如subversion,Git等)进行,而使用某种简单的机制即可。” Joe停了一下,看看大家没有提问的意思,于是接着说道:“至于基于其上的软件堆栈及堆栈中各软件的配置管理完全可以利用类似于CfEngine,Puppet或Chef的工具进行。这些软件环境管理工具 都提供某种领域专属语言来描述软件堆栈配置,并保存在文本文件中。这些工具一般通过服务器/客户端的工作方式运行,客户端向服务器发送请求,验证本机器节点的软件配置是否与服务器中的设置相符,如果不符,就会自动更新。尤其重要的是,这些更新操作都是幂等的,即无论这些配置在该客户机上执行多少遍,每次的结果状态都是相同的。另外,它们通常能与版本控制工具集成。所以,只要将我们的软件堆栈配置管理信息放到版本控制库中,就可以同时管理数台机器。” “oh, 对不起,Joe,我想打断一下,”Tom问道:“你能画一个图来解释一下你刚才所说的这种软件环境配置管理工具吗?” “当然没问题。”Joe拿起笔在白板上画了一个Puppet的工作示意图,如下图所示。 “看上去清楚多啦。”Tom笑道,“通过这种方式,我们就只需要将版本控制库中保存的配置信息检出到本地,进行相应的修改,再提交到版本控制库中,这种工具就会自动帮我们完成必要的配置更新了。是这样的吗?” “对,”Joe点了点头,说道,“如果我们的部署脚本也是通过这种方式来做的,那么我们就根本没有必要到生产环境的机器上,进行手工操作了。而且,Puppet还提供一种Try Run功能,可以进行配置变更的模拟,让你能够对比一下变更前后的不同之处。” Tom说道:“你说的这些听上去都不错。但并不是所有人都能够修改生产环境的配置信息的。所以我们还是需要一个软件平台来管理上线的申请审批流程。” “在任何企业中,这种申请审批流程和生产环境变更的授权都是必要的,但这仅仅是审核流程的操作。而真正与软件部署相同的具体操作都不应该在这种审批流程当中。”Joe回答道。 Tom接过话来,说道:“嗯,这样的话,我们仍旧能够做到:有权限的人才能真正修改生产环境的配置文件,同时达到了无人真正直接操作生产环境的目的,避免了手工误操作带来的问题。” 参加本次会议的测试人员和运维人员对这种做法产生了浓厚的兴趣,并要求开发人员给予配合,将目前游戏平台的部署自动化。Tom说道:“这就是我们运维工作的一个方向。让枯燥易出错的重复性手工操作变成受控的自动化,从而解放运维人员,让我们可以关注于更加有价值的运行监控等工作中。” Alice说道:“这看上去还是有一定的工作量啊。” “当然,我们可能需要做一些工作,但我想这些投入是值得的。”Joe回答道。“同时,还需要各种角色之间更紧密的配合,而不是像之前那样,通过一个代表上个世纪八十年代先进技术的办公自动化平台来描述部署上线步骤这类关键的业务操作信息。” Tom也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电缆基本知识培训内容总结
- 小学班主任如何做好学生心理健康教育工作
- 电的基础知识培训课件
- 电煤知识培训总结课件
- 北京化学物理高考试卷及答案
- Pentyl-4-hydroxybenzoate-d11-Amylparaben-d-sub-11-sub-生命科学试剂-MCE
- Argininic-acid-13C6-L-Argininic-Acid-sup-13-sup-C-sub-6-sub-生命科学试剂-MCE
- N-Ethyl-3-4-methylenedioxy-aniline-d5-N-Ethyl-3H-1-2-benzodioxol-6-amine-d-sub-5-sub-生命科学试剂-MCE
- 软件开发合同(编号2)
- 护士公招考试题及答案
- 2025云南昆明巫家坝建设发展有限责任公司招聘23人笔试备考题库及答案解析
- 2024年山东省节能与双碳促进中心招聘真题
- 热电厂锅炉安全知识培训课件
- 高二奋发+勇攀高峰+课件-2025-2026学年高二上学期开学第一课主题班会
- 役前训练考试试题及答案
- IEC60335-1中文版本大全
- 小学六年级下册科学-《细胞》青岛版(13张)ppt课件
- 危急值报告制度及流程图
- T∕CVIA 41-2014 液晶电视屏主流尺寸规范
- 吴学文实战经验分享
- 企业注销鉴证工作底稿
评论
0/150
提交评论