
1.1 明确业务SLA(可用率)、RPO(最大可容忍数据丢失时间)和RTO(恢复时间目标),例如:SLA 99.95%、RPO 4小时、RTO 1小时。
1.2 根据SLA把服务分级(核心/重要/非关键),为不同等级制定不同监控粒度和备份频率,记录在运维手册。
2.1 指标采集:在每台美国租用服务器安装 node_exporter(Linux)或 windows_exporter(Windows),若使用容器加 cAdvisor。示例:sudo systemctl enable --now node_exporter。
2.2 聚合与告警:部署 Prometheus 做抓取,配置 scrape_configs 指向各服务器 IP,并配置 alertmanager;告警渠道接入邮件/Slack/PagerDuty。示例:prometheus.yml 中添加 targets。
2.3 可视化:用 Grafana 建立关键仪表盘(CPU、内存、磁盘IO、网络带宽、磁盘使用率、负载、TCP连接数、应用响应时间),并为每个告警制作演练说明。
3.1 集中日志:部署 Filebeat/Fluentd 将日志发送到 Elasticsearch/Graylog 或 Loki,统一检索和告警。
3.2 异常检测:建立关键日志关键词告警(如 OOM、数据库死锁、500 错误),并用路由规则避免告警风暴(抑制、分级)。
4.1 文件与应用分离:静态文件(/var/www、用户上传)采用 rsync + 存储桶(S3/Wasabi/Backblaze)异地备份;数据库使用专门工具。
4.2 数据库备份:MySQL 可用 mysqldump(逻辑备份)或 Percona XtraBackup(物理备份,支持热备),示例:mysqldump --single-transaction -u root -p dbname > /backup/dbname.sql。
4.3 备份周期与保留:全量周一次、增量按小时或4小时一次,根据RPO调整;保留策略例如:保留7天按4小时增量、30天每日全量、12个月月度快照。
5.1 加密与权限:备份在客户端加密(使用 GPG 或 borg init --encryption=repokey),并限制访问密钥,仅运维审核访问。
5.2 传输优化:用 rsync + --bwlimit 限制带宽,或直接上传到 S3:aws s3 cp /backup s3://bucket/ --storage-class STANDARD_IA。
5.3 自动化:写 cron 或 systemd timer 执行备份脚本,示例 crontab:0 */4 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1。
6.1 编写恢复 Runbook:详细记录恢复顺序(网络 -> 负载均衡 -> 应用 -> 数据库 -> 文件),包含具体命令和时间预算。
6.2 演练步骤:每季度至少一次全流程恢复演练,验证备份可用性;恢复示例:从 S3 下载并解密,mysql -u root -p dbname < dbname.sql。
6.3 自动验证:备份完成后执行校验(校验 MD5 或自动启动临时容器加载数据进行 smoke test),若失败自动告警并重试。
问:如何在美国多机房部署避免单点故障?
答:把应用与备份放在至少两个可用区或不同提供商(例如 AWS us-east + DigitalOcean NYC 或其他机房),使用异地备份(异区 S3 或 provider-to-provider rsync),并在 DNS 层使用低 TTL + 健康检查实现故障切换;数据库可考虑主从或组复制,定期测试切换。
问:如何控制备份成本同时满足RPO?
答:采用分层存储(近期使用标准存储,长期归档使用 Glacier/Cold),使用增量/差异备份减少传输量,并启用压缩;通过评估业务优先级对不同数据设置不同备份频率与保留策略,避免对非关键数据过度备份。
问:监控告警频率过高如何优化?
答:先分类告警(告警、事件、通知),为临时波动设置抑制与阈值(例如平均值/95百分位而非瞬时值),使用抑制窗口与抑制规则合并重复告警,添加自动恢复脚本(比如磁盘剩余低于阈值时自动清理临时文件)并持续调优告警规则以减少噪声。