温馨提示×

centos gitlab如何容灾

小樊
44
2026-09-18 00:58:17
栏目: 智能运维

在 CentOS 上部署的 GitLab 容灾,一般从备份恢复、主从复制、高可用架构、异地容灾几个层面来做。下面按“实用程度”从简单到复杂说明。


一、最基础:定期备份(必须做)

1. 使用 GitLab 自带备份

gitlab-rake gitlab:backup:create

默认备份目录:

/var/opt/gitlab/backups

2. 自动定时备份

crontab -e

示例(每天 2 点):

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

3. 备份异地存储

  • 同步到对象存储(S3 / MinIO)
  • rsync 到异地服务器
rsync -az /var/opt/gitlab/backups user@backup-server:/gitlab-backup/

✅ 适合:小团队、成本敏感


二、备份 + 配置同步(推荐)

GitLab 备份不包含配置文件,需单独备份:

/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json

恢复步骤:

# 安装同版本 GitLab
yum install gitlab-ee

# 恢复配置
cp gitlab.rb gitlab-secrets.json /etc/gitlab/
gitlab-ctl reconfigure

# 恢复数据
gitlab-rake gitlab:backup:restore BACKUP=时间戳

✅ 适合:单数据中心容灾


三、主从容灾(Geo,官方方案)

GitLab Geo(企业版 EE 支持)

  • 主节点(Primary):写
  • 从节点(Secondary):读 + 灾备

架构

CentOS 主 GitLab  →  异地 CentOS 从 GitLab

特点

  • 数据库复制(PostgreSQL)
  • Git 仓库同步
  • 附件同步
  • 主宕机可提升从节点

限制

  • 必须是 GitLab EE
  • 版本必须一致
  • 配置较复杂

✅ 适合:中大型团队、跨地域


四、基于文件 & 数据库同步(社区版方案)

1. PostgreSQL 流复制

主库 → 备库(hot standby)

2. Git 仓库同步

  • rsync
  • git mirror
git clone --mirror git@primary:group/repo.git
git push --mirror git@backup:group/repo.git

3. 附件同步

rsync -az /var/opt/gitlab/gitlab-rails/uploads backup:/var/opt/gitlab/gitlab-rails/uploads

⚠️ 非实时,可能丢数据

✅ 适合:不想买 EE


五、高可用(HA,单中心)

组件级别冗余

  • PostgreSQL:主从 + 故障切换
  • Redis:哨兵
  • GitLab:多应用节点
  • 共享存储:NFS / Ceph

⚠️ 成本高,运维复杂

✅ 适合:核心研发平台


六、容灾演练(很重要)

定期做:

  • 删除测试环境 GitLab
  • 用备份恢复
  • 验证仓库、MR、用户是否完整

建议方案(按规模)

规模 推荐方案
小团队 每日备份 + 异地 rsync
中型 备份 + 配置同步 + 演练
大型 GitLab Geo
核心平台 Geo + HA

如果你愿意,可以告诉我:

  • GitLab 版本(CE / EE)
  • 是否跨机房
  • 数据量 & 团队规模

我可以给你一套可直接落地的 CentOS 容灾方案

0