Jenkins部署与备份恢复实战

1、关于Jenkins

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

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

2、Jenkins安装

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

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

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

一、安装

本次使用官方提供的redhat源安装;因为Jenkins基于java开发的,所以须要java环境;ide

# 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"

不过默认配置已经能够直接使用了,无须要修改!测试

二、防火墙配置

# /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

三、jenkins初始化配置

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

Jenkins部署与备份恢复实战

上图中的Aadministrator password 以下图中所示获取填入:
Jenkins部署与备份恢复实战this

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

3、Jenkins备份

一、安装ThinBackup

备份jenkins经过第三方插件 ThinBackup 进行
登陆已有jenkins进行安装ThinBackup插件:
Jenkins --> 系统管理 --> 插件管理 --> 搜索ThinBackup 下图是已经安装好了
Jenkins部署与备份恢复实战

二、配置ThinBackup

Jenkins --> 系统管理 --> ThinBackup --> Setting -->如图:
Jenkins部署与备份恢复实战

Jenkins部署与备份恢复实战

以上配置表示周一到周五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"
备份完成页面就正常了~

4、经过备份进行恢复Jenkins

一、环境准备

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

二、配置ThinBackup并备份

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

三、还原jenkins:

Jenkins --> 系统管理 --> ThinBackup --> Restore 如图:
Jenkins部署与备份恢复实战

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

四、还原注意项

jenkins还原后可能出现如下插件没有更新状况如图(不影响还原后使用):
Jenkins部署与备份恢复实战

如下显示的有红色提示的表示更新后的新插件版本会影响现有功能使用,须要从新配置才能够;所以须要谨慎更新;
如图:
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 root@10.8.11.240 此时/root/.ssh/known_hosts中有一条以下记录:
Jenkins部署与备份恢复实战

复制/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 root@10.8.11.246 无密码登陆上10.8.11.246则表示配置正常;
重复以上操做重新jenkins上登陆全部从节点再把known_hosts复制到/var/lib/jenkins/.ssh/下 直到全部从节点
的应答指纹都在存在;

五、以ssh 私钥添加从节点

Jenkins -->系统管理--> 节点管理--> New Node --> Node name -->固定节点 如图:
Jenkins部署与备份恢复实战
Jenkins部署与备份恢复实战
点击 “Credentials” Add 添加jenkins与从节点通信方式为ssh 私钥 并粘贴私钥文件
如图:
Jenkins部署与备份恢复实战
保存;
再次点击节点测试能够发现 从节点正常啦!

5、测试Jenkins使用

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

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

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

相关文章
相关标签/搜索