rpki/deploy/docker-installer/docs/operations.zh-CN.md

4.1 KiB
Raw Blame History

运维手册(__PACKAGE_ARCH__

安装

./scripts/install.sh

安装脚本是幂等的:

  • 已有 .env 不覆盖;
  • 已安装 Docker/Compose 则跳过;
  • 包内 runtime、metrics、Prometheus、Grafana 对应架构镜像重复加载是安全的;
  • 数据目录已存在则复用;
  • 默认要求宿主与包架构匹配。

启动

./scripts/start.sh

如需后台启动后不等待首轮 snapshot

./scripts/start.sh --no-wait-first-run

如需显式允许异构主机通过 QEMU/binfmt 跑包,先在 .env 中设置:

ALLOW_CROSS_ARCH=1

然后重新执行 ./scripts/install.sh./scripts/self-check.sh,脚本才会尝试启用对应 binfmt。

停止和重启

./scripts/stop.sh
./scripts/restart.sh

状态检查

./scripts/status.sh
./scripts/self-check.sh

重点检查项:

  • Docker/Compose 可用;
  • runtime、metrics、Prometheus、Grafana 镜像存在;
  • HOST_DATA_DIR 可写;
  • Compose 配置合法;
  • 最新 run 状态;
  • metrics、Prometheus、Grafana endpoint
  • host_archpackage_archarch_mode 是否符合预期。

status.sh 还会显示:

  • package_arch
  • package_platform
  • runtime_image
  • metrics_image
  • allow_cross_arch
  • periodic_snapshot_reset
  • periodic_snapshot_max_deltas
  • rtr_report_dir
  • rtr_report_container_dir

如需确认 RTR report 已接入:

./scripts/register_rtr_monitor.sh --report-dir /root/rpki/report --dry-run
./scripts/register_rtr_monitor.sh --report-dir /root/rpki/report
./scripts/status.sh
curl -s "http://127.0.0.1:${METRICS_PORT:-9556}/metrics" | grep '^ours_rp_rtr_' | head

注册只支持同机的绝对目录。注册命令会保留一份带时间戳的 .env 备份,并且只更新 metrics、Prometheus、Grafana 三个旁路容器;ours-rp-soak 的容器 ID 应保持不变。

升级

把新安装包解压到新目录后,推荐通过升级脚本显式复用旧 .env

./scripts/upgrade.sh --reuse-env-from /path/to/old-installer/.env

配置按以下优先级合并,右侧同名键覆盖左侧:

新包 .env.example < 旧 .env < 本次 upgrade 命令的环境变量

例如,临时调整下轮触发间隔和 Grafana 密码:

INTERVAL_SECS=300 GRAFANA_ADMIN_PASSWORD='new-password' \
  ./scripts/upgrade.sh --reuse-env-from /path/to/old-installer/.env

升级会在加载镜像或启动容器前检查:新模板声明的所有变量在最终 .env 中都必须存在且非空。显式传入空值会失败,例如 INTERVAL_SECS= ./scripts/upgrade.sh ...。旧 .env 中已不在新模板内的键不会复制,脚本只输出相关键名而不会输出密码等值。

installer 按与 Compose 一致的 dotenv 赋值格式读取 .env。不要在文件中使用 Shell 命令替换或 $HOME 一类环境变量引用;请使用确定的值,或在执行 upgrade 时通过命令环境变量覆盖。

如果新目录已经存在 .env,升级脚本会保留它,不覆盖;此时 --reuse-env-from 不会再次导入旧配置,但本次命令的环境变量仍会覆盖已存在的 .env

.env 缺少新版本新增的键时,新包 .env.example 的默认值会保留在最终 .env 中;任一最终值为空则升级会在 Docker 操作前失败。

升级不会删除以下数据:

  • runs/
  • logs/
  • state/rsync-mirror
  • .env 对应的运行配置
  • Prometheus / Grafana 数据

验证定期 forced snapshot 时,可临时设置:

PERIODIC_SNAPSHOT_RESET=1
PERIODIC_SNAPSHOT_MAX_DELTAS=2

然后检查最新 run-meta.json 应出现:

snapshot_reason=periodic_snapshot_delta_limit

并检查独立 lifecycle 状态:

jq '{last_run,last_success_snapshot,successful_deltas_since_snapshot,state_health}' \
  "${HOST_DATA_DIR}/state/run-lifecycle-state.json"

验证完成后恢复:

PERIODIC_SNAPSHOT_MAX_DELTAS=100

清理

./scripts/cleanup.sh --keep-runs 100
./scripts/cleanup.sh --keep-runs 100 --execute

默认 dry-run确认后加 --execute