温馨提示×

Jenkins在Debian上如何进行集群搭建

小樊
46
2025-11-09 08:17:06
栏目: 智能运维

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”(适用于简单环境)。
  • 保存:完成节点配置。

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. 可选:配置负载均衡(高可用)

若需提升集群可用性,可使用NginxHAProxy作为负载均衡器,将请求分发到多个主节点(适用于多主节点集群)。
以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,任务将自动分发到后端主节点。

注意事项

  • 所有节点的时间需同步(可使用ntpchrony服务)。
  • 从节点的/var/jenkins_slave目录需有足够权限(建议归属jenkins用户)。
  • 生产环境中,建议关闭Jenkins匿名访问,并配置防火墙限制端口访问(如仅允许可信IP访问8080端口)。

0