以下是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,验证请求是否均匀分配到各个节点。