以下是Jenkins在Debian上的高可用性方案,核心组件包括主从架构、负载均衡和数据共享,具体步骤如下:
安装Jenkins
在所有节点(主/从)上安装Jenkins:
sudo apt update
sudo apt install -y openjdk-11-jdk
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt update
sudo apt install -y jenkins
sudo systemctl enable --now jenkins
配置SSH免密登录
主节点需通过SSH连接从节点,确保主从节点间可无密码通信:
# 在主节点生成密钥并复制到从节点
ssh-keygen -t rsa
ssh-copy-id user@slave-ip
主节点配置
http://主节点IP:8080
,首次登录后安装「SSH Agent」插件。/var/jenkins_home
),选择「Launch agent via SSH」,填写从节点IP、SSH凭据。从节点配置
从节点无需额外安装Jenkins,仅需确保Java环境和SSH服务正常:
sudo apt install -y openjdk-11-jdk
sudo systemctl enable --now ssh
安装Nginx
sudo apt install nginx
配置负载均衡规则
编辑 /etc/nginx/nginx.conf
,添加以下内容:
upstream jenkins_cluster {
server 主节点IP:8080;
server 从节点IP:8080;
least_conn; # 动态选择负载最低的节点
}
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
共享Jenkins工作目录
使用NFS或云存储挂载JENKINS_HOME
目录,确保主从节点数据一致:
# 安装NFS服务端(主节点)
sudo apt install nfs-kernel-server
sudo mkdir -p /srv/nfs/jenkins
sudo chown nobody:nogroup /srv/nfs/jenkins
echo "/srv/nfs/jenkins *(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
# 从节点挂载NFS
sudo apt install nfs-common
sudo mount -t nfs 主节点IP:/srv/nfs/jenkins /var/jenkins_home
定期备份
使用rsync
或tar
定期备份JENKINS_HOME
目录到异地存储:
rsync -avz /var/jenkins_home/ 备份服务器IP:/backup/jenkins/
部署监控工具
自动故障转移
模拟主节点故障
停止主节点Jenkins服务,观察从节点是否接管任务:
sudo systemctl stop jenkins
测试负载均衡效果
通过Nginx访问Jenkins,验证请求是否均匀分配到各个节点。