---
url: >-
  /courses/cloud-platform-build-management/12-ecs-lifecycle-recovery-observability/index.md
---
# 第十二次课：ECS 生命周期、恢复与运行观察

## 进入本课环境

* `[Windows PowerShell] wsl ~`：打开本机默认的 WSL2 Ubuntu；出现 `用户名@主机名:~$` 后再执行标为 `[WSL]` 的命令。
* `[WSL] ssh root@你的ECS公网IP`：从 WSL 连接自己的 ECS，只执行本课允许的只读检查；停止、释放、重置系统盘和快照回滚仍然停留在方案评审。

上一课把 ECS、VPC、安全组、云盘和快照放回同一张资源关系图。本次课继续向前一步：当实例需要重启、停机、恢复或排查时，怎样避免把“点一下按钮”变成一次无法回退的事故。

::: tip 关键提醒
停止、重启和 Running 是三件不同的事。停止不等于释放，重启不等于恢复，Running 也不等于业务可用。任何高风险动作都要先确认对象、授权、影响、恢复点、验证路径和费用尾项。
:::

## 12.1 高风险动作先停在方案里

本课只做状态判断、恢复方案、监控核查和费用检查。停止、释放、重置系统盘和快照回滚都可能影响可用性或数据，未经明确授权不执行。

先把动作对象、影响范围、恢复点、验证路径和费用尾项写清楚，再判断应该观察、变更还是保持现状。

## 12.2 三种“状态”不要混在一起

在阿里云控制台上看到 `Running`，仅说明实例本身处于“运行”这一生命周期状态。它无法向你保证操作系统内部、网络链路或者业务服务一切正常。

| 评估维度 | 核心回答的问题 | 有效检验证据 |
|---|---|---|
| 生命周期状态 | 实例处于启动、停止还是释放流程中？ | 控制台实例状态列表、生命周期变更记录 |
| 实例健康状态 | 底层物理宿主机、系统内核或网络底层有无异常？ | ECS 健康状态仪表盘、系统事件、平台诊断日志 |
| 业务可用状态 | 最终用户访问的网页、API 接口是否可用？ | 限制超时的 SSH 探测、HTTP 状态码、应用健康检查接口 |

阿里云官方文档对实例健康状态与生命周期状态做了严格区分：生命周期为 `Running` 时，操作系统内部完全有可能正卡在内核崩溃（Panic）或网卡断连中。

排查“网页打不开，但控制台显示 Running”时，可以按下面的层次逐步收窄问题：

```bash
[WSL] ssh -o ConnectTimeout=8 <本人账号>@<本人ECS地址>
```

该命令仅用于已授权的个人实例，最多等待 8 秒。连接超时无法直接定性为 ECS 损坏，必须进一步排查公网 IP、安全组规则、主机防火墙与 SSH 进程。

```bash
[ECS] systemctl is-active nginx
```

查看 Nginx 是否处于 `active` 状态。即使 systemd 返回 `active`，也必须从用户入口发起 HTTP 探测来确认实际响应。

```bash
[ECS] curl --max-time 5 -I http://127.0.0.1/
```

在实例内部访问回环接口，限制超时为 5 秒。这能确认本机服务进程正常且链路通畅，但依然不能代表外网安全组和公网路由完全放行。

{{guided-demo:lesson-12-lifecycle-gate}}

## 12.3 每一个生命周期动作都带有连锁代价

| 操作动作 | 主要触发变化 | 容易被遗漏的潜在影响 | 本课执行边界 |
|---|---|---|---|
| 启动 | 已停止的实例重新拉起 | 必须重新走一遍健康检查、网络与业务连通性验证 | 仅编写验证流 |
| 普通停止 | 实例计算停止，部分挂载资源保留 | 云盘、快照、固定 EIP 等可能继续产生费用 | 仅做方案审查 |
| 节省停机 | 停止后释放计算资源（StopCharging） | 再次启动可能受限于可用区库存，固定公网 IP 可能发生变更 | 仅阅读官方规范 |
| 正常重启 | 向操作系统发送平滑重启信号 | 造成暂时性业务中断，内存中未持久化的连接丢失 | 不在共享环境执行 |
| 强制重启 | 相当于直接切断电源重启 | 未刷盘的数据极易丢失，文件系统损坏风险剧增 | 本课禁止执行 |
| 释放 | 永久销毁并回收实例资源 | 实例无法挽回，绑定的数据与 IP 地址可能永久丢失 | 本课禁止执行 |
| 重置系统盘 | 将系统盘恢复至初始镜像状态 | 实例创建后写入系统盘的所有数据将彻底清空 | 本课禁止执行 |

::: warning 安全边界
释放实例、重置系统盘以及快照回滚均属于高风险破坏性动作。本课仅编写演练方案并核对官方说明，绝不要求在演示机、个人 ECS 或共享环境中真实触发。截图中切勿伪造非真实的成功结果。
:::

提交一份变更申请时，必须清晰列出：

```txt
目标对象：
当前状态：
业务影响和停机窗口：
授权人：
变更前恢复点：
依赖资源与费用尾项：
验证方法：
失败回退：
执行模式：plan-only
```

单凭“已有快照”四个字还不够。还要确认快照对应的磁盘、创建时间、保留状态、预计丢失多少新数据，以及恢复后怎样验证。

## 12.4 恢复方法由故障范围决定

**RPO**（恢复点目标，表示最多能接受丢失多长时间的数据）。

**RTO**（恢复时间目标，表示业务最多能接受中断多长时间）。

| 故障范围 | 优先考虑 | 主要优势 | 主要限制 |
|---|---|---|---|
| 少量文件误删 | 从独立备份恢复文件 | 影响面小，可选择具体文件 | 依赖可用且经过验证的文件备份 |
| 需要查看旧数据 | 从快照创建新盘并只读挂载 | 不立即覆盖原盘，便于比对 | 会产生额外云盘和费用，挂载也要谨慎 |
| 整盘配置或数据需要回到旧时点 | 使用快照回滚原盘 | 恢复范围明确 | 会覆盖快照之后的数据，通常需要停机 |
| 系统彻底重建 | 镜像、自动化脚本和数据备份重建 | 更接近标准化环境 | 依赖完整构建与数据恢复流程 |

阿里云官方回滚文档说明，快照可以把云盘恢复到某个时间点，用于误删、错误配置或勒索软件等恢复场景；同时也列出了“只能回滚创建该快照的云盘”等限制。

选择恢复方法前连续问六个问题：

1. 坏的是一个文件、一块数据盘、系统盘，还是整台实例？
2. 当前数据还在继续写入吗？
3. 最近可用恢复点是什么时候？
4. 快照或备份是否属于正确的对象？
5. 恢复会覆盖哪些新数据？
6. 用哪条用户路径验证恢复结果？

能保留原盘时，先从快照创建新盘进行比对通常更稳妥；但新盘会带来资源与费用，验证结束要按批准方案清理。

## 12.5 监控不是一张 CPU 曲线

监控至少覆盖三层：

| 层次 | 示例 | 它能回答什么 | 它不能替代什么 |
|---|---|---|---|
| 云平台 | vCPU 使用率、网络流量、磁盘 I/O、健康状态 | 平台看到的资源与宿主状态 | 实例内进程、应用返回内容 |
| 操作系统 | `free`、`df`、`ss`、服务状态、系统日志 | 内存、磁盘、端口和服务情况 | 用户从外部访问的完整路径 |
| 应用 | HTTP 状态、健康接口、关键事务 | 用户功能是否可用 | 主机资源趋势与费用变化 |

阿里云官方文档列出 ECS 控制台的 vCPU 使用率、网络流量和磁盘 I/O，并说明云监控可以提供更细的监控维度。

在 **ECS** 上做只读巡检时，每条命令回答一个问题：

```bash
[ECS] uptime
```

显示运行时长和负载均值，用来观察是否刚刚重启以及系统负载概况。负载值要结合 CPU 核数和进程进一步判断。

```bash
[ECS] free -h
```

以易读单位显示内存。重点观察 `available`，不要只盯着 `free`。

```bash
[ECS] df -h /
```

检查根文件系统容量。磁盘接近满时应先找增长来源，不要直接删除未知文件。

```bash
[ECS] ss -lnt
```

列出 TCP 监听端口。它能证明服务在某地址监听，能不能从外部访问还得看安全组放没放行。

```bash
[ECS] curl --max-time 5 -fsS http://127.0.0.1/health
```

访问应用健康接口，`-f` 让 4xx/5xx 返回失败，`-sS` 保留错误，`--max-time` 防止无限等待。若应用没有 `/health`，改用课程实际入口。

## 12.6 流量和费用也要进入运行检查

按量实例、云盘、快照、公网流量和 EIP 可能分别计费。停止实例后，某些独立资源仍可能保留并继续产生费用；费用告警用于提醒，通常不会替你强制停止资源。

每周至少核对：

| 检查项 | 问题 | 记录方式 |
|---|---|---|
| 实例状态与计费方式 | 停止后哪些费用仍保留？ | 控制台字段或官方文档证据 |
| 公网流量 | 本月已用多少、剩余多少？ | 脱敏后的数值与日期 |
| 云盘和快照 | 是否有不用的独立资源？ | 只读资源清单，不直接删除 |
| 告警与预算 | 阈值、通知对象是否有效？ | 测试通知或配置页面说明 |
| 到期与余额 | 是否可能影响后续使用？ | 只记录风险，不提交余额截图 |

学生优惠、免费额度、流量包和价格都可能调整，实际规则以购买页、控制台和账单为准。报告不填写订单号、余额、完整账号或支付信息。

## 12.7 本课实训：先写清楚，再决定是否允许执行

进入 **WSL**：

```bash
[WSL] cd ~/cloud-course/lab-12
```

进入本课目录。预期 `pwd` 末尾为 `/cloud-course/lab-12`。

```bash
[WSL] mkdir -p answers
```

创建答题目录，已有目录时不会报错。

```bash
[WSL] cp starter/*.tsv answers/
```

复制生命周期、恢复和监控费用三张模板。它们默认包含 `待填写`，完成后才能通过验收。

先编辑 `answers/instance-lifecycle-plan.tsv`。为所有动作填写影响、授权、前置恢复证据、验证和回退；`release`、`reinitialize-system-disk` 必须保持 `plan-only`。

再编辑 `answers/recovery-plan.tsv`。针对“误删单个文件”“需要查看旧数据”和“整盘回到旧时点”三种场景分别选择恢复方法；`snapshot-rollback` 必须保持 `plan-only`。

最后编辑 `answers/observability-cost-check.tsv`。每一行写清信号来源、判断问题、后续动作和证据限制，至少覆盖平台、操作系统、应用与费用。

完整步骤见[实训 12：ECS 生命周期与恢复评审](./lab-12.md)。

{{chat-lab:lesson-12-recovery-evidence}}

## 12.8 验收、清理和提交

```bash
[WSL] bash verify.sh
```

脚本检查三张 TSV、必需动作、恢复方法、观察层次和高风险动作的 `plan-only` 边界。它不登录控制台，也不执行停止、释放、回滚或重置。

人工复核继续检查：

* 生命周期状态、健康状态和业务状态没有混淆；
* 恢复点属于正确云盘，数据损失窗口写清；
* 验证沿用户原路径进行，而不是只看控制台按钮；
* 费用告警没有被写成硬性限额；
* 没有账号、完整公网地址、资源 ID、余额或支付信息。

本课没有启动后台服务，也没有创建或修改云资源。清理时删除 WSL 中不需要的临时答题副本即可，不要删除本人云盘、快照或实例。

提交文件：

```txt
班级_学号_姓名_第12次课_ECS生命周期与恢复评审报告.docx
```

只提交一个 Word 到智慧职教“第12次课”。

{{reflection-checkpoint:lesson-12-recovery-ready}}

## 12.9 第十二次课小测

{{assessment:lesson-12-check}}

## 12.10 小结

* 实例生命周期状态、健康状态和业务可用状态需要三层取证。
* 停止、重启、释放、重新初始化系统盘的影响不同。
* 快照回滚会覆盖快照后的数据，从快照创建新盘更适合先比对。
* 监控要同时看平台、系统和应用，Running 不是验收结论。
* 停机后仍要核对云盘、快照、EIP、流量和告警。
* 高风险动作先写 `plan-only` 方案，未经批准不得执行。

下一次课将用 Terraform 把云资源计划写成代码，并继续讨论状态文件、凭据与云存储证据。

## 12.11 资料来源

以下资料在 2026-07-28 核对：

* [阿里云：停止实例](https://help.aliyun.com/zh/ecs/user-guide/stop-an-instance)
* [阿里云：重启实例](https://help.aliyun.com/zh/ecs/user-guide/restart-instances)
* [阿里云：释放实例](https://help.aliyun.com/zh/ecs/user-guide/release-an-instance)
* [阿里云：查看 ECS 实例健康状态](https://help.aliyun.com/zh/ecs/user-guide/view-the-health-status-of-an-instance)
* [阿里云：快照概述](https://help.aliyun.com/zh/ecs/user-guide/snapshot-overview/)
* [阿里云：使用快照回滚云盘](https://help.aliyun.com/en/ecs/user-guide/roll-back-a-disk-by-using-a-snapshot)
* [阿里云：重新初始化系统盘](https://help.aliyun.com/zh/ecs/user-guide/re-initialize-a-system-disk)
* [阿里云：查看 ECS 实例的监控信息](https://help.aliyun.com/zh/ecs/user-guide/view-the-monitoring-information-of-an-ecs-instance)
* [阿里云：监控与日志](https://help.aliyun.com/zh/ecs/user-guide/monitoring-and-logging)
* [阿里云用户中心：预算管理](https://help.aliyun.com/en/user-center/how-to-manage-a-budget)

{{assistant-invite:lesson-12-finish}}
