温馨提示×

linux gitlab怎样搭建集群

小樊
44
2026-10-01 13:34:22
栏目: 智能运维

在 Linux 上搭建 GitLab 集群,通常不是“像数据库一样直接多节点复制”,而是采用 高可用(HA)架构。GitLab 官方推荐的是 多节点 + 外部共享组件 的方式。

下面我按常见生产级方案给你讲清楚。


一、GitLab 集群的核心思路

GitLab 本身由多个服务组成:

  • Web / API(Puma / Unicorn)
  • Sidekiq(异步任务)
  • GitLab Shell
  • PostgreSQL(数据库)
  • Redis(缓存 / 队列)
  • Gitaly(Git 仓库存储)
  • NGINX(入口)

✅ 集群思路:

应用节点可横向扩展,状态型组件(PG / Redis / Gitaly)单独高可用


二、推荐架构(生产级)

            ┌────────────┐
用户 ──────▶ │  LB (Nginx/Haproxy)
            └─────┬──────┘
                  │
        ┌─────────┼─────────┐
        │         │         │
   GitLab    GitLab    GitLab
   节点1      节点2      节点3
(无状态)

外部高可用组件:
- PostgreSQL(主从 + 流复制)
- Redis(Sentinel)
- Gitaly(集群)
- NFS / 对象存储(仓库 / 上传文件)

三、最小高可用组件清单

1️⃣ 负载均衡(必须)

  • Nginx / HAProxy
  • 做 HTTPS + 多 GitLab 节点转发

2️⃣ PostgreSQL(必须 HA)

  • 官方支持 10+
  • 推荐:
    • 主从流复制
    • 或使用 Patroni + etcd

3️⃣ Redis(必须 HA)

  • Redis Sentinel
  • GitLab 原生支持

4️⃣ Gitaly(Git 存储)

两种方式:

  • 共享存储(NFS)(简单但不推荐大集群)
  • Gitaly Cluster(推荐)

5️⃣ 对象存储(可选但强烈推荐)

  • MinIO / S3
  • 用于:
    • CI 产物
    • LFS
    • 备份

四、部署方式选择

✅ 方式一:Omnibus GitLab(最常用)

适合:

  • 中小集群
  • 运维简单

示例(应用节点)

# 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'

✅ 方式二:GitLab Helm(Kubernetes)

✅ 官方最推荐的未来方向

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

优点:

  • 天然多副本
  • 自动扩容
  • 适合 DevOps 团队

五、典型部署步骤(Omnibus)

1️⃣ 准备机器

  • 3× GitLab App 节点
  • 3× PostgreSQL
  • 3× Redis
  • 1× LB

2️⃣ 安装 GitLab

apt install gitlab-ee

3️⃣ 配置 gitlab.rb

  • 指向外部 PG / Redis
  • 关闭本地状态服务

4️⃣ 配置 Gitaly

  • 单节点 → NFS
  • 多节点 → Gitaly Cluster

5️⃣ 配置 LB

upstream gitlab {
  server 10.0.0.1;
  server 10.0.0.2;
  server 10.0.0.3;
}

6️⃣ 验证

gitlab-rake gitlab:check

六、重要注意事项

❗ GitLab 不是无状态应用

  • 仓库数据必须一致
  • 不建议“简单多 master”

❗ NFS 性能问题

  • 大仓库慎用
  • 推荐 Gitaly Cluster

❗ 备份

  • 数据库
  • Gitaly
  • 对象存储

七、你适合哪种?

场景 推荐
小公司 Omnibus + NFS
中大型 Omnibus + PG/Redis HA
云原生 GitLab Helm
超大团队 Gitaly Cluster

如果你愿意,我可以:

  • 给你 一份完整 gitlab.rb 示例
  • 或 画一张架构图
  • 或 针对你现有服务器数量设计方案

你现在是打算 物理机 / 虚拟机 / K8s 部署?

0 踩