GitLab Dedicated 的灾难恢复
- 版本:Ultimate
- 产品:GitLab Dedicated
灾难恢复流程确保在灾难影响到您的主区域时,可以恢复您的 GitLab Dedicated 实例。
GitLab 可以在这些 AWS 区域部署您的实例:
- 运行您实例的主区域。
- 如果已选择,则作为主区域故障时的备用辅助区域。
- 一个备份区域,您的数据备份会被复制到此处以提供额外保护。
如果您的由于中断或严重系统故障而无法访问,GitLab 会启动到您的辅助区域的故障转移。如果未配置辅助区域,恢复将使用来自备份区域的备份还原。
先决条件
要符合完整的恢复目标,您必须:
- 在入职期间指定主区域和辅助区域。如果您未指定辅助区域,恢复将仅限于备份还原。
- 确保两个区域都受 GitLab Dedicated 支持。如果您选择支持有限的辅助区域,则恢复时间和恢复点目标不适用。
恢复目标
GitLab Dedicated 提供具有以下恢复目标的灾难恢复:
- 恢复时间目标 (RTO):服务在八小时或更短时间内恢复到您的辅助区域。
- 恢复点目标 (RPO):数据丢失最多限于最近四小时的更改,具体取决于灾难发生的时间相对于上次备份的时间点。
组件
GitLab Dedicated 利用两个关键组件来满足灾难恢复承诺:
- Geo 复制
- 自动备份
Geo 复制
当您入职 GitLab Dedicated 时,您会为您的环境选择一个主区域和一个辅助区域。Geo 会在这些区域之间持续复制数据,包括:
- 数据库内容
- 仓库存储
- 对象存储
自动备份
GitLab 通过创建快照,每四小时(每天六次)对数据库和仓库执行自动备份。备份保留 30 天,并由 AWS 进行地理复制以提供额外保护。
数据库备份:
- 在主区域使用基于日志的持续备份以进行时间点恢复。
- 流式复制到辅助区域以提供近实时副本。
对象存储备份:
- 使用地理复制和版本控制来提供备份保护。
这些备份在灾难恢复操作中作为恢复点。四小时的备份频率支持恢复点目标 (RPO),以确保您丢失的数据不超过四小时。
灾难覆盖范围
灾难恢复涵盖以下具有保证恢复目标的场景:
- 部分区域中断(例如,可用区故障)
- 您的主区域完全中断
灾难恢复在尽力而为的基础上涵盖以下场景,但不保证恢复目标:
- 主区域和辅助区域均丢失
- 全球互联网中断
- 数据损坏问题
灾难恢复存在以下服务限制:
- 高级搜索索引不会持续复制。故障转移后,当辅助区域被提升时,这些索引将被重建。在重建期间,基本搜索仍然可用。
- ClickHouse Cloud 仅在主区域配置。如果主区域完全宕机,需要此服务的功能可能不可用。
- 生产预览环境没有辅助实例。
- 托管 Runner 仅在主区域受支持,无法在辅助实例中重建。
- 某些辅助区域支持有限,不受 RPO 和 RTO 目标的覆盖。由于 AWS 的限制,这些区域在您的故障转移实例中的电子邮件功能和弹性有限。更多信息,请参阅支持有限的辅助区域。
GitLab 不提供:
- 对故障转移事件的程序化监控
- 由客户发起的灾难恢复测试
灾难恢复工作流
当您的实例因以下原因而对大多数用户不可用时,将启动灾难恢复:
- 区域完全故障(例如,AWS 区域中断)。
- GitLab 服务或基础设施中的关键组件发生故障,无法快速恢复。
故障转移流程
当您的实例不可用时,GitLab Dedicated 团队:
- 通过监控系统收到警报。
- 调查是否需要故障转移。
- 如果需要故障转移:
- 通知您故障转移正在进行中。
- 将辅助区域提升为主区域。
- 更新
<customer>.gitlab-dedicated.com的 DNS 记录,使其指向新提升的区域。 - 在故障转移完成后通知您。
如果您使用 PrivateLink,则必须更新您的内部网络配置,以指向辅助区域的 PrivateLink 端点。为最大程度地减少停机时间,请在灾难发生前在您的辅助区域中配置等效的 PrivateLink 端点。
故障转移流程通常在 90 分钟或更短时间内完成。
灾难期间的沟通
在灾难事件期间,GitLab 会通过以下一种或多种方式与您沟通:
- 您在 Switchboard 中的运营联系信息
- Slack
- 支持工单
GitLab 可能会建立一个临时的 Slack 频道和 Zoom 会议,以便在整个恢复过程中与您的团队进行协调。