112 lines
1.8 KiB
Markdown
112 lines
1.8 KiB
Markdown
|
|
# 服务停止 Runbook
|
||
|
|
|
||
|
|
## 触发条件
|
||
|
|
- 计划维护
|
||
|
|
- 紧急故障处理
|
||
|
|
- 服务器关机
|
||
|
|
|
||
|
|
## 警告
|
||
|
|
|
||
|
|
**停止服务前请确保:**
|
||
|
|
- 已通知相关人员
|
||
|
|
- 已备份最新数据
|
||
|
|
- 已记录当前操作
|
||
|
|
|
||
|
|
## 停止步骤
|
||
|
|
|
||
|
|
### 1. 通知相关人员
|
||
|
|
|
||
|
|
在停止服务前,通知:
|
||
|
|
- [ ] 管理员
|
||
|
|
- [ ] 开发团队
|
||
|
|
- [ ] 依赖该服务的下游系统
|
||
|
|
|
||
|
|
### 2. 备份数据(可选)
|
||
|
|
|
||
|
|
如果是有计划的维护,建议先备份:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 执行备份
|
||
|
|
./scripts/backup/backup.sh
|
||
|
|
|
||
|
|
# 验证备份
|
||
|
|
./scripts/backup/backup.sh --verify
|
||
|
|
|
||
|
|
# 列出备份
|
||
|
|
./scripts/backup/backup.sh --list
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. 停止服务
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 优雅停止(等待现有请求处理完成)
|
||
|
|
docker compose stop
|
||
|
|
|
||
|
|
# 或者强制停止(立即终止)
|
||
|
|
docker compose kill
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4. 确认服务已停止
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 检查容器状态
|
||
|
|
docker compose ps
|
||
|
|
|
||
|
|
# 预期输出:没有运行的容器
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5. 清理资源(如果需要)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 停止并移除容器(保留数据卷)
|
||
|
|
docker compose down
|
||
|
|
|
||
|
|
# 完全清理(包括数据卷 - 会丢失数据!)
|
||
|
|
docker compose down -v
|
||
|
|
```
|
||
|
|
|
||
|
|
## 维护期间的替代方案
|
||
|
|
|
||
|
|
如果需要短时间维护,可以:
|
||
|
|
|
||
|
|
1. **使用维护页面**
|
||
|
|
```bash
|
||
|
|
# 配置 nginx 返回维护页面
|
||
|
|
# 参考 nginx 配置文档
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **切换到备用服务器**
|
||
|
|
```bash
|
||
|
|
# 在备用服务器启动服务
|
||
|
|
docker compose -f docker-compose.backup.yml up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
## 回滚步骤
|
||
|
|
|
||
|
|
停止后重新启动:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 重新启动
|
||
|
|
docker compose up -d
|
||
|
|
|
||
|
|
# 验证服务
|
||
|
|
curl http://localhost:8080/api/v1/health
|
||
|
|
```
|
||
|
|
|
||
|
|
## 紧急停止
|
||
|
|
|
||
|
|
如果遇到紧急安全事件:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 立即停止所有容器
|
||
|
|
docker compose kill
|
||
|
|
|
||
|
|
# 阻止外部访问(防火墙)
|
||
|
|
sudo ufw deny 8080/tcp
|
||
|
|
```
|
||
|
|
|
||
|
|
## 联系人
|
||
|
|
|
||
|
|
- 运维负责人:[填写]
|
||
|
|
- 安全团队:[填写]
|