下面按常见生产场景给你讲 Linux 下 GitLab 的集群配置方案,从简单到复杂,你可以按规模选择。
GitLab 集群一般包含以下几类组件分离/高可用:
GitLab 不推荐直接用多台机器跑“完全一样的 GitLab”,而是组件拆分 + 高可用。
适合 < 50 人
# 安装
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
yum install gitlab-ce
# 配置
vi /etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com'
gitlab-ctl reconfigure
✅ 不算集群,但最稳定、最省心
Nginx
├── GitLab App (2台)
├── PostgreSQL (主从)
└── Redis (主从)
# 两台 PG 做流复制
primary <-> standby
gitlab.rb:
gitlab_rails['db_host'] = 'pg-host'
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = 'password'
postgresql['enable'] = false
redis['enable'] = false
gitlab_rails['redis_host'] = 'redis-host'
gitlab_rails['redis_port'] = 6379
每台:
external_url 'http://gitlab.example.com'
gitlab_rails['enable'] = true
sidekiq['enable'] = true
前面加 Nginx / HAProxy 做负载均衡。
Git 仓库是 IO 密集,不能放应用服务器。
GitLab App x N
Gitaly x 3 (RAFT / Praefect)
PostgreSQL x 2
Redis x 2
gitaly['enable'] = true
gitaly['configuration'] = {
storage: [
{ name: 'default', path: '/var/opt/gitlab/gitaly' }
]
}
GitLab:
git_data_dirs({
"default" => { "gitaly_address" => "tcp://gitaly1:8075" }
})
适合 500+ 人
helm repo add gitlab https://charts.gitlab.io
helm install gitlab gitlab/gitlab
✅ 自动:
upstream gitlab {
server 10.0.0.1:80;
server 10.0.0.2:80;
}
server {
listen 80;
location / {
proxy_pass http://gitlab;
}
}
❌ GitLab 不支持“多 master 写” ❌ Gitaly 不能简单 rsync ❌ 小团队别上集群(运维成本高)
| 规模 | 方案 |
|---|---|
| < 50人 | 单节点 |
| 50–200人 | PG/Redis 外置 |
| 200–1000人 | Gitaly + 多 App |
| 1000+ | K8s GitLab |
如果你愿意,可以告诉我:
我可以直接给你一套可落地的配置清单。