Ubuntu Jenkins集群搭建指南
Jenkins集群通过**主节点(Master)**负责任务调度与监控、**从节点(Agent/Slave)**执行具体构建任务的架构,提升构建效率与系统弹性。以下是Ubuntu环境下Jenkins集群的详细搭建步骤:
一、前置准备
-
安装Java环境:Jenkins基于Java开发,需提前安装OpenJDK 11(推荐)。
在所有节点(主/从)上执行:sudo apt update sudo apt install -y openjdk-11-jdk java -version # 验证安装(需显示11.x版本) -
安装Jenkins:
在所有节点上添加Jenkins官方仓库并安装: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 -y jenkins sudo systemctl start jenkins sudo systemctl enable jenkins
二、配置Jenkins主节点
-
访问管理界面:
浏览器输入http://<主节点IP>:8080,通过初始密码(查看/var/lib/jenkins/secrets/initialAdminPassword)完成解锁,进入Web界面。 -
安装必要插件:
进入Manage Jenkins > Manage Plugins,安装以下插件:- SSH Slaves:用于SSH方式连接从节点;
- Pipeline:支持流水线任务;
- Credentials Binding:安全管理凭据(如Git密码、Docker Hub token)。
-
配置主节点安全:
进入Manage Jenkins > Configure Global Security,启用安全性,选择Jenkins’ own user database作为安全领域,配置Role-Based Strategy授权策略(如区分管理员与普通用户权限)。
三、添加从节点(Slave)
从节点是实际执行构建任务的机器,需通过主节点管理。以下以SSH方式为例(推荐,无需暴露JNLP端口):
-
主节点添加从节点:
进入Manage Jenkins > Manage Nodes and Clouds > New Node,输入节点名称(如ubuntu-agent-01),选择Permanent Agent,点击OK。
配置以下参数:- Remote root directory:从节点上的工作目录(如
/home/ubuntu/jenkins-agent); - Labels:节点标签(如
ubuntu、docker),用于任务定向分配(如docker标签的任务只会分发到带该标签的节点); - Usage:选择
Use this node as much as possible(尽量使用此节点); - Launch method:选择
Launch agents via SSH,点击Add添加SSH凭据(需输入从节点的用户名(如ubuntu)和私钥,私钥可通过ssh-keygen -t rsa生成并复制到从节点的~/.ssh/authorized_keys中)。
- Remote root directory:从节点上的工作目录(如
-
从节点准备工作:
在从节点上安装Java(同前置准备)和Jenkins代理(可选,若使用SSH方式无需单独安装):sudo apt update sudo apt install -y openjdk-11-jdk -
验证从节点连接:
主节点添加节点后,点击Save,Jenkins会自动尝试通过SSH连接从节点。若连接成功,从节点状态会显示为Idle(空闲)。
四、配置分布式构建任务
-
创建Pipeline任务:
进入New Item,输入任务名称(如docker-build),选择Pipeline,点击OK。 -
编写Pipeline脚本:
在Pipelinesection选择Pipeline script,输入以下脚本(示例:打印节点信息并执行简单构建):pipeline { agent { label 'ubuntu' // 指定带'ubuntu'标签的从节点 } stages { stage('Print Node Info') { steps { sh 'echo "Running on node: ${NODE_NAME}"' sh 'uname -a' } } stage('Sample Build') { steps { sh 'mkdir -p build && echo "Build successful" > build/result.txt' } } } post { always { archiveArtifacts artifacts: 'build/result.txt', fingerprint: true } } } -
运行任务并验证:
点击Build Now,进入任务详情页,查看Console Output,确认任务在指定的从节点上执行(如显示Running on node: ubuntu-agent-01)。
五、可选:配置负载均衡(提升高可用性)
若有多个主节点或从节点,可通过Nginx实现负载均衡,分发请求到多个Jenkins实例:
-
安装Nginx:
在负载均衡服务器上执行:sudo apt update sudo apt install -y nginx -
配置Nginx:
编辑/etc/nginx/sites-available/default,添加以下内容(替换、为实际IP):upstream jenkins_cluster { server:8080; server :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; proxy_set_header X-Forwarded-Proto $scheme; } } -
重启Nginx:
sudo systemctl restart nginx现在可通过
http://jenkins.yourdomain.com访问负载均衡后的Jenkins集群。
六、验证集群状态
-
查看节点列表:
主节点进入Manage Jenkins > Manage Nodes and Clouds,确认所有从节点状态为Idle。 -
查看任务分配:
创建带标签的任务,运行后进入Manage Jenkins > Manage Nodes and Clouds,点击从节点名称,查看Build History确认任务执行记录。
通过以上步骤,即可完成Ubuntu环境下Jenkins集群的搭建,实现构建任务的分布式执行。可根据实际需求扩展从节点数量、配置更复杂的负载均衡策略(如Keepalived)或集成Kubernetes(实现自动扩缩容)。