企业级 Jenkins 数据备份大法

本文作者

景韵,Certified Jenkins Engineer,DevOps 时代联合发起人,高效运维社区核心成员,Certified DevOps Master,GOPS 全球运维大会优秀讲师。先后就职于用友、乐视,从事持续交付、DevOps 落地改进工作。曾主导用友集团DevOps 整体改进与持续交付平台建设;负责乐视EUI 持续集成方案改进。

雷涛, 百度工程效率部工具产品架构师,Certified Jenkins Engineer,Certified Scrum Master。先后就职于新浪、摩托罗拉、诺基亚、西门子、爱立信、乐视等国内外知名企业,专注于企业级软件工程效率提升、DevOps 解决方案、持续交付和软件配置管理等领域。

李华强,新乐视 SCM 组资深 DevOps架构师,Certified Jenkins Engineer,Jenkins Area Meetup 讲师。曾就职于飞维美地、爱立信、北电网络等多家外企,长期负责公司配置管理、持续集成等工作。

如何驱动持续交付与DevOps转型与落地?如何真正打破部门墙?如何实现端到端的服务交付?答案都是:用Jenkins!

相信大部分IT业者都应该听说过或者使用过Jenkins,研发工程师使用 Jenkins 执行编译打包,测试工程师使用 Jenkins 执行自动化测试,运维工程师使用Jenkins执行批量操作和自动化部署,Jenkins可谓是居家必备的神器。

Jenkins的前身Hudson诞生于2004年,由一名Sun公司的年轻工程师 Kohsuke Kawaguchi(KK)研发,一开始主要用于满足工程师本人的自动化需求,后来不断有开源爱好者贡献代码。2010年Oracle收购Sun后不久,Hudson和Sun公司其他著名开源软件Java、MySQL等一样面临抉择。2011年初,社区投票决定基于Hudson创建新开源项目——Jenkins。 在社区努力下,Jenkins发展远超Hudson, 逐渐成为最流行的开源工具之一,可以说是开源赋予了Jenkins全新的生命力。

Jenkins从解决工程师的切身需求出发,跟随社区一起成长,逐步从自动化工具升级为持续集成引擎、持续交付核心工具、DevOps核心工具。KK目前对Jenkins的定位是:Jenkins is the Hub of CD/DevOps Ecosystem,即Jenkins是持续交付/DevOps生态的核心。

Jenkins Core 提供了一个平台,借助Jenkins开源社区的力量,以插件的方式实现了一个持续交付与DevOps的生态系统。尤其是2.0后,Jenkins提供了对Pipeline的原生支持,而Pipeline又是持续交付的核心实践。Pipeline可帮助团队打通从代码提交到发布上线的端到端的交付过程,整合多角色(研发、测试、运维、安全等)职能、实践与工具集合,再配合BlueOcean的Pipeline可视化查看和编辑功能,能够让持续交付流水线设计变得更加容易实现。结合Jenkinsfile的使用,将流水线的编排以文件的方式采用版本控制系统管理起来,能够轻松实现Pipeline as Code。

  • 第十八计 Jenkins文件数据备份和恢复验证要常做,备份Archive要谨慎

Jenkins 应用是基于文件系统的,所有的配置和数据都存储在文件系统上。因此Jenkins Home目录的数据备份和恢复方案是Jenkins运维保障必须要有的。

首先,要理解Jenkins Home 下文件结构的含义,这样才能有效甄别出需要备份的有效数据。

其次,要选择适合的备份方案,可以使用一种或者多种结合的方式,确保有效数据得到备份。常用的备份方案主要有三种:

  1. 基于Jenkins Backup 插件进行备份:这种方案使用插件提供的备份功能,对Jenkins Home下特定数据可以归档备份,而且还提供恢复功能。所有操作可以通过Jenkins 管理界面完成,归档数据保存在Jenkins Master服务器上,插件名称为Backup Plugin。
  2. 基于Rsync工具将 Jenkins 数据同步到远程服务器进行备份:为了避免Jenkins Master单点故障,可以将数据备份到远程备份机器。可以使用rsync工具将Jenkins Home同步到远程服务器,利用rsync工具的 “--exclude-from=FILE”功能定制一个exclude文件,过滤掉无须备份的数据,比如一般而言,build目录下的内容不建议备份。
  3. 基于版本控制系统的增量备份方案:这种方法基于的是版本控制系统的备份方法,通过版本控制系统将需要备份的文件增量备份到版本仓库中。在使用Git工具时,还可以通过.gitignore文件过滤掉无须备份的文件。

把Jenkins配置文件备份到版本控制仓库,有两大好处:

  • 增量备份,能够避免归档备份等冗余备份对CPU、Disk的浪费
  • 理论上可以恢复到所有历史版本,具体取决于备份频率。

使用Gitlab作为备份仓库的基本步骤如下:

  1. 创建Gitlab repo,将它用作Jenkins Home远程备份repo。
  2. 设置Gitlab repo权限,确保Jenkins 账户具有push权限。
  3. 将Jenkins Home 初始化为本地repo。
  4. 添加 .gitignore 文件。
  5. 将Jenkins Home 本地仓库内容push到远程repo中,创建Master分支。
  6. 创建Jenkins Job或者Crontab ,实现定时周期性备份。

采用Git工具时的备份脚本示例如下图所示。

————

本文节选自集当今中国企业级 DevOps 实践大成的新书《DevOps三十六计》。本书由40位 DevOps 专家联袂打造,用115个案例分享技巧与规范,献1349条计策凝聚经验与智慧。点击阅读原文可直达秘笈,饱览一线DevOps专家真知灼见,观摩国内前沿实践精华,吸取先行者血泪经验,抢占企业未来竞争制胜点。

  • 内容简介:新型的DevOps 涵盖了从需求提出到软件发布的整个软件生命周期,是产品设计、项目管理、开发、测试和运维提升的必由之路,国内大型互联网企业已做了很多探索,并将相关技能规范化、文档化、工具化、自动化甚至智能化。遗憾的是,这些宝贵经验往往仅在团队或公司内部分享,很多中小公司还在重复走着大公司走过的弯路。为了促进先进经验在整个行业内分享和传播,DevOps 时代社区和高效运维社区邀请40 位业界大咖,从精益、敏捷、开发、测试、运维、架构、安全等各个方面分享他们在Top 互联网公司及领先的传统企业工作多年的智慧和经验结晶。本书共有36 篇文章,1349 条计策,其中很多计策都是在经历刻骨铭心的事故后总结出来的,精选的115 个案例则是对相关计策的解读。本书旨在总结经验、交流分享,希望能帮助国内互联网及传统企业避免无谓的反复踩坑,让技术人员更好地聚焦于业务目标和业务产出。

原文发布于微信公众号 - 前沿技墅(Edge-Book)

原文发表时间:2018-04-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏直播吧

直播平台APP软件如何检测其功能

直播作为互联网的新生力量,展现了非凡的社交魅力,男女老少善男信女的加入成为大众化的一个现象,不少人做直播或者自己来运营自己的直播平台,这种直播产业逐渐形成一种趋...

1.8K120
来自专栏数据和云

生日快乐:DB-Engines五周年及数据库排行榜中的中国势力

在10月11日,DB-Engines的网站上,发布了一条消息:Five years of DB-Engines.com ,这个网站已经走过了5年的历程。我们很多...

37440
来自专栏Java架构师进阶

如何成为高级java程序员

给一个刚出社会的程序员新生一个建议,想成为一个优秀的程序员,高级程序员,不能眼高手低,不能认为开发新项目,技术研发才学到东西,不能看不起维护系统,不要以为自己懂...

9420
来自专栏腾讯Bugly的专栏

【MIG专项测试组】如何量化Android应用的“卡”?---流畅度原理&定义篇

腾讯Bugly特邀鹅厂MIG专项测试组,陆续为大家分享移动应用质量的有效评估方法。 MIG专项测试组 ? 致力于为腾讯移动互联网事业群(MIG)提供专项评测及...

53050
来自专栏Crossin的编程教室

那些年,他们一起用的python

今天去网上搜索了下,有哪些网站或应用使用了python,挑选了其中比较有名的一些在这里分享给大家。这其中有一些是用python进行开发,有一些在部分业务或功能上...

35260
来自专栏微信公众号:Java团长

Java架构师必知必会,带走不谢

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。...

11510
来自专栏51CTO技术栈的专栏

放弃 Dubbo,选择最流行的 Spring Cloud 微服务架构实践与经验总结

在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉 Spring Boot,到项目中的慢慢使用,再到...

4.9K10
来自专栏java一日一条

2016最流行的Java EE服务器

如今是我们发布有关Java领域统计资料的第四个年头。每年春天,我们对从JVM 的Plumbr 代理监测器收集到的数据进行挖掘,发现了以下几点:

14420
来自专栏coding

初识opensuse

14630
来自专栏云计算D1net

谷歌云服务支持SUSE Linux Enterprise

  近日,SUSE宣布Google Compute Engine现已全面支持SUSE Linux Enterprise Server且适用于所有设备实例类型。S...

30640

扫码关注云+社区

领取腾讯云代金券