# 🚨 排错实战演练 · 三起"生产事故"

> 对应教程**第 7 章（故障排查专题）+ 第 6 章（负载均衡）**
> 你是值班工程师。线上系统 `https://www.lab.local` 出故障了，用户投诉已到。
> 你的任务：**根据症状找出病因 → 修复 → 体检脚本确认恢复**。

---

## 排错方法论（第 7 章教的，按顺序来）

```
① 看现象    curl -k https://www.lab.local        ← 亲眼看到故障
② 查服务    systemctl status nginx                ← 服务活着吗
            docker ps -a                          ← 容器活着吗
③ 查配置    nginx -t                              ← 配置语法对吗
④ 查日志    tail -20 /var/log/nginx/error.log     ← nginx 怎么说
            docker logs ws-lb-web2                ← 容器怎么说
⑤ 修复后跑  sudo bash /mnt/d/Desktop/世界技能云计算/lab/check_lb.sh
```

## 演练流程

```bash
# 1. 注入故障（模拟事故发生）
sudo bash /mnt/d/Desktop/世界技能云计算/lab/make_fault.sh 1   # 或 2、3

# 2. 你来排查修复（不许看 make_fault.sh 的源码！那等于作弊）

# 3. 修复后体检
sudo bash /mnt/d/Desktop/世界技能云计算/lab/check_lb.sh        # 看到 ✅ 才算修好
```

---

## 🔴 事故一（难度★）：用户说"网站时好时坏"

**症状**：刷新几次能打开（显示 Backend-1），再刷新又打不开（502）。
**业务影响**：约一半请求失败。
**思考方向**：负载均衡后面有几台后端？它们都活着吗？
**修复目标**：`check_lb.sh` 全绿。

## 🟠 事故二（难度★）：用户说"整站打不开，连接被拒绝"

**症状**：curl 直接报 `Connection refused`，连 502 都没有。
**业务影响**：100% 不可用，P0 级事故。
**思考方向**：连接被拒 = 那个端口上**根本没有程序在监听**。是谁不干了？
**修复目标**：`check_lb.sh` 全绿。

## 🔥 事故三（难度★★）：用户说"全是 502 Bad Gateway"

**症状**：网站能连上（nginx 活着），但每次都返回 502。
**业务影响**：100% 不可用，但和事故二病因**不同**。
**思考方向**：nginx 活着却连不上后端 → 看 `/var/log/nginx/error.log` 它尝试连了哪里；再对比后端**实际**在哪个端口（`docker ps` 或 `ss -tlnp`）。
**修复目标**：`check_lb.sh` 全绿。

---

## 修好之后

三起事故全部修完，你就完成了一次完整的"SRE 值班演练"——这正是教程第 7 章的实战形态，也是比赛排错题的考法。

想再练？把 3 个故障按不同顺序再来一轮，或者让我出更难的第 4 题（证书过期 / 磁盘写满 / 权限丢失）。
