先列出RTO(恢复时间目标)与RPO(恢复点目标)、数据敏感性与合规要求(菲律宾数据隐私法)。评估带宽、跨境复制成本、是否可将备份放到菲律宾本地或新加坡节点。输出清单:关键服务(web、DB、缓存)、优先级、每日变更量。
建议采用Prometheus+Grafana做指标监控,Alertmanager做告警,配合Ping/HTTP可用性检测(UptimeRobot或自建Blackbox)。设计:节点采集->Prometheus->Grafana展示->Alertmanager告警。记录端口/协议和告警等级。

安装node_exporter:1) wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.tar.gz 2) tar zxvf ... 3) sudo mv node_exporter /usr/local/bin/ 4) 写systemd服务并启动。配置Prometheus抓取targets,示例targets: http://phi-server-ip:9100/metrics。
为MySQL使用mysqld_exporter,配置读取账户并限制权限;Redis用redis_exporter;Nginx可用nginx-vts-exporter或通过stub_status。确认exporter运行后在Prometheus抓取并在Grafana建立仪表盘(CPU、内存、连接数、慢查询、QPS)。
在Alertmanager中定义告警路由:P0走SMS/电话,P1走Slack/Email。设置抑制规则避免风暴告警。示例:CPU>90%超5分钟触发告警并调用自定义runbook(列出快速处理步骤、回滚命令、负责人联系方式)。
按数据类型制定备份:文件->rsync或borg/restic;数据库->mysqldump(小库)或Percona XtraBackup(大库);快照->LVM或云磁盘快照。推荐工具:restic(加密、去重)、rclone(同步到S3/Wasabi/Backblaze)。
1) 安装restic:sudo apt install restic。2) 初始化仓库:RESTIC_REPOSITORY=s3:s3.wasabisys.com/bucket restic init。3) crontab示例:0 2 * * * RESTIC_PASSWORD=xxx restic backup /var/www --tag web。4) rclone用于跨云复制:rclone config 创建remote,再 rclone sync /local/ remote:backup/phi --transfers=4。
备份:mysqldump --single-transaction --quick --lock-tables=false -ubackup -p'pass' dbname > /backup/dbname.sql.gz。大库:使用xtrabackup热备并复制到远端。恢复:先创建空库,mysql -u root -p dbname < dbname.sql.gz。测试恢复时务必验证数据完整性与应用连接。
选择主动-被动或主动-主动架构。主动-被动:主站在菲律宾,次站在新加坡或菲律宾不同可用区,使用数据库异步复制(或半同步)、文件通过rsync/replication。配置Keepalived做VIP漂移或使用DNS故障切换。
使用Cloudflare/Route53做低TTL(60s)记录,结合健康检查。自动化示例:当Prometheus检测主站不可达触发脚本,调用Cloudflare API切换A记录到备站IP:curl -X PUT "https://api.cloudflare.com/client/v4/zones/{zone}/dns_records/{id}" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" --data '{"content":"backup_ip"}'。演练并记录回滚流程。
每季度做一次DR演练:1) 在非生产窗口创建故障(模拟主机宕机或断链路)2) 触发告警并按runbook切换到备站3) 验证业务可用性、数据一致性4) 记录时延与问题并修正流程。演练结束后将配置恢复并生成改进报告。
备份加密(restic默认加密或使用gpg),传输使用TLS;限制备份仓库访问权限;备份保留策略满足合规(示例:日备保留7天,周备保留8周,月备保留12个月)。审计访问日志并启用二步验证。
答:不必须,但需权衡带宽成本、延迟与合规。若受地域监管或需低延迟恢复,优先选择菲律宾本地或同区域数据中心;否则可用新加坡/香港并保证加密与合规声明。
答:若使用restic,步骤为1) restic restore latest --target /restore --path /var/www 2) 停止相关服务(systemctl stop nginx)3) 将数据同步回原位置4) 恢复权限与SELinux上下文(若适用)5) 重启服务并验证。数据库用mysqldump/innobackupex恢复后需检查binlog位点。
答:必须包括主机死机(无心跳)、高CPU/内存、磁盘容量>85%、数据库主从延迟、服务健康检查失败(HTTP 5xx)、备份失败或未完成。每个告警要关联runbook并定期验证告警通路与告警接收人。