在 CentOS 上实现 GitLab 高可用(HA),通常有三种主流方案,取决于你对“高可用”的要求(避免单点故障 / 数据不丢 / 自动切换)。
下面按 从简单到复杂 给你一个清晰路线。
适用场景
GitLab A <---> 共享存储(NFS/iSCSI)
GitLab B <---> 虚拟 IP (VIP)
/var/opt/gitlab/etc/gitlab✅ 实现简单
✅ 数据一致性好
❌ 不是自动故障转移(除非写脚本)
适用场景
GitLab 官方支持以下角色分离:
| 组件 | 说明 |
|---|---|
| PostgreSQL | 主从 + 流复制 |
| Redis | Sentinel |
| GitLab Rails | 多应用节点 |
| Sidekiq | 多节点 |
| Gitaly | Git 仓库服务 |
| Nginx / LB | 负载均衡 |
2× GitLab App
1× PostgreSQL Primary
1× PostgreSQL Standby
1× Redis + Sentinel
1× Gitaly
https://docs.gitlab.com/ee/administration/high_availability/
✅ 官方支持
✅ 可水平扩展
❌ 配置复杂
❌ 资源占用高
适用场景
GitLab Primary <--> DRBD同步
GitLab Standby <--> Keepalived VIP
✅ 数据强一致
✅ 接近自动 HA
❌ DRBD 已偏老技术
适用场景
gitlab-operator✅ 弹性伸缩
✅ 真正云原生
❌ 学习成本高
不管选哪种 HA,都必须做:
gitlab-rake gitlab:backup:create
建议:
✅ 小团队
双机 + NFS + Keepalived
✅ 公司级
GitLab 官方 HA
✅ 只有 2 台机器
DRBD + Keepalived
如果你愿意,可以告诉我:
我可以直接帮你 画架构图 + 给配置示例。