首页主机资讯Jenkins在CentOS上的高可用性如何配置

Jenkins在CentOS上的高可用性如何配置

时间2025-10-15 22:07:03发布访客分类主机资讯浏览1205
导读: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

  1. 添加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
    
  2. 安装Jenkins
    通过Yum安装最新稳定版Jenkins:
    sudo yum install jenkins -y
    
  3. 启动服务
    启动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. 配置全局安全

  1. 进入Jenkins Web界面(http://< Master-IP> :8080),点击Manage Jenkins > Configure Global Security
  2. 启用Security,选择Jenkins’ own user database作为授权策略;
  3. 禁用匿名用户访问(避免未授权操作)。

3. 配置分布式构建(Master-Slave架构)

  1. 添加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:添加节点标签(如linuxdocker),用于Job定向分配;
    • Usage:选择Only build jobs with label expressions matching this node(仅匹配标签的任务在此节点运行);
    • Launch method:选择Launch agents via SSH(推荐,安全)或Launch agent via Java Web Start(简单)。
  2. 配置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节点生成的密钥)。
  3. 验证Slave连接
    返回Master节点的Manage Nodes页面,若Slave状态显示为Idle,则表示连接成功。

四、配置负载均衡(多Master场景)

若需多Master节点实现故障转移,需在Master节点前部署HAProxyNginx负载均衡器:

  1. 安装HAProxy
    在负载均衡节点执行:
    sudo yum install haproxy -y
    
  2. 配置HAProxy
    编辑/etc/haproxy/haproxy.cfg,添加以下内容(假设Master节点IP为192.168.1.101192.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
    
  3. 启动HAProxy
    sudo systemctl start haproxy
    sudo systemctl enable haproxy
    
    此时,用户可通过负载均衡器的IP(如http://< HAProxy-IP> )访问Jenkins集群,请求会自动分发至各Master节点。

五、数据同步(多Master数据一致性)

多Master场景下,需确保配置、任务及构建历史同步,常用方法:

  1. 共享JENKINS_HOME目录
    将所有Master节点的JENKINS_HOME(默认/var/lib/jenkins)挂载至同一NFS共享存储(需安装NFS服务并配置权限);
  2. 使用SCM Sync插件
    安装SCM Sync configuration插件,将配置同步至Git仓库(如GitHub、GitLab),所有Master节点从仓库拉取最新配置。

六、监控与维护

  1. 监控集群状态
    安装Prometheus + Grafana监控插件(如Jenkins Prometheus Plugin),采集Jenkins的CPU、内存、任务队列、Slave状态等指标,设置告警规则(如Master宕机、Slave离线);
  2. 日志管理
    定期检查Master/Slave节点的日志文件(/var/log/jenkins/jenkins.log),使用ELK Stack(Elasticsearch+Logstash+Kibana)集中管理日志,便于故障排查;
  3. 定期备份
    使用rsyncBacula工具定期备份JENKINS_HOME目录(每日增量备份、每周全量备份),备份文件存储至异地或云存储;
  4. 更新维护
    定期更新Jenkins及插件至最新稳定版本(通过Manage Jenkins > Manage Plugins),修复安全漏洞并提升性能。

七、故障转移与容灾

  1. Master节点故障
    若某Master节点宕机,负载均衡器会自动将请求分发至其他可用Master节点;若需修复故障节点,修复后重新加入集群即可;
  2. Slave节点故障
    若Slave节点离线,Master会将任务重新分配至其他具有相同标签的Slave节点(需提前配置多个Slave);
  3. 数据丢失恢复
    JENKINS_HOME目录损坏,可从备份中恢复,或通过SCM Sync插件从Git仓库拉取最新配置。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Jenkins在CentOS上的高可用性如何配置
本文地址: https://pptw.com/jishu/727449.html
CentOS Jenkins配置中如何管理用户认证 CentOS Jenkins配置中如何实现多环境部署

游客 回复需填写必要信息