Jenkins在Linux上的负载均衡实现指南
一、总体架构与适用场景
二、方案一 外部负载均衡器 + 多个Jenkins实例(入门与高可用)
sudo systemctl restart jenkins。sudo apt-get install nginx(Debian/Ubuntu)或 yum install nginx(CentOS/RHEL)。upstream jenkins {
server 192.168.1.11:8080;
server 192.168.1.12:8081;
# 可按需增加权重、max_fails、fail_timeout 等
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://jenkins;
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;
}
}
sudo systemctl restart nginx && sudo systemctl enable nginx。sudo apt-get install haproxy 或 yum install haproxy。frontend jenkins_front
bind *:80
default_backend jenkins_back
backend jenkins_back
balance roundrobin
server jenkins1 192.168.1.11:8080 check
server jenkins2 192.168.1.12:8081 check
sudo systemctl restart haproxy && sudo systemctl enable haproxy。sudo apt-get install certbot python3-certbot-nginxsudo certbot --nginx -d yourdomain.com(自动修改 Nginx 配置启用 SSL/TLS)。三、方案二 Master-Slave 分布式构建(提升构建并发)
四、方案三 Kubernetes 上的弹性负载均衡(进阶)
apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: jenkins
spec:
selector:
app: jenkins
ports:
- port: 8080
targetPort: 8080
kubectl apply -f jenkins-service.yamlkubectl exec -it $(kubectl get pod -n jenkins -l app=jenkins -o jsonpath='{.items[0].metadata.name}') -n jenkins cat /var/jenkins_home/secrets/initialAdminPassword五、关键注意事项与最佳实践
ip_hash 或 HAProxy stick-table)以避免表单提交与 WebSockets 会话中断;同时启用 CSRF 保护 与 安全代理头(已在示例中包含 X-Real-IP/X-Forwarded-For/X-Forwarded-Proto)。