Jenkins之-主从搭建及备份

凯哥java

共 5744字,需浏览 12分钟

 ·

2022-08-25 02:13

在这里介绍一下jenkins集群搭建过程,在刚开始搭建时遇到许多问题,最开始安装的jenkins2.41的一个版本,安装完之后,打开页面有许多提示,大概意思是许多插件可能在这个版本不兼容,建议升级版本,这里我强烈建议直接升级jenkins版本,因为历史版本安装插件简直要疯,我去安装git插件,安装失败,提示git最新版本插件不兼容,然后我尝试上传hpi文件安装,但是git会依赖其他许多插件,其他插件还会安装最新版本,结果还是不兼容,用同事的话说就是“子子孙孙无穷尽也”

后来我屈服了我选择的最新版本jenkins2.360版本重新安装,但是原来的jdk安装的是openjdk1.8,jenkins2.360版本需要jdk11,所以又重新装了jdk11.这里记录一下安装最新版本的记录。我用的virtualbox安装的虚拟机。


安装主节点

1.  安装虚拟机jenkins-master

镜像版本:CentOS-7-x86_64-Minimal-1611.iso
安装好后,用ip addr 查看,没有看到ip,这时修改 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 中ONBOOT=yes 后,重启网络service network restart,这时候再ip addr发现为内网,这时切换网络为桥接网络,重启。

2.  安装基础软件

2.1 安装openjdk  yum install fontconfig java-11-openjdk  vi /etc/profile  export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.15.0.9-2.el7_9.x86_64   export JRE_HOME=${JAVA_HOME}/jre   export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib   export PATH=${JAVA_HOME}/bin:$PATH  source /etc/profile2.2 安装git  yum install -y git2.3 安装sshpass  yum install sshpass2.4 安装axel(多线程下载工具)  wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/a/axel-2.4-9.el7.x86_64.rpm  rpm -ivh axel-2.4-9.el7.x86_64.rpm2.5 安装maven  axel -n 20 https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz   tar zxvf apache-maven-3.6.1-bin.tar.gz     mv apache-maven-3.6.1 /usr/local/    配置环境变量  vim /etc/profile    MAVEN_HOME=/usr/local/apache-maven-3.6.1     export PATH=${MAVEN_HOME}/bin:${PATH}    使环境变量生效    source /etc/profile    配置maven 本地仓库    mkdir -p /data/maven_repository
useradd jenkins --home-dir /home/jenkins --shell /bin/bash passwd jenkins # 设置密码为12345678
给jenkins用户授权,运行jenkins用户下载依赖包到仓库 chown -R jenkins:jenkins /data/maven_repository/ 修改maven中仓库的位置 vim /usr/local/apache-maven-3.6.1/conf/settings.xml 将其中内容替换为新建的仓库位置 <localRepository>/data/maven_repository</localRepository> 找到和标签,在其中添加如下内容 <mirror> <id>alimaven</id> <name>alimaven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>2.6 安装rsync yum install rsync

3.复制 虚拟机为jenkins-slave (以上都是基础条件,所以快速复制一个虚拟机即可)

4.安装jenkins

4.1 安装访问切换用户su jenkins下载jenkins安装包(下面的命令会报“Too many redirects”,可以先下载下来上传)axel -n 20 http://mirrors.jenkins-ci.org/war/2.360/jenkins.war启动jenkinsjava -jar jenkins.war --httpPort=8888关闭防火墙systemctl stop firewalld这时候可以访问jenkins界面了,http://192.168.43.75:8888 登录进去后,修改admin 密码为123456
4.2 修改配置修改jenkins配置(插件站点更新,加速联网)vim ~/.jenkins/hudson.model.UpdateCenter.xml将XML内的url的值替换为:http://mirror.xmission.com/jenkins/updates/update-center.json重启jenkins访问jenkins发现Dashboard->Manage Jenkins->Plugin Manager 页面下的Update Site 值发生了变化,由https://updates.jenkins.io/update-center.json 变成了http://mirror.xmission.com/jenkins/updates/update-center.json
4.3 设置Jenkins开机自启动su rootmkdir /data/jenkins_data chown -R jenkins:jenkins /data/jenkins_datasu jenkins在/home/jenkins下新建脚本:vim jenkins.sh#!/bin/bash export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.15.0.9-2.el7_9.x86_64export JENKINS_SERVER_PATH=/home/jenkins export JENKINS_HOME=/data/jenkins_data cd ${JENKINS_SERVER_PATH} nohup java -jar jenkins.war --httpPort=8888 >jenkins.log 2>&1 &添加脚本执行权限chmod +x jenkins.shexit 退出到root 用户
先执行命令 su jenkins -c "/home/jenkins/jenkins.sh" 看是否能正常访问jenkins。发现jenkins页面打不开了,这时候我们需要修改 vim /data/jenkins_data/hudson.model.UpdateCenter.xml,文件中替换url内的值为:http://mirror.xmission.com/jenkins/updates/update-center.json 替换完之后,不用重启,发现又到初始化页面了,需要重新找到密码登录,并且之前配置的Update Site 也变了回来。我们再改一下,通过页面改就可以了。
设置开机启动 vim /etc/rc.d/rc.local,在最后添加如下启动命令su jenkins -c "/home/jenkins/jenkins.sh"添加执行权限chmod +x /etc/rc.d/rc.local然后虚拟机,ps -ef | grep java 发现jenkins起来了,这时关闭防火墙,可以重新访问。

安装从节点

我们已经在上面复制了一个虚拟机,这个就是从节点,从节点不需要安装jenkins。我们确定一下从节点的jenkins 用户即可。

  1. 配置免密登录

1.1 登录到主机器,切换到jenkins用户,进入jenkins目录,生成sshkey,执行下面命令后一直回车完成即可
ssh-keygen
1.2 拷贝主机的公钥文件到从机器,执行命令后输入从机jenkins用户密码即可
ssh-copy-id jenkins@192.168.43.109
1.3 登录从机器,切换到jenkins用户,进入jenkins目录,生成sshkey
ssh-keygen
1.4 拷贝从机的公钥文件到主机器,执行命令后输入主机jenkins用户密码即可
ssh-copy-id jenkins@192.168.43.75

2. 安装ssh 插件并重启,登录进jenkins插件界面,安装ssh相关插件。

    主要涉及到三个插件,分别是:SSH,SSH Agent,SSH Build Agent

3. 新建节点配置如下图

注意的是上面的凭证,需要配置主节点的ssh key,可以通过命令查看

cat /home/jenkins/.ssh/id_rsa

4. 验证从节点(创建一个job在从节点上)如下图

构建成功,并且登录slave机器可以看到workspace里面多了uncle-blog目录切打包成功


Job 备份恢复

备份需要每天执行一次,并且要保证构建历史,重要配置和job 都在,并排除掉build目录。

安装备份插件 ThinBackup
创建备份目录并配置
mkdir /data/jenkins_backup
chown -R jenkins:jenkins /data/jenkins_backup


发现备份成功了


rsync增量同步

我们在master机器上备份完后需要把备份的数据同步到其他节点上,我们这里直接用从节点当备份节点。

我们在master上切换到jenkins用户执行rsync命令进行备份:

sshpass -p 12345678 rsync -avz /data/jenkins_backup/ jenkins@192.168.8.175:/data/jenkins_backup

备份完成后,登录到slave 的/data/jenkins_backup 上可以看到备份到从节点成功了。我们再去jenkins界面上调整一下备份时间,让他在备份一次,然后再执行一次同步命令,可以发现备份节点上出现了增量的备份。从日志中也可以看到只同步了增量的。


上面我们演示的是手动执行命令进行同步的,实际工作会用linux 的crontab 的定时任务进行,配置如下:

su jenkins 切jenkins 用户
1.编辑备份shell脚本
vim /home/jenkins/backup.sh 填写下面命令
sshpass -p 12345678 rsync -avz /data/jenkins_backup/ jenkins@192.168.8.175:/data/jenkins_backup
2.给脚本添加执行权限
chmod +x /home/jenkins/backup.sh
su root
3.添加到系统crontab文件中
vim /etc/crontab 添加如下内容,时间要比备份的时间晚几分钟
33 22 * * * jenkins /bin/bash /home/jenkins/backup.sh &>/dev/null
备份恢复

可以切换工作空间,来演示数据丢失情况,在没有丢失情况,现有的job,人员,角色等都是可以恢复的。

1. 切换root 用户 su root
2. 新建工作空间并授权
mkdir /data/jenkins_data_temp
chown -R jenkins:jenkins /data/jenkins_data_temp
3. 切换jenkins用户 su jenkins
4. 修改jenkins启动脚本
vim /home/jenkins/jenkins.sh
export JENKINS_HOME=/data/jenkins_data_temp
5. 切换root,并重启jenkins

重启后进入jenkins界面,发现到了初始界面,这时候重新设置admin 密码,进入,并重新设置镜像中心地址,然后下载ThinBackup插件。重启并重新进入jenkins界面,找到ThinBackup 进行配置


配置好后,保存,回到ThinBackup界面,点击Restore


需要等一会,恢复后,需要重启,可以在浏览器直接执行http://192.168.8.143:8888/restart 重启后,发现都恢复了。


浏览 153
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报