1. 目标:将台湾独享VPS维持在可自动化运维、可观测、可恢复的状态。小分段:说明RPO/RTO目标(如RPO=15m,RTO=30m),明确备份频率与监控阈值。
2. 步骤:选择稳定镜像(Ubuntu LTS / Debian),确认磁盘分区(/boot, /, /var/log)。小分段:创建快照策略(每日快照+重要变更快照)。
3. 操作:创建管理员用户并禁用密码登录:
- 添加用户:adduser deployer && usermod -aG sudo deployer
- 配置SSH公钥:把公钥写入/home/deployer/.ssh/authorized_keys
- 禁用root密码和密码登录:编辑/etc/ssh/sshd_config设置PermitRootLogin no、PasswordAuthentication no,重启SSH:systemctl restart sshd
- 安装防火墙与fail2ban:apt update && apt install -y ufw fail2ban,允许必要端口并启用:ufw allow 22/tcp && ufw enable。
4. 步骤:安装并配置unattended-upgrades:
- 安装:apt install -y unattended-upgrades apt-listchanges
- 编辑/etc/apt/apt.conf.d/50unattended-upgrades启用安全更新并配置重启策略;
- 测试:/usr/bin/unattended-upgrade --dry-run
小分段:将内核重要更新设置为需要人工确认的策略,避免自动内核升级导致不可预期重启。
5. 步骤:在本地控制节点建立inventory与playbook:
- inventory示例:[taiwan]\n1.2.3.4 ansible_user=deployer
- playbook示例(安装基础包):
- hosts: taiwan\n become: yes\n tasks:\n - apt: name={{item}} state=latest update_cache=yes\n loop: [\"nginx\",\"git\",\"python3\"]
小分段:用Ansible vault保存密钥,CI触发playbook做零停机部署。
6. 步骤:在VPS上安装node_exporter并在Prometheus采集: - 下载并运行node_exporter为systemd服务; - Prometheus配置示例:在targets加入VPS IP:9100; - 配置Alertmanager发送邮件/Slack:定义alert规则(CPU>90% 5m); 小分段:为关键服务写黑盒探测脚本(HTTP 200、DB连接),Prometheus抓取并关联告警。
7. 步骤:使用restic备份重要目录到S3兼容存储:
- 安装:下载restic二进制并放在/usr/local/bin
- 初始化仓库:export AWS_ACCESS_KEY_ID=...; restic -r s3:s3.example.com/bucket init
- 增量备份脚本(/usr/local/bin/backup.sh):restic -r s3:s3.example.com/bucket --password-file /root/.restic_pw backup /etc /var/www && restic prune -r ...
- 用systemd timer或crontab定时执行(每15m增量,每日全量)。
小分段:备份加密、定期验证(restic check)与保留策略(保留最近7天、每周4周、每年12年)。
8. 恢复流程:
- 场景A(单文件/目录恢复):restic -r s3:... restore latest --target /restore --include /var/www
- 场景B(整机重建):用快照或云镜像重建,执行Ansible playbook恢复配置与服务,重新导入restic备份数据;
- DNS与IP:提前准备漂移IP或使用低TTL的DNS,以便切换到备用实例。
小分段:每次恢复后做完整验证(服务健康、日志、性能)。
9. 操作:每季度做一次完整灾难演练: - 步骤:模拟主机不可用->启动备用实例->执行Ansible恢复->从restic恢复数据->切换DNS->验证业务; - 验证项:数据完整性、服务启动时间、告警是否被清除。 小分段:记录演练日志、调整RTO/RPO并更新Runbook。
10. 答:通过KPI评估:部署时间(从0到可访问服务),恢复时间(RTO)、数据丢失(RPO)、自动化覆盖率(配置由Ansible管理比例)、演练通过率。自动化到位时可用这些指标持续下降/稳定达标。
11. 答:本地备份风险高(单点失效)。推荐异地备份(跨机房或云对象存储)、使用restic等工具加密备份、启用版本保留与多副本,并定期用restic check做完整性校验。
12. 答:提前准备备用实例与低TTL DNS,使用基础镜像+Ansible自动化快速重建,恢复restic备份并调整负载均衡/域名指向。关键是事先把脚本、密钥与权限放在受控的CI/CD或密钥库,确保不依赖故障主机。