Jenkins在CentOS上的高可用性配置指南
在开始配置前,需确保所有CentOS节点(Master/Slave)满足以下基础要求:
JAVA_HOME环境变量;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
sudo yum install jenkins -y
sudo systemctl start jenkins
sudo systemctl enable jenkins
编辑/etc/sysconfig/jenkins,修改以下关键参数:
JENKINS_BIND_ADDRESS="0.0.0.0"
-Xms2g -Xmx4g);JENKINS_JAVA_OPTIONS="-Xms2g -Xmx4g -Djava.awt.headless=true"
JENKINS_PORT(如改为8081)。http://<Master-IP>:8080),点击Manage Jenkins > Configure Global Security;添加Slave节点:
进入Manage Jenkins > Manage Nodes and Clouds > New Node,填写节点信息:
slave1);Permanent Agent(永久节点);/home/jenkins);linux、docker),用于Job定向分配;Only build jobs with label expressions matching this node(仅匹配标签的任务在此节点运行);Launch agents via SSH(推荐,安全)或Launch agent via Java Web Start(简单)。配置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节点前部署HAProxy或Nginx负载均衡器:
sudo yum install haproxy -y
/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
sudo systemctl start haproxy
sudo systemctl enable haproxy
此时,用户可通过负载均衡器的IP(如http://<HAProxy-IP>)访问Jenkins集群,请求会自动分发至各Master节点。多Master场景下,需确保配置、任务及构建历史同步,常用方法:
JENKINS_HOME(默认/var/lib/jenkins)挂载至同一NFS共享存储(需安装NFS服务并配置权限);SCM Sync configuration插件,将配置同步至Git仓库(如GitHub、GitLab),所有Master节点从仓库拉取最新配置。Prometheus + Grafana监控插件(如Jenkins Prometheus Plugin),采集Jenkins的CPU、内存、任务队列、Slave状态等指标,设置告警规则(如Master宕机、Slave离线);/var/log/jenkins/jenkins.log),使用ELK Stack(Elasticsearch+Logstash+Kibana)集中管理日志,便于故障排查;rsync或Bacula工具定期备份JENKINS_HOME目录(每日增量备份、每周全量备份),备份文件存储至异地或云存储;JENKINS_HOME目录损坏,可从备份中恢复,或通过SCM Sync插件从Git仓库拉取最新配置。