在 Linux 上搭建 GitLab 集群,通常指 GitLab 高可用(HA)集群,而不是像 Kubernetes 那样“无状态集群”。GitLab 官方支持 多节点高可用架构,但不支持完全自动化的水平扩展集群(如 GitLab 本身不推荐多活 Web + 多活 DB 的简单集群)。
下面我按 可落地方案 给你讲清楚 ✅
GitLab 官方推荐 两种 HA 架构:
适合企业级生产环境
架构组件拆分:
| 组件 | 是否可集群 | 说明 |
|---|---|---|
| GitLab Rails (Web) | ✅ 多节点 | 无状态 |
| Sidekiq | ✅ 多节点 | 任务队列 |
| Gitaly | ✅ 集群 | Git 仓库存储 |
| PostgreSQL | ✅ 主从 / Patroni | 数据库 |
| Redis | ✅ Sentinel / Cluster | 缓存 |
| GitLab Pages / Registry | ✅ 多节点 | 可选 |
┌─────────────┐
│ Load │
│ Balancer │
└──────┬──────┘
│
┌──────────┴──────────┐
│ │
┌─────▼─────┐ ┌─────▼─────┐
│ GitLab │ │ GitLab │
│ Web/API │ │ Web/API │
└─────┬─────┘ └─────┬─────┘
│ │
└──────────┬──────────┘
│
┌──────────┴──────────┐
│ │
┌─────▼─────┐ ┌─────▼─────┐
│ PostgreSQL│ │ Redis │
│ (主从) │ │ Sentinel │
└───────────┘ └───────────┘
| 节点 | 角色 |
|---|---|
| node1 | GitLab Web + Sidekiq |
| node2 | GitLab Web + Sidekiq |
| node3 | PostgreSQL 主 |
| node4 | PostgreSQL 从 |
| node5 | Redis + Sentinel |
| node6 | Gitaly |
✅ 最小建议:4 台以上
OS: Ubuntu 20.04 / 22.04 或 CentOS 7/8
内存: ≥ 8GB(Web 节点)
CPU: ≥ 4 核
# Ubuntu
curl -fsSL https://packages.gitlab.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/gitlab.gpg
echo "deb [signed-by=/usr/share/keyrings/gitlab.gpg] https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab_gitlab-ee.list
sudo apt update
sudo apt install gitlab-ee
⚠️ 必须 EE 版本(企业版)才支持 HA
PostgreSQL 主从 + 自动故障切换
# redis-sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
GitLab 配置:
gitlab_rails['redis_sentinels'] = [
{host: 'redis1', port: 26379},
{host: 'redis2', port: 26379}
]
gitaly['configuration'] = {
storage: [
{ name: 'default', path: '/var/opt/gitlab/git-data' }
]
}
多节点 Gitaly + Praefect:
praefect['nodes'] = [
{ storage: 'gitaly1', address: 'gitaly1:8075' },
{ storage: 'gitaly2', address: 'gitaly2:8075' }
]
gitlab_rails['db_host'] = 'postgres-master'
gitlab_rails['redis_host'] = 'redis-vip'
gitlab_rails['gitaly_address'] = 'tcp://gitaly:8075'
upstream gitlab {
server node1:80;
server node2:80;
}
✅ 官方支持
❌ 不支持
| 需求 | 建议 |
|---|---|
| 学习 / 测试 | 单节点 |
| 小企业 | 单节点 + 定时备份 |
| 中大型企业 | GitLab HA |
| 云原生 | GitLab Helm + Kubernetes |
你可以直接告诉我:
1️⃣ 你用的是 Ubuntu 还是 CentOS
2️⃣ 服务器数量
3️⃣ 是否必须 高可用
4️⃣ 是否考虑 K8s
我可以给你:
你现在是 学习环境 还是 生产环境?