灾难恢复计划

范围和对象

本计划是有关从影响 Weblate 服务可用性、数据完整性,或运行持续性的灾难性事件中进行的恢复。

备注

本计划是特别为部署 Weblate s.r.o 的 Weblate 设计的,但可以相似地应用到其他部署上。

定义

  • 灾难:任何导致服务、数据、或系统功能完全或重大丧失的计划外事件,比如硬件故障、数据损坏、基础设施中断,或恶意攻击。

  • 恢复点目标 (RPO):最长可接受的数据丢失间隔:24 小时

  • 恢复时间目标 (RTO):最长可接受的恢复完整服务的时间:8 小时

关键部件

  • 应用层:Weblate Python/Django 程序、后台 workers (Celery)、及计划任务。

  • 数据层:PostgreSQL 数据库、翻译仓库 (Git) 和日志。

  • 基础设施:Web 服务器 (NGINX/Apache)、反向代理、存储卷、SSL/TLS 配置,及可选的 SIEM 日志系统。

备份策略

使用 BorgBackup 进行的自动化备份 过程保证所有必须的部件(数据库、数据、配置)的每日备份。这些备份保存在两个不同的地理位置。备份保留政策确保近期备份每天可用并保留六个月的备份。

恢复流程

失败情景:主机/系统完全丢失

  1. 开通新主机。

  2. 使用预留软件启动 Weblate。

  3. 遵循 从 BorgBackup 恢复 恢复 Weblate 备份。

  4. 重启 Weblate 容器。

  5. 验证功能并执行一致性检查。

失败情景:数据库损坏或数据卷丢失

  1. 停止 Weblate 防止进一步的写入操作。

  2. 遵循 从 BorgBackup 恢复 恢复 Weblate 备份。

  3. 重启服务并验证翻译和用户数据一致性。

失败情景:恶意篡改或勒索软件

  1. 将受影响主机同网络隔离。

  2. 识别最后一个已知良好备份(感染前)。

  3. 遵照来自 失败情景:主机/系统完全丢失 步骤在新主机上部署系统。

验证和测试

  • 备份验证:Weblate 备份的每月恢复测试。

  • 灾难恢复演练:至少每年执行,包含完整恢复到预备环境。

  • 自动的完整性检查:BorgBackup 确保备份压缩文件的完整性。

恢复后的步骤

  • 确认所有服务运行正常且可访问。

  • 通知用户和利益相关方恢复状态。

  • 记录时间线、根本原因、学到的教训。

  • 应用更新或基础设施更改来防止再次发生。

  • 如涉及漏洞遵循 漏洞披露政策