阅读量:35
Jenkins在Debian上的集群搭建步骤
1. 前置准备:安装Java环境
Jenkins基于Java运行,所有节点(主节点、从节点)均需安装OpenJDK 11(或更高版本)。
在所有节点执行以下命令:
sudo apt update
sudo apt install -y openjdk-11-jdk
java -version # 验证安装(需显示Java版本信息)
2. 主节点:添加Jenkins官方源并安装
在主节点上,添加Jenkins官方APT源以获取稳定版本:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
echo "deb http://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt update
sudo apt install -y jenkins
启动Jenkins服务并设置开机自启:
sudo systemctl enable --now jenkins
默认情况下,Jenkins主节点运行在8080端口,可通过http://<主节点IP>:8080访问。
3. 主节点:初始配置
访问Jenkins管理界面(http://<主节点IP>:8080),完成以下步骤:
- 解锁Jenkins:从
/var/lib/jenkins/secrets/initialAdminPassword读取初始密码,输入后继续。 - 安装推荐插件:选择“安装推荐插件”(包含SSH、Git等基础插件),等待安装完成。
- 创建管理员账户:设置用户名、密码等信息,完成初始配置。
4. 从节点:安装Jenkins并配置代理
在从节点上,同样安装Jenkins(版本需与主节点一致):
sudo apt update
sudo apt install -y jenkins
启动从节点服务:
sudo systemctl enable --now jenkins
5. 主节点:添加从节点
在Jenkins主节点的管理界面,进入Manage Jenkins > Manage Nodes and Clouds > New Node:
- 节点名称:输入从节点标识(如
slave1)。 - 选择类型:选择“Permanent Agent”(永久代理)。
- 配置参数:
- 远程工作目录:设置为从节点上的Jenkins工作目录(如
/var/jenkins_slave),需提前创建。 - 启动方法:选择“Launch agents via SSH”(推荐,需配置SSH免密登录)或“Launch agent via Java Web Start”(适用于简单环境)。
- 远程工作目录:设置为从节点上的Jenkins工作目录(如
- 保存:完成节点配置。
6. 配置SSH免密登录(可选但推荐)
若选择“Launch agents via SSH”,需在主节点生成SSH密钥,并将公钥复制到从节点:
# 在主节点执行
ssh-keygen -t rsa -b 4096 # 一路回车,默认路径
ssh-copy-id root@<从节点IP> # 将公钥复制到从节点(需输入从节点密码)
测试SSH连接:
ssh root@<从节点IP> # 应无需密码直接登录
7. 验证集群功能
在Jenkins主节点的管理界面,进入Manage Jenkins > Manage Nodes and Clouds,检查从节点状态:
- 若状态显示为“Idle”(空闲),则表示从节点已成功加入集群。
- 可手动触发一个简单任务(如打印“Hello World”),选择“Restrict where this project can be run”并指定从节点名称,验证任务是否在从节点执行。
8. 可选:配置负载均衡(高可用)
若需提升集群可用性,可使用Nginx或HAProxy作为负载均衡器,将请求分发到多个主节点(适用于多主节点集群)。
以Nginx为例,配置步骤如下:
- 安装Nginx:
sudo apt install -y nginx - 编辑配置文件(
/etc/nginx/sites-available/default),添加以下内容:upstream jenkins_cluster { server <主节点1IP>:8080; server <主节点2IP>:8080; # 多主节点时添加更多server } server { listen 80; location / { proxy_pass http://jenkins_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } - 重启Nginx:
sudo systemctl restart nginx - 通过Nginx的IP访问Jenkins,任务将自动分发到后端主节点。
注意事项
- 所有节点的时间需同步(可使用
ntp或chrony服务)。 - 从节点的
/var/jenkins_slave目录需有足够权限(建议归属jenkins用户)。 - 生产环境中,建议关闭Jenkins匿名访问,并配置防火墙限制端口访问(如仅允许可信IP访问8080端口)。