在 Linux 上搭建 GitLab 集群,通常不是“像数据库一样直接多节点复制”,而是采用 高可用(HA)架构。GitLab 官方推荐的是 多节点 + 外部共享组件 的方式。
下面我按常见生产级方案给你讲清楚。
GitLab 本身由多个服务组成:
✅ 集群思路:
应用节点可横向扩展,状态型组件(PG / Redis / Gitaly)单独高可用
┌────────────┐
用户 ──────▶ │ LB (Nginx/Haproxy)
└─────┬──────┘
│
┌─────────┼─────────┐
│ │ │
GitLab GitLab GitLab
节点1 节点2 节点3
(无状态)
外部高可用组件:
- PostgreSQL(主从 + 流复制)
- Redis(Sentinel)
- Gitaly(集群)
- NFS / 对象存储(仓库 / 上传文件)
两种方式:
适合:
# gitlab.rb
external_url 'https://gitlab.example.com'
# 禁用自带 PG / Redis
postgresql['enable'] = false
redis['enable'] = false
gitlab_rails['db_host'] = 'pg-vip'
gitlab_rails['redis_host'] = 'redis-vip'
✅ 官方最推荐的未来方向
helm repo add gitlab https://charts.gitlab.io
helm install gitlab gitlab/gitlab \
--set global.hosts.domain=example.com \
--set postgresql.install=false \
--set redis.install=false
优点:
apt install gitlab-ee
upstream gitlab {
server 10.0.0.1;
server 10.0.0.2;
server 10.0.0.3;
}
gitlab-rake gitlab:check
❗ GitLab 不是无状态应用
❗ NFS 性能问题
❗ 备份
| 场景 | 推荐 |
|---|---|
| 小公司 | Omnibus + NFS |
| 中大型 | Omnibus + PG/Redis HA |
| 云原生 | GitLab Helm |
| 超大团队 | Gitaly Cluster |
如果你愿意,我可以:
你现在是打算 物理机 / 虚拟机 / K8s 部署?