Jenkins在CentOS上的高可用性如何配置
导读:Jenkins在CentOS上的高可用性配置指南 一、环境准备 在开始配置前,需确保所有CentOS节点(Master/Slave)满足以下基础要求: 操作系统:CentOS 7及以上版本; Java环境:安装与Jenkins版本兼容的J...
Jenkins在CentOS上的高可用性配置指南
一、环境准备
在开始配置前,需确保所有CentOS节点(Master/Slave)满足以下基础要求:
- 操作系统:CentOS 7及以上版本;
- Java环境:安装与Jenkins版本兼容的JDK(Jenkins 2.357+推荐Java 11及以上),配置
JAVA_HOME
环境变量; - 网络互通:所有节点处于同一网络,防火墙开放Jenkins默认端口(8080)及Slave通信端口(如JNLP默认50000);
- 存储空间:至少10GB可用磁盘空间(用于存放构建产物及配置)。
二、安装Jenkins
- 添加Jenkins Yum源:
在所有节点执行以下命令,导入Jenkins官方仓库密钥并添加repo文件:sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
- 安装Jenkins:
通过Yum安装最新稳定版Jenkins:sudo yum install jenkins -y
- 启动服务:
启动Jenkins并设置开机自启:sudo systemctl start jenkins sudo systemctl enable jenkins
三、配置Master节点高可用
1. 调整Jenkins配置文件
编辑/etc/sysconfig/jenkins
,修改以下关键参数:
- 绑定所有网络接口:避免IP变更导致服务不可用;
JENKINS_BIND_ADDRESS="0.0.0.0"
- 调整JVM堆内存:根据服务器内存设置(如8GB内存建议
-Xms2g -Xmx4g
);JENKINS_JAVA_OPTIONS="-Xms2g -Xmx4g -Djava.awt.headless=true"
- 修改默认端口(可选):若8080端口被占用,可修改
JENKINS_PORT
(如改为8081)。
2. 配置全局安全
- 进入Jenkins Web界面(
http://< Master-IP> :8080
),点击Manage Jenkins > Configure Global Security; - 启用Security,选择Jenkins’ own user database作为授权策略;
- 禁用匿名用户访问(避免未授权操作)。
3. 配置分布式构建(Master-Slave架构)
-
添加Slave节点:
进入Manage Jenkins > Manage Nodes and Clouds > New Node,填写节点信息:- Node Name:自定义节点名称(如
slave1
); - Type:选择
Permanent Agent
(永久节点); - Number of executors:设置并发任务数(建议不超过CPU核心数);
- Remote root directory:Slave节点的工作目录(如
/home/jenkins
); - Labels:添加节点标签(如
linux
、docker
),用于Job定向分配; - Usage:选择
Only build jobs with label expressions matching this node
(仅匹配标签的任务在此节点运行); - Launch method:选择
Launch agents via SSH
(推荐,安全)或Launch agent via Java Web Start
(简单)。
- Node Name:自定义节点名称(如
-
配置Slave连接:
- 若选择
Launch agents via SSH
,需在Credentials中添加Slave节点的SSH私钥(需提前在Slave节点生成并上传至Master); - 若选择
Java Web Start
,在Slave节点浏览器访问Master的节点配置页面,下载agent.jar
并运行:
(将java -jar agent.jar -jnlpUrl http://< Master-IP> :8080/computer/< Node-Name> /slave-agent.jnlp -secret < Secret-Key> -workDir "/home/jenkins"
< Secret-Key>
替换为Master节点生成的密钥)。
- 若选择
-
验证Slave连接:
返回Master节点的Manage Nodes页面,若Slave状态显示为Idle
,则表示连接成功。
四、配置负载均衡(多Master场景)
若需多Master节点实现故障转移,需在Master节点前部署HAProxy或Nginx负载均衡器:
- 安装HAProxy:
在负载均衡节点执行:sudo yum install haproxy -y
- 配置HAProxy:
编辑/etc/haproxy/haproxy.cfg
,添加以下内容(假设Master节点IP为192.168.1.101
、192.168.1.102
):frontend jenkins_frontend bind *:80 default_backend jenkins_backend backend jenkins_backend balance roundrobin server master1 192.168.1.101:8080 check server master2 192.168.1.102:8080 check
- 启动HAProxy:
此时,用户可通过负载均衡器的IP(如sudo systemctl start haproxy sudo systemctl enable haproxy
http://< HAProxy-IP>
)访问Jenkins集群,请求会自动分发至各Master节点。
五、数据同步(多Master数据一致性)
多Master场景下,需确保配置、任务及构建历史同步,常用方法:
- 共享JENKINS_HOME目录:
将所有Master节点的JENKINS_HOME
(默认/var/lib/jenkins
)挂载至同一NFS共享存储(需安装NFS服务并配置权限); - 使用SCM Sync插件:
安装SCM Sync configuration
插件,将配置同步至Git仓库(如GitHub、GitLab),所有Master节点从仓库拉取最新配置。
六、监控与维护
- 监控集群状态:
安装Prometheus
+Grafana
监控插件(如Jenkins Prometheus Plugin
),采集Jenkins的CPU、内存、任务队列、Slave状态等指标,设置告警规则(如Master宕机、Slave离线); - 日志管理:
定期检查Master/Slave节点的日志文件(/var/log/jenkins/jenkins.log
),使用ELK Stack
(Elasticsearch+Logstash+Kibana)集中管理日志,便于故障排查; - 定期备份:
使用rsync
或Bacula
工具定期备份JENKINS_HOME
目录(每日增量备份、每周全量备份),备份文件存储至异地或云存储; - 更新维护:
定期更新Jenkins及插件至最新稳定版本(通过Manage Jenkins > Manage Plugins),修复安全漏洞并提升性能。
七、故障转移与容灾
- Master节点故障:
若某Master节点宕机,负载均衡器会自动将请求分发至其他可用Master节点;若需修复故障节点,修复后重新加入集群即可; - Slave节点故障:
若Slave节点离线,Master会将任务重新分配至其他具有相同标签的Slave节点(需提前配置多个Slave); - 数据丢失恢复:
若JENKINS_HOME
目录损坏,可从备份中恢复,或通过SCM Sync插件从Git仓库拉取最新配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在CentOS上的高可用性如何配置
本文地址: https://pptw.com/jishu/727449.html