centos

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

小樊
36
2025-10-15 12:41:05
栏目: 智能运维

Jenkins在CentOS上的高可用性配置指南

一、环境准备

在开始配置前,需确保所有CentOS节点(Master/Slave)满足以下基础要求:

二、安装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,修改以下关键参数:

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仓库拉取最新配置。

0
看了该问题的人还看了