故障恢复 SSOT¶
SSOT Key:
ops.recovery核心定义: 定义故障恢复策略、紧急绕过路径 (Break-glass) 及数据还原流程。
1. 真理来源 (The Source)¶
原则:1Password 是最终的信任根 (Root of Trust)。只要它还在,基础设施就可重建。
| 维度 | 物理位置 (SSOT) | 说明 |
|---|---|---|
| Master Keys | 1Password | Root Token, Unseal Keys, SSH Keys |
| 数据备份 | /data + 远端备份(规划中) | DB Dumps |
| 代码仓库 | GitHub | 部署代码、Compose 定义 |
2. 架构模型 (恢复路径)¶
```mermaid graph TD Failure((故障发生))
subgraph "L1 Recovery"
Failure -->|Dokploy 挂了| Reinstall[重新安装 Dokploy]
Reinstall -->|依赖| OP_SSH[1Password: SSH Key]
end
subgraph "L2 Recovery"
Failure -->|Vault Sealed| Unseal[Vault Unseal]
Unseal -->|依赖| OP_KEYS[1Password: Unseal Keys]
Failure -->|SSO 不可用| RootLogin[Vault Root Token]
RootLogin -->|依赖| OP_ROOT[1Password: Root Token]
end
subgraph "L3 Data Recovery"
Failure -->|DB 丢数据| Restore[PG Restore]
Restore -->|依赖| BACKUP[备份文件]
end
```
3. 设计约束 (Dos & Don'ts)¶
✅ 推荐模式 (Whitelist)¶
- 模式 A: 必须定期验证 1Password 中的密钥是否有效(演练)。
- 模式 B: 必须将
/data的关键数据备份到异地。
⛔ 禁止模式 (Blacklist)¶
- 反模式 A: 禁止 仅依赖 Vault 存储自身的 Unseal Keys(死锁)。
- 反模式 B: 禁止 无备份直接清理
/data。
4. 标准操作程序 (Playbooks)¶
SOP-001: Vault 解封 (Unseal)¶
- 触发条件: Vault 重启后处于 Sealed 状态
- 步骤:
- 获取 Keys:
op item get "bootstrap/vault/Unseal Keys" --vault "Infra2" --reveal - 进入 VPS 并执行:
bash ssh root@<VPS_HOST> export VAULT_ADDR=https://vault.<INTERNAL_DOMAIN> vault operator unseal <key1> vault operator unseal <key2> vault operator unseal <key3>
- 获取 Keys:
SOP-002: 平台数据库恢复¶
- 触发条件: Platform PG 数据损坏
- 步骤:
- 停止相关服务(Dokploy Stop)。
- 恢复数据:
bash ssh root@<VPS_HOST> docker exec -i platform-postgres${ENV_SUFFIX} psql -U postgres < /data/backups/latest.sql - 启动服务并验证健康。
SOP-003: 紧急访问 (Break-glass)¶
- 触发条件: SSO 不可用,需操作 Vault
- 步骤:
- 获取 Root Token:
op item get "bootstrap/vault/Unseal Keys" --vault "Infra2" --reveal - 登录:
vault login <root_token>
- 获取 Root Token:
5. 验证与测试 (The Proof)¶
| 行为描述 | 验证方式 | 覆盖率 |
|---|---|---|
| 备份文件存在性 | 手动检查 /data/backups |
⏳ Manual |
| Vault Unseal 流程 | vault status |
✅ Manual |