Jenkins在Ubuntu上的高可用架构实现指南
在开始高可用配置前,需完成以下基础准备:
sudo apt update && sudo apt upgrade -y)。sudo apt install openjdk-11-jdk -y),并通过java -version验证安装。wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins -y
启动服务并设置开机自启:sudo systemctl enable --now jenkins。主从架构是Jenkins高可用的基础,**主节点(Master)**负责任务调度、监控,**从节点(Agent)**负责实际构建,实现负载分散。
http://<主节点IP>:8080),解锁后完成初始设置。Manage Jenkins > Manage Plugins,安装SSH Slaves(用于从节点连接)、Pipeline(流水线支持)、Kubernetes(可选,容器化扩展)等插件。Manage Jenkins > Manage Nodes and Clouds > New Node,输入节点名称(如ubuntu-agent-01),选择Permanent Agent,点击OK。/home/ubuntu/jenkins-agent);ubuntu、docker),用于任务定向分配;Use this node as much as possible(尽量使用此节点);Launch agents via SSH,填写从节点的IP、用户名(如ubuntu),并上传主节点到从节点的SSH公钥(需提前在从节点生成密钥对ssh-keygen -t rsa,并将公钥id_rsa.pub复制到主节点~/.ssh/authorized_keys)。Save,主节点会自动连接从节点并启动代理。通过负载均衡器(如Nginx或HAProxy)将流量分发到多个Jenkins主节点,避免单主节点故障导致服务中断。
sudo apt install nginx -y。/etc/nginx/sites-available/jenkins):upstream jenkins_cluster {
server <主节点1_IP>:8080;
server <主节点2_IP>:8080;
# 可添加更多主节点
}
server {
listen 80;
server_name jenkins.yourdomain.com;
location / {
proxy_pass http://jenkins_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx
http://jenkins.yourdomain.com,即可通过Nginx分发流量到多个主节点。多主节点环境下,需确保配置、任务、插件等数据同步,避免因节点间数据不一致导致问题。
SCM Sync configuration插件,配置Git仓库(如GitHub、GitLab)作为配置存储库。Jenkinsfile、配置文件(如config.xml)同步到Git仓库,其他主节点可通过拉取仓库更新本地配置。JENKINS_HOME目录:
JENKINS_HOME(默认/var/lib/jenkins)挂载到所有主节点。/etc/exports添加/mnt/jenkins_home *(rw,sync,no_root_squash)),重启NFS服务(sudo systemctl restart nfs-kernel-server)。sudo apt install nfs-common -y),挂载共享目录(sudo mount -t nfs nfs_server_ip:/mnt/jenkins_home /var/lib/jenkins)。通过插件进一步提升高可用能力:
Kubernetes插件;Manage Jenkins > Configure System中,添加Kubernetes云配置(填写Kubernetes API地址、凭据,配置Pod模板(如使用jenkins/agent镜像))。Prometheus + Grafana监控Jenkins集群状态(如节点在线数、任务队列长度、构建成功率)。安装Jenkins Prometheus Plugin,配置Prometheus抓取Jenkins metrics端点(默认/prometheus)。ELK Stack(Elasticsearch + Logstash + Kibana)收集、分析Jenkins日志(位于/var/log/jenkins/jenkins.log),快速定位构建失败、节点断开等问题。JENKINS_HOME目录(包含任务配置、构建历史、凭证等)、数据库(若使用外部数据库,如MySQL)。rsync定时备份到远程服务器(如rsync -avz /var/lib/jenkins user@backup_server:/backup/jenkins);Jenkins Backup Plugin(支持增量备份、加密备份);通过以上步骤,可在Ubuntu上构建一个具备负载均衡、故障转移、数据一致性的Jenkins高可用架构,保障CI/CD流程的连续性和稳定性。