6.3 KiB
ours RP Docker 安装包使用说明(__PACKAGE_ARCH__ / __PACKAGE_PLATFORM__)
目标
本安装包用于在目标架构与包元数据匹配的 Linux 服务器上,通过 Docker Compose 部署 ours RP,并持续运行 all5 RIR 同步验证任务。
安装包内置与包架构一致的四类镜像:ours RP runtime、artifact metrics、Prometheus、Grafana。部署时不需要现场拉取应用镜像。运行产物、状态数据库、日志、Prometheus 和 Grafana 数据均通过宿主机目录挂载保存。
默认情况下,宿主架构必须与 PACKAGE-MANIFEST.env 中的 PACKAGE_ARCH 匹配;若确需在异构主机上通过 QEMU/binfmt 运行,必须显式设置:
ALLOW_CROSS_ARCH=1
Compose 模板来源
compose/ 是唯一的生产 Docker Compose 模板来源,Docker 安装包构建脚本会直接复制该目录。不要在其他目录维护第二份 compose、Prometheus 或 Grafana dashboard 文件。
旧的直接 Compose 部署入口已经移除。需要部署 amd64 或 arm64 时,统一先用 scripts/docker/build_docker_installer_package.sh 构建对应架构安装包,再按本说明执行 install.sh、start.sh 和 status.sh。
快速开始
tar -xzf ours-rp-docker-installer-__PACKAGE_ARCH__-*.tar.gz
cd ours-rp-docker-installer-__PACKAGE_ARCH__-*
./install.sh
cp .env.example .env # 如 install.sh 已自动创建,可直接编辑现有 .env
vim .env
./start.sh
./status.sh
默认配置:
PACKAGE_ARCH=__PACKAGE_ARCH__PACKAGE_PLATFORM=__PACKAGE_PLATFORM__RIRS=afrinic,apnic,arin,lacnic,ripeMAX_RUNS=-1INTERVAL_SECS=600TAL_INPUT_MODE=file-live-taRESOURCE_VALIDATION_MODE=validation-update-03LIVE_TA_REFRESH_BEFORE_SNAPSHOT=1PERIODIC_SNAPSHOT_RESET=0PERIODIC_SNAPSHOT_MAX_DELTAS=100HOST_DATA_DIR=__HOST_DATA_DIR__SOAK_RESTART_POLICY=unless-stoppedRPKI_IMAGE=ours-rp-runtime-__PACKAGE_ARCH__:devMETRICS_IMAGE=ours-rp-metrics-__PACKAGE_ARCH__:devMETRICS_PLATFORM=__PACKAGE_PLATFORM__MONITOR_PLATFORM=__PACKAGE_PLATFORM__ALLOW_CROSS_ARCH=0RTR_REPORT_DIR=__HOST_DATA_DIR__/empty-rtr-report,默认挂载空目录;如需接入独立 RTR 服务 report,可设置为宿主机真实目录,例如/root/rpki/report
首次启动语义
如果 HOST_DATA_DIR/runs 下没有成功 run,start.sh 会先启动核心 ours-rp-soak,等待第一轮 snapshot 成功后再启动 metrics、Prometheus 和 Grafana。
容器镜像分工:
ours-rp-soak使用RPKI_IMAGEartifact-metrics使用METRICS_IMAGEprometheus/grafana使用各自 monitor image
第一轮 snapshot 会先拉取 live TA,避免 clean state 使用旧 fixture TA。
资源验证模式
新增配置:
RESOURCE_VALIDATION_MODE=validation-update-03
可选值:
validation-update-03:默认,按当前 validation update draft 语义运行;rfc6487:切换为 RFC 6487 原始资源包含判定语义。
installer / soak runner 每次启动 rpki 子进程时都会显式传入 --resource-validation-mode。
如果升级时复用旧 .env 且缺少该变量,installer 会自动补入默认值 validation-update-03,不会破坏旧 .env 复用流程。
架构检查
关键脚本会读取:
.env中的PACKAGE_ARCH/PACKAGE_PLATFORMPACKAGE-MANIFEST.env- 当前宿主
uname -m
默认行为:
- 宿主与包架构匹配:直接运行;
- 宿主与包架构不匹配:明确报错并停止;
- 仅当
ALLOW_CROSS_ARCH=1时,脚本才会尝试启用对应架构的binfmt/qemu。
因此在 x86_64 主机上运行 arm64 包,不会默认静默进入模拟执行。
访问端口
默认端口:
- metrics:
http://<host>:9556/metrics - Prometheus:
http://<host>:9090 - Grafana:
http://<host>:3000
Grafana 默认账号密码来自 .env:
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=admin
生产部署时应修改密码并限制外部访问。
可选 RTR report 监控接入
如果同一台机器上已经有独立部署的 RTR 服务,并且它持续输出 rtr-source-*、rtr-runtime-*、rtr-clients-* JSON report,可在 .env 中配置:
RTR_REPORT_DIR=/root/rpki/report
RTR_REPORT_CONTAINER_DIR=/var/lib/ours-rp/rtr-report
artifact-metrics 容器会以只读方式挂载该目录,并通过 RPKI_METRICS_RTR_REPORT_DIR 读取 report,输出 ours_rp_rtr_* 指标。默认 RTR_REPORT_DIR 指向安装包数据目录下的空 fallback 目录,因此未接入 RTR 服务时 metrics 容器也能稳定启动。
数据目录
默认宿主机目录:
__HOST_DATA_DIR__/
state/
runs/
logs/
tmp/
prometheus/
grafana/
runs/run_XXXX/ 中包含每轮 report.json、result.ccr、input.cir、vrps.csv、vaps.csv、stage-timing.json、日志和元数据。
定期 snapshot reset
新增配置:
PERIODIC_SNAPSHOT_RESET=0
PERIODIC_SNAPSHOT_MAX_DELTAS=100
语义:
- 默认关闭,行为与旧版本一致;
- 开启后,一次成功 snapshot 后最多连续执行
N个成功 delta; - 达到阈值后,下一轮强制跑 snapshot;
- 强制 snapshot 前只重置 active
state/db,保留runs/、logs/、state/rsync-mirror、.env、Prometheus/Grafana 数据; - 周期计数保存在独立 lifecycle 文件
HOST_DATA_DIR/state/run-lifecycle-state.json,不依赖runs/保留窗口; - lifecycle 文件损坏时会先备份为
run-lifecycle-state.json.corrupt.<timestamp>.<pid>,再从当前保留 run 尽力 bootstrap; - 强制 snapshot 成功后旧 DB staging 会被删除,避免磁盘只是换目录继续增长。
可通过最新 run-meta.json 中的以下字段确认:
sync_modesnapshot_reasonperiodic_snapshot_delta_countperiodic_snapshot_forcedreset_db_cleanup_status
常用命令
./status.sh
./logs.sh ours-rp-soak --tail 200
./restart.sh
./stop.sh
./cleanup.sh --keep-runs 100 --execute
./uninstall.sh
如果做有限轮次验收,例如 MAX_RUNS=3,建议同时设置:
SOAK_RESTART_POLICY=no
否则 Compose 的 unless-stopped 策略会在容器正常退出后再次拉起下一轮。
uninstall.sh 默认不删除数据。只有显式执行:
./uninstall.sh --purge-data
才会删除 HOST_DATA_DIR。