Jenkins部署与备份恢复实战

一、关于Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能!
先了解下相关概念:
CI: continuous integration持续集成 (code -- bulid -- integrate --test)
CD: continuous Delivery 持续交付 ( test -- release)
continuous Deployment 持续部署

简单来说就是通过Jenkins及相关的插件,可以让企业代码构建--发布--测试--上线整个流程变得自动化,持续集成;
接下来我们就从jenkins的安装部署到日常的简单使用,以及jenkins的备份与恢复做一个简单的了解!

二、Jenkins安装

此次实战来源于线上对jenkins的灾备,即现有的jenkins环境不可用时,要有一个马上能替代的jenkins环境,保障持续集成部署上线业务不中断;因此需要另外部署安装一套Jenkins系统,在现有Jenkins系统不可用时,能顶上,当然这其中最关键的是在于现有jenkins中的各种view,job等数据怎么在新的jenkins上同步过来?

思路:在现有jenkins上通过插件ThinBackup来(定时完整)备份jenkins上的数据;通过NFS 共享到备份的jenkins上,备份的jenkins上恢复; 这样基本上能达到有两个可用的jenkins系统,所谓的冷备吧~

此次实战环境:
CentOS7.5
java version: "1.8.0_171"
ip: 10.8.11.228

1、安装

本次使用官方提供的redhat源安装;由于Jenkins基于java开发的,因此需要java环境;

# rpm -ivh jdk-8u171-linux-x64.rpm     # 基本上1.8.x都可以

###下载官方yum仓库
# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
## 导入证书
# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

## 安装
# yum install jenkins -y

## 启动jenkins
# systemctl enable jenkins
# systemctl start jenkins

Jenkins安装就是这么简单,jenkins默认侦听在tcp 8080端口上;如果要修改默认侦听端口及其他的配置项;可到下面的文件中修改即可;

#cat /etc/sysconfig/jenkins |grep JENKINS_PORT
JENKINS_PORT="8080"

不过默认配置已经可以直接使用了,无需要修改!

2、防火墙配置

# /etc/sysconfig/iptables 文件中添加以下配置 以开放jenkins服务

-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 8080 -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 8080 -j ACCEPT
注:如果jenkins有从节点,请开放到从节点的端口通常最方便的做法是开放ip或段的白名单
-A INPUT -s 10.8.0.0/16 -m state --state NEW,ESTABLISHED -m comment --comment "Allow 10.8.0.0/16 IN" -j ACCEPT
-A OUTPUT -d 10.8.0.0/16 -m state --state NEW,ESTABLISHED -m comment --comment "Allow 10.8.0.0/16 OUT" -j ACCEPT

3、jenkins初始化配置

浏览器中访问:http://10.8.11.228.8080 如图:

上图中的Aadministrator password 如下图中所示获取填入:

接下来就是自动安装推荐插件或手动选择安装插件,可跳过;因为本次安装的主要目的是为了
从已有的jenkins上还原配置;备份中已经有了jenkins插件备份和相关数据的备份;
jenkins初始化就是这么简单,接下就可以配置使用了~ 这里演示的是从已有的jenkins中备份并在这台新的jenkins中还原~

三、Jenkins备份

1、安装ThinBackup

备份jenkins通过第三方插件 ThinBackup 进行
登录已有jenkins进行安装ThinBackup插件:
Jenkins --> 系统管理 --> 插件管理 --> 搜索ThinBackup 下图是已经安装好了

2、配置ThinBackup

Jenkins --> 系统管理 --> ThinBackup --> Setting -->如图:

以上配置表示周一到周五12点1分完整备份到/mnt/jenkins_bak (NFS共享中)
备份内容包括:build results、Backup userContent folder、Backup next build number file
Backup plugins archives(插件)、 Backup additional files、以及把老的备份文件打包压缩
手动执行备份:
Jenkins --> 系统管理 --> ThinBackup --> Backup Now
注意此时页面像是卡住了(等待备份响应),实际上jenkins在后台运行备份程序,可以通过到备份目录中查看
目录大小看到,已经生成了备份目录类似 "FULL-2018-11-06_21-01"
备份完成页面就正常了~

四、通过备份进行恢复Jenkins

1、环境准备

假设现有的jenkins已经损坏不能正常使用;需要通过最近的完整备份恢复jenkins服务;
首先部署jenkins 请参考步骤一;挂载NFS共享目录到本地(因为之前的jenkins自动备份是放在NFS中)
或复制完成备份到新的jenkins主机上;新的jenkins安装第三方备份还原插件ThinBackup;

2、配置ThinBackup并备份

还原操作在10.8.11.228上即上面新安装的jenkins上操作,步骤如下:
先设置备份与还原的配置:
Jenkins --> 系统管理 --> ThinBackup --> Setting -->如图:

3、还原jenkins:

Jenkins --> 系统管理 --> ThinBackup --> Restore 如图:

如图钩选上
Restore next build number file(build文件)
Restore plugins(还原插件)
点击Restore 同样需要等待一段时间;可以查看/var/lib/jenkins目录的变化;

4、还原注意项

jenkins还原后可能出现以下插件没有更新情况如图(不影响还原后使用):

以下显示的有红色提示的表示更新后的新插件版本会影响现有功能使用,需要重新配置才可以;因此需要谨慎更新;
如图:

没有提示的可以直接到插件中进行更新操作;

还原后会发现所有的从节点变成offine状态不可用;如还原后从节点10.8.11.240状态是offine
点击从节点测试可能出现如下情况:

[06/11/18 10:03:51] [SSH] Opening SSH connection to [AGENT_HOSTNAME]:22.
[06/11/18 10:03:51] [SSH] WARNING: No entry currently exists in the Known Hosts file for this host. Connections will be denied until this new host
and its associated key is added to the Known Hosts file.
Key exchange was not finished, connection is closed.
java.io.IOException: There was a problem while connecting to [AGENT_HOSTNAME]:22

原因是缺少/var/lib/jenkins/.ssh/known_hosts文件(里面是jenins到各从节点的应答指纹信息)
需要在/var/lib/jenkins工作队目录下创建.ssh目录并修改为
jenkins用户和组所有权限700 对所有从节点手动访问一次用来接受ssh应答指纹;
在新的jenkins上 ssh [email protected] 此时/root/.ssh/known_hosts中有一条如下记录:

复制/root/.ssh/known_hosts 到/var/lib/jenkins/.ssh/下
权限如下:

-rw------- 1 jenkins jenkins 2.6K 11月 6 18:08 known_hosts

如是从节点是无密码私钥认证请记得把私钥放在/root/.ssh/下叫id_rsa 公钥放到对应从节点的用户下
/root/.ssh/authorized_keys文件中并确保权限为
-rw------- 1 root root1 .2K 12月 12 2017 authorized_keys
ssh -p 65022 [email protected] 无密码登录上10.8.11.246则表示配置正常;
重复以上操作从新jenkins上登录所有从节点再把known_hosts复制到/var/lib/jenkins/.ssh/下 直到所有从节点
的应答指纹都在存在;

5、以ssh 私钥添加从节点

Jenkins -->系统管理--> 节点管理--> New Node --> Node name -->固定节点 如图:


点击 “Credentials” Add 添加jenkins与从节点通讯方式为ssh 私钥 并粘贴私钥文件
如图:

保存;
再次点击节点测试可以发现 从节点正常啦!

五、测试Jenkins使用

下面以TEST-rsyncV3images job 在恢复过来的jenkins上运行,这是用来把线上图片同步到本地所有测试环境中的job:

以下是以恢复过来的Jenkins上测试执行一个job查看是否部署成功与恢复成功~


到此,jenkins部署配置,以及添加从节点,备份与恢复完成~ 再也不怕jenkins故障导致业务无法部署上线啦,这是我这边找的解决方案,是实践中整理笔记 ,读者们要是有更好的方法,烦请留言告知下,同时也可以对本文的错误遗漏之处做指正,谢谢~

原文地址:http://blog.51cto.com/dyc2005/2315479

时间: 2024-08-29 02:45:11

Jenkins部署与备份恢复实战的相关文章

gitlab+jenkins 之gitlab备份恢复

gitlab 备份与恢复 停止数据服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq 创建备份 gitlab-rake gitlab:backup:create 查看备份目录: ls /var/opt/gitlab/backups/ 开启服务后删除测试数据 gitlab-ctl start 删除数据后停止数据服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq 备份恢复 选择之前的备份的版本进行恢复

sqlserver 2008 备份恢复实战

一 内容说明 sqlserver数据库中最重要的是数据库备份和还原,当数据库出现灾难性破坏的时候,需要有最佳的恢复计划,恢复数据和恢复方案.对于已经实施完数据库备份的数据库,需要定期组织恢复演练,以便在灾难故障来临时,可以快速的恢复. 下面介绍了备份策略制定,恢复计划,还原计划. 还原主要有以下几种组合(根据自己实际情况选择): 完整恢复 完整恢复+差异恢复 完整恢复+差异恢复+日志事务恢复 二 策略制定 2.1 没有事务日志的情况 由于数据库数据量不是很大,数据库全备每天执行一次 数据库每各半

【转】mysql增量备份恢复实战企业案例

来源地址:http://seanlook.com/2014/12/05/mysql_incremental_backup_example/ 小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志. 本次操作的MySQL版本为5.5.40 for Linux (x86_64). 增量备份要确保打开了二进制日志,参考mysql的日志系统: 1 mysql> show

Oracle数据库备份恢复高级培训视频课程(案例、实战、深入、全面)

套餐介绍: 介绍:风哥Oracle数据库备份恢复培训(案例.实战.深入.全面),DBA初级到骨灰级的脱变. 内容:风哥Oracle数据库备份恢复及存储容灾基础,控制文件与参数文件详解,存储结构深入分析,Oracle底层技术,数据块解析,BBED深入解析,重做日志Redo深入解析,Undo回滚段深入解析,用户管理模式的备份恢复,RMAN备份恢复,Flashback闪回恢复管理,LogMiner日志挖掘技术,SQL_Loader,Oracle逻辑备份恢复迁移之exp/imp和expdp/impdp.

屌炸天实战 MySQL 系列教程(四)【秒杀七年经验 LowB工程师】 主从复制、读写分离、模拟宕机、备份恢复方案生产环境实战

第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不知道的数据库操作 第三篇:屌炸天实战 MySQL 系列教程(三)你不知道的 视图.触发器.存储过程.函数.事物.索引.语句 第四篇:屌炸天实战 MySQL 系列教程(四) 主从复制.读写分离.模拟宕机.备份恢复方案生产环境实战 去年公司有一个七年PHP开发经验的工程师,想要跳槽. 去国内某知名互联网公司面试后,被虐惨了,非要我给他讲讲什么是主从

centos mysql 实战 第十二节课 备份恢复 备份方案 备份可以分为几种形式 mysqldump 在不同版本里对性能会不会有影响? mysqldump 的用户需要什么权限 mysqldump 支持Where条件 备份评估

centos mysql 实战 第十二节课  备份恢复  备份方案  备份可以分为几种形式  mysqldump 在不同版本里对性能会不会有影响?   mysqldump 的用户需要什么权限   mysqldump 支持Where条件  备份评估 阿里云Percona-live 2016-4 基于Innodb物理复制 mysql5.7没有线程池,需要用percona版本mysql才有,percona的定位是做免费的企业版mysql mysql5.6的memcached插件只是提供memcache

Jenkins部署Python项目实战

一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Jenkins强大的插件功能,轻松实现CI/CD,但如果部署多项目到同一台服务器涉及环境一致性问题,对此可以利用容器技术Docker解决,也可以利用Python虚拟环境例如virutalenv或conda等优秀等工具解决,在此由于后期根据requirements来安装依赖包比较慢,且后期需要将Pytho

Mysql 备份恢复与 xtrabackup备份

1.1 备份的原因 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间. 1.1.1 备份的目录 做灾难恢复:对损坏的数据进行恢复和还原 需求改变:因需求改变而需要把数据还原到改变以前 测试:测试新功能是否可用 1.1.2 备份中需要考虑的问题 可以容忍丢失多长时间的数据: 恢复

大话去哪儿网备份恢复平台

来源:http://mp.weixin.qq.com/s/ldu7iS5c3d0ND3foPYoLXQ 作者简介:许子文 曾任达梦高级数据库工程师,现任去哪儿网高级DBA,负责MySQL .Hbase运维和自动化运维工具的开发.在RDBMS拥有多年数据库架构设计.性能优化和运维经验,对海量数据有丰富的运维经验和个人见解. 备份恢复是DBA日常运维工作中的重中之重??怎么快速高效完成备份和恢复??怎么有效平衡DB数据量和业务重要等级??接下来从技术和业务的角度介绍Qunar数据库备份恢复平台的演变