219 lines
5.9 KiB
Markdown
219 lines
5.9 KiB
Markdown
# 脚本说明
|
||
|
||
`scripts/` 目录用于离线安装、启动、健康检查、关闭和清理。
|
||
|
||
所有脚本建议在仓库根目录执行:
|
||
|
||
```bash
|
||
bash scripts/00_0_install.sh
|
||
```
|
||
|
||
## 目录
|
||
|
||
- [推荐流程](#推荐流程)
|
||
- [环境变量文件](#环境变量文件)
|
||
- [00 安装](#00-安装)
|
||
- [00 Pre-Check](#00-pre-check)
|
||
- [01 启动 Server 和 Console](#01-启动-server-和-console)
|
||
- [02 自检](#02-自检)
|
||
- [03 关闭 Server 和 Console](#03-关闭-server-和-console)
|
||
- [04 清理](#04-清理)
|
||
- [10 生成证书](#10-生成证书)
|
||
- [11 启动 Client](#11-启动-client)
|
||
- [12 关闭 Client](#12-关闭-client)
|
||
- [Windows 路径注意事项](#windows-路径注意事项)
|
||
|
||
## 推荐流程
|
||
|
||
```bash
|
||
# 1. 加载镜像并执行 pre-check。
|
||
bash scripts/00_0_install.sh
|
||
|
||
# 2. 启动真实 server 和 console。
|
||
bash scripts/01_start.sh --mode tcp
|
||
|
||
# 3. 检查 server 和 console 是否正常。
|
||
bash scripts/02_self_check.sh
|
||
|
||
# 4. 关闭 server 和 console。
|
||
bash scripts/03_shutdown.sh --mode tcp
|
||
|
||
# 5. 清理 server 运行产生的文件。
|
||
bash scripts/04_cleanup.sh
|
||
```
|
||
|
||
client 单独启动和关闭:
|
||
|
||
```bash
|
||
bash scripts/11_start_client.sh --mode tcp
|
||
bash scripts/12_shutdown_client.sh --mode tcp
|
||
```
|
||
|
||
支持的模式:
|
||
|
||
- server:`tcp`、`tls`、`ssh`、`base`
|
||
- client:`tcp`、`tls`、`ssh`
|
||
|
||
## 环境变量文件
|
||
|
||
`01_start.sh` 会读取根目录下的 `environment.server`。如果文件存在,会将其中所有 `KEY=VALUE` 同步到 `deploy/server/.env`。
|
||
|
||
示例:
|
||
|
||
```env
|
||
RPKI_RTR_CCR_HOST_DIR=/opt/rpki-rtr/data
|
||
RPKI_RTR_SLURM_HOST_DIR=/opt/rpki-rtr/data
|
||
RPKI_RTR_DB_HOST_DIR=/opt/rpki-rtr/rtr-db
|
||
RPKI_RTR_LOG_HOST_DIR=/opt/rpki-rtr/logs/server
|
||
RPKI_RTR_REPORT_HOST_DIR=/opt/rpki-rtr/report
|
||
```
|
||
|
||
`11_start_client.sh` 会读取根目录下的 `environment.client`。如果文件存在,会将其中所有 `KEY=VALUE` 同步到 `deploy/client/.env`。
|
||
|
||
如果 `environment.server` 或 `environment.client` 不存在,对应脚本会跳过更新,直接使用已有的 deploy `.env` 文件。
|
||
|
||
## 00 安装
|
||
|
||
`00_0_install.sh` 用于从 `images/` 目录加载离线 Docker 镜像,更新 deploy `.env` 中的镜像名,然后执行 pre-check。
|
||
|
||
默认镜像包查找规则:
|
||
|
||
- server:`images/rpki-rtr-*.tar`,排除 `rpki-rtr-debug-client-*.tar`
|
||
- client:`images/rpki-rtr-debug-client-*.tar`
|
||
- console:`images/rpki-console-ui-*.tar`
|
||
|
||
也可以显式指定镜像包:
|
||
|
||
```bash
|
||
bash scripts/00_0_install.sh \
|
||
--server-tar images/rpki-rtr-amd64-v1.2.tar \
|
||
--client-tar images/rpki-rtr-debug-client-amd64-v1.2.tar \
|
||
--console-tar images/rpki-console-ui-amd64-v1.0.tar
|
||
```
|
||
|
||
脚本会从 `docker load` 输出中解析真实镜像名,并写入:
|
||
|
||
- `deploy/server/.env` 的 `RPKI_RTR_SERVER_IMAGE`
|
||
- `deploy/console/.env` 的 `RPKI_CONSOLE_UI_IMAGE`
|
||
|
||
## 00 Pre-Check
|
||
|
||
`00_1_pre_check.sh` 会在 `.precheck/` 下准备隔离测试数据,使用仓库里的 Docker Compose 文件启动 server 和 debug client,然后检查:
|
||
|
||
- admin health 接口返回正常。
|
||
- server 写出了 source report。
|
||
- debug client 收到了 EndOfData 和 payload summary。
|
||
- pre-check 日志中没有 fatal 错误模式。
|
||
|
||
相关辅助脚本:
|
||
|
||
- `00_2_generate_ccr.sh`:生成固定的 CCR 测试文件。
|
||
- `00_2_pre_check_prepare.sh`:创建 `.precheck/` 数据、SLURM 文件和 env 文件。
|
||
- `00_3_pre_check_cleanup.sh`:停止 pre-check 容器并清理 `.precheck/`。
|
||
|
||
## 01 启动 Server 和 Console
|
||
|
||
`01_start.sh` 用于启动真实的 RTR server 和 console。
|
||
|
||
```bash
|
||
bash scripts/01_start.sh --mode tcp
|
||
```
|
||
|
||
启动后脚本会检查容器是否进入 `running` 状态。如果容器启动后退出,脚本会打印 compose 状态和最近日志,然后报错退出,不会继续打印 `Start Finished`。
|
||
|
||
常用参数:
|
||
|
||
```bash
|
||
bash scripts/01_start.sh --mode tls
|
||
bash scripts/01_start.sh --mode ssh
|
||
bash scripts/01_start.sh --wait 60
|
||
bash scripts/01_start.sh --env ./environment.server
|
||
```
|
||
|
||
注意:console 不读取 `environment.server`,只使用 `deploy/console/.env`。
|
||
|
||
## 02 自检
|
||
|
||
`02_self_check.sh` 用于检查 `01_start.sh` 启动的 server 和 console 是否正常。
|
||
|
||
```bash
|
||
bash scripts/02_self_check.sh
|
||
```
|
||
|
||
检查内容包括:
|
||
|
||
- server 容器是否 running。
|
||
- console 容器是否 running。
|
||
- RTR TCP 端口是否可连接。
|
||
- admin health 接口是否健康。
|
||
- console 端口和 HTTP 根路径是否可访问。
|
||
|
||
如果启动较慢,可以增加等待时间:
|
||
|
||
```bash
|
||
bash scripts/02_self_check.sh --wait 120
|
||
```
|
||
|
||
## 03 关闭 Server 和 Console
|
||
|
||
`03_shutdown.sh` 用于关闭 `01_start.sh` 启动的服务。
|
||
|
||
```bash
|
||
bash scripts/03_shutdown.sh --mode tcp
|
||
```
|
||
|
||
脚本会先关闭 console,再关闭 RTR server。
|
||
|
||
## 04 清理
|
||
|
||
`04_cleanup.sh` 用于删除 server 运行产生的目录:
|
||
|
||
- `logs/`
|
||
- `report/`
|
||
- `rtr-db/`
|
||
|
||
推荐先关闭服务,再清理:
|
||
|
||
```bash
|
||
bash scripts/03_shutdown.sh
|
||
bash scripts/04_cleanup.sh
|
||
```
|
||
|
||
清理前脚本会检查 `rpki-rtr` 是否仍在运行。如果仍在运行,会拒绝清理。只有明确需要强制清理时才使用:
|
||
|
||
```bash
|
||
bash scripts/04_cleanup.sh --force
|
||
```
|
||
|
||
清理脚本会拒绝删除仓库根目录之外的路径。如果某一项清理失败,会继续清理后续项,最后返回失败。
|
||
|
||
## 10 生成证书
|
||
|
||
`10_generate_certs.sh` 用于生成 TLS/SSH 模式需要的本地证书材料(测试用)。
|
||
|
||
```bash
|
||
bash scripts/10_generate_certs.sh
|
||
```
|
||
|
||
## 11 启动 Client
|
||
|
||
`11_start_client.sh` 用于启动 RTR debug client。
|
||
|
||
```bash
|
||
bash scripts/11_start_client.sh --mode tcp
|
||
bash scripts/11_start_client.sh --mode tls
|
||
bash scripts/11_start_client.sh --mode ssh
|
||
```
|
||
|
||
如果 `environment.client` 存在,脚本会将其中所有 `KEY=VALUE` 同步到 `deploy/client/.env`;如果不存在,则直接使用已有的 `deploy/client/.env`。
|
||
|
||
## 12 关闭 Client
|
||
|
||
`12_shutdown_client.sh` 用于关闭 `11_start_client.sh` 启动的 client。
|
||
|
||
```bash
|
||
bash scripts/12_shutdown_client.sh --mode tcp
|
||
```
|
||
|
||
关闭时建议使用和启动时相同的 mode。
|