20260626 ARM64 Docker Compose部署与live TA首轮刷新
This commit is contained in:
87
deploy/arm64-compose/.env.example
Normal file
87
deploy/arm64-compose/.env.example
Normal file
@@ -0,0 +1,87 @@
|
||||
# ours RP ARM64 Docker Compose 示例配置
|
||||
# 复制为 .env 后再启动:
|
||||
# cp .env.example .env
|
||||
|
||||
# 业务镜像名称;需要先通过 docker load 导入远端 Docker。
|
||||
RPKI_IMAGE=ours-rp-runtime-arm64:dev
|
||||
|
||||
# 核心 RP 镜像强制以 ARM64 运行;远端233为 x86_64,需要 binfmt/qemu 支持。
|
||||
RPKI_PLATFORM=linux/arm64
|
||||
|
||||
# 验收默认只跑 APNIC;all5 可改成 afrinic,apnic,arin,lacnic,ripe。
|
||||
RIRS=apnic
|
||||
|
||||
# 固定跑两轮:首轮 snapshot,第二轮 delta。
|
||||
# 负数表示持续运行;ARM64 QEMU 首版验收不建议默认持续运行。
|
||||
MAX_RUNS=2
|
||||
|
||||
# 两轮之间间隔秒数。
|
||||
INTERVAL_SECS=0
|
||||
|
||||
# 保留最近多少个 run 目录。
|
||||
RETAIN_RUNS=5
|
||||
|
||||
# TA/TAL 输入模式:
|
||||
# - file-with-ta:完全使用镜像内 fixture;
|
||||
# - file-live-ta:snapshot 轮先完成 live TA 获取,delta 轮后台刷新 TA;
|
||||
# - url:从 TAL URL 拉取。
|
||||
TAL_INPUT_MODE=file-live-ta
|
||||
|
||||
# rsync 默认按 module-root 批量拉取,和当前 ours RP soak 默认优化配置一致。
|
||||
RSYNC_SCOPE=module-root
|
||||
|
||||
# 容器里不需要杀宿主机上的其他 RP 进程;远端宿主机如有竞争进程,请在宿主机侧处理。
|
||||
DISABLE_COMPETING_RPS=0
|
||||
|
||||
# 运行态数据目录。容器内固定路径,外部由 compose volume 保存。
|
||||
RUN_ROOT=/var/lib/ours-rp
|
||||
DB_DIR=/var/lib/ours-rp/state/db
|
||||
RSYNC_MIRROR_ROOT=/var/lib/ours-rp/state/rsync-mirror
|
||||
|
||||
# 每轮结束后清理 daemon 临时目录。
|
||||
# Docker Compose 中 tmp 是独立 volume 挂载点,不能删除挂载点本身;默认关闭。
|
||||
CLEAN_TMP_AFTER_RUN=0
|
||||
|
||||
# 报告使用 compact JSON,降低写盘体积。
|
||||
OUTPUT_COMPACT_REPORT=1
|
||||
|
||||
# 复用 rsync mirror,避免 delta 每轮从零拉取。
|
||||
ALLOW_RSYNC_MIRROR_REUSE=1
|
||||
|
||||
# 前一轮失败时,新一轮从 snapshot 恢复。
|
||||
FAILURE_SNAPSHOT_RESET=1
|
||||
|
||||
# QEMU 验收优先降低额外统计开销;需要精确 DB 统计时改为 3 或其他正整数。
|
||||
DB_STATS_EXACT_EVERY=0
|
||||
|
||||
# 开启当前主线使用的验证缓存与请求预取能力。
|
||||
ENABLE_CHILD_CERTIFICATE_VALIDATION_CACHE=1
|
||||
RPKI_ANALYZE=1
|
||||
RPKI_EXTRA_ARGS="--enable-transport-request-prefetch --enable-publication-point-validation-cache --enable-roa-validation-cache --parallel-max-repo-sync-workers-global 4 --parallel-phase2-object-workers 4 --memory-trim-after-validation"
|
||||
|
||||
# 进度日志阈值。QEMU 下执行较慢,阈值不宜过低。
|
||||
RPKI_PROGRESS_LOG=1
|
||||
RPKI_PROGRESS_SLOW_SECS=20
|
||||
RPKI_PROGRESS_STAGE_FRESH_SLOW_MS=2000
|
||||
RPKI_PROGRESS_PP_CONTROL_SLOW_MS=200
|
||||
RPKI_PROGRESS_PP_CACHE_SLOW_MS=100
|
||||
RPKI_PROGRESS_CONTROL_LOOP_SLOW_MS=2000
|
||||
|
||||
# live TA 刷新超时。
|
||||
LIVE_TA_REFRESH_CONNECT_TIMEOUT_SECS=15
|
||||
LIVE_TA_REFRESH_MAX_TIME_SECS=120
|
||||
|
||||
# file-live-ta 在 snapshot 轮先完成 live TA 获取再启动子进程,避免首轮使用旧 fixture TA。
|
||||
LIVE_TA_REFRESH_BEFORE_SNAPSHOT=1
|
||||
|
||||
# metrics sidecar 配置。
|
||||
METRICS_INSTANCE=remote233-arm64-qemu
|
||||
METRICS_PORT=9556
|
||||
METRICS_POLL_SECS=10
|
||||
|
||||
# Prometheus / Grafana 配置。
|
||||
PROMETHEUS_PORT=9090
|
||||
PROMETHEUS_RETENTION=7d
|
||||
GRAFANA_PORT=3000
|
||||
GRAFANA_ADMIN_USER=admin
|
||||
GRAFANA_ADMIN_PASSWORD=admin
|
||||
94
deploy/arm64-compose/docker-compose.yml
Normal file
94
deploy/arm64-compose/docker-compose.yml
Normal file
@@ -0,0 +1,94 @@
|
||||
services:
|
||||
ours-rp-soak:
|
||||
image: ${RPKI_IMAGE:-ours-rp-runtime-arm64:dev}
|
||||
platform: ${RPKI_PLATFORM:-linux/arm64}
|
||||
container_name: ours-rp-arm64-soak
|
||||
env_file:
|
||||
- ./.env
|
||||
environment:
|
||||
PACKAGE_ROOT: /opt/ours-rp
|
||||
ENV_FILE: /opt/ours-rp/.env
|
||||
RUN_ROOT: /var/lib/ours-rp
|
||||
BIN_DIR: /opt/ours-rp/bin
|
||||
FIXTURE_DIR: /opt/ours-rp/fixtures
|
||||
volumes:
|
||||
- ./.env:/opt/ours-rp/.env:ro
|
||||
- rpki-state:/var/lib/ours-rp/state
|
||||
- rpki-runs:/var/lib/ours-rp/runs
|
||||
- rpki-logs:/var/lib/ours-rp/logs
|
||||
- rpki-tmp:/var/lib/ours-rp/tmp
|
||||
restart: "no"
|
||||
profiles:
|
||||
- core
|
||||
|
||||
artifact-metrics:
|
||||
image: ${RPKI_IMAGE:-ours-rp-runtime-arm64:dev}
|
||||
platform: ${RPKI_PLATFORM:-linux/arm64}
|
||||
container_name: ours-rp-arm64-artifact-metrics
|
||||
env_file:
|
||||
- ./.env
|
||||
command:
|
||||
- /opt/ours-rp/bin/rpki_artifact_metrics
|
||||
- --run-root
|
||||
- /var/lib/ours-rp
|
||||
- --listen
|
||||
- 0.0.0.0:9556
|
||||
- --poll-secs
|
||||
- ${METRICS_POLL_SECS:-10}
|
||||
- --instance
|
||||
- ${METRICS_INSTANCE:-remote233-arm64-qemu}
|
||||
ports:
|
||||
- "${METRICS_PORT:-9556}:9556"
|
||||
volumes:
|
||||
- rpki-state:/var/lib/ours-rp/state:ro
|
||||
- rpki-runs:/var/lib/ours-rp/runs:ro
|
||||
- rpki-logs:/var/lib/ours-rp/logs:ro
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- sidecar
|
||||
|
||||
prometheus:
|
||||
image: ${PROMETHEUS_IMAGE:-prom/prometheus:v2.55.1}
|
||||
container_name: ours-rp-arm64-prometheus
|
||||
command:
|
||||
- --config.file=/etc/prometheus/prometheus.yml
|
||||
- --storage.tsdb.path=/prometheus
|
||||
- --storage.tsdb.retention.time=${PROMETHEUS_RETENTION:-7d}
|
||||
- --web.enable-lifecycle
|
||||
depends_on:
|
||||
- artifact-metrics
|
||||
ports:
|
||||
- "${PROMETHEUS_PORT:-9090}:9090"
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||
- prometheus-data:/prometheus
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- monitor
|
||||
|
||||
grafana:
|
||||
image: ${GRAFANA_IMAGE:-grafana/grafana:11.3.1}
|
||||
container_name: ours-rp-arm64-grafana
|
||||
depends_on:
|
||||
- prometheus
|
||||
ports:
|
||||
- "${GRAFANA_PORT:-3000}:3000"
|
||||
environment:
|
||||
GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER:-admin}
|
||||
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:-admin}
|
||||
GF_USERS_ALLOW_SIGN_UP: "false"
|
||||
volumes:
|
||||
- grafana-data:/var/lib/grafana
|
||||
- ./grafana/provisioning:/etc/grafana/provisioning:ro
|
||||
- ./grafana/dashboards:/var/lib/grafana/dashboards:ro
|
||||
restart: unless-stopped
|
||||
profiles:
|
||||
- monitor
|
||||
|
||||
volumes:
|
||||
rpki-state:
|
||||
rpki-runs:
|
||||
rpki-logs:
|
||||
rpki-tmp:
|
||||
prometheus-data:
|
||||
grafana-data:
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"annotations": {
|
||||
"list": []
|
||||
},
|
||||
"editable": true,
|
||||
"fiscalYearStartMonth": 0,
|
||||
"graphTooltip": 0,
|
||||
"id": null,
|
||||
"links": [],
|
||||
"panels": [
|
||||
{
|
||||
"datasource": {"type": "prometheus", "uid": "Prometheus"},
|
||||
"fieldConfig": {"defaults": {"color": {"mode": "thresholds"}, "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]}}, "overrides": []},
|
||||
"gridPos": {"h": 5, "w": 6, "x": 0, "y": 0},
|
||||
"id": 1,
|
||||
"options": {"colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "wideLayout": true},
|
||||
"pluginVersion": "11.3.1",
|
||||
"targets": [{"expr": "ours_rp_latest_run_sequence", "legendFormat": "latest run", "refId": "A"}],
|
||||
"title": "Latest Run Sequence",
|
||||
"type": "stat"
|
||||
},
|
||||
{
|
||||
"datasource": {"type": "prometheus", "uid": "Prometheus"},
|
||||
"fieldConfig": {"defaults": {"color": {"mode": "thresholds"}, "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]}}, "overrides": []},
|
||||
"gridPos": {"h": 5, "w": 6, "x": 6, "y": 0},
|
||||
"id": 2,
|
||||
"options": {"colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "wideLayout": true},
|
||||
"pluginVersion": "11.3.1",
|
||||
"targets": [{"expr": "ours_rp_latest_run_wall_ms / 1000", "legendFormat": "wall seconds", "refId": "A"}],
|
||||
"title": "Latest Wall Seconds",
|
||||
"type": "stat"
|
||||
},
|
||||
{
|
||||
"datasource": {"type": "prometheus", "uid": "Prometheus"},
|
||||
"fieldConfig": {"defaults": {"color": {"mode": "palette-classic"}, "custom": {"drawStyle": "line", "lineInterpolation": "linear", "lineWidth": 2, "pointSize": 4, "showPoints": "never"}}, "overrides": []},
|
||||
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
|
||||
"id": 3,
|
||||
"options": {"legend": {"displayMode": "list", "placement": "bottom", "showLegend": true}, "tooltip": {"mode": "multi", "sort": "none"}},
|
||||
"targets": [{"expr": "ours_rp_latest_run_wall_ms / 1000", "legendFormat": "wall seconds", "refId": "A"}],
|
||||
"title": "Wall Time Trend",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {"type": "prometheus", "uid": "Prometheus"},
|
||||
"fieldConfig": {"defaults": {"color": {"mode": "palette-classic"}, "custom": {"drawStyle": "line", "lineInterpolation": "linear", "lineWidth": 2, "pointSize": 4, "showPoints": "never"}}, "overrides": []},
|
||||
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 5},
|
||||
"id": 4,
|
||||
"options": {"legend": {"displayMode": "list", "placement": "bottom", "showLegend": true}, "tooltip": {"mode": "multi", "sort": "none"}},
|
||||
"targets": [
|
||||
{"expr": "ours_rp_latest_run_vrps", "legendFormat": "VRPs", "refId": "A"},
|
||||
{"expr": "ours_rp_latest_run_aspas", "legendFormat": "VAPs", "refId": "B"},
|
||||
{"expr": "ours_rp_latest_run_publication_points", "legendFormat": "PP", "refId": "C"}
|
||||
],
|
||||
"title": "Output Counts",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": {"type": "prometheus", "uid": "Prometheus"},
|
||||
"fieldConfig": {"defaults": {"color": {"mode": "palette-classic"}, "custom": {"drawStyle": "line", "lineInterpolation": "linear", "lineWidth": 2, "pointSize": 4, "showPoints": "never"}}, "overrides": []},
|
||||
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8},
|
||||
"id": 5,
|
||||
"options": {"legend": {"displayMode": "list", "placement": "bottom", "showLegend": true}, "tooltip": {"mode": "multi", "sort": "none"}},
|
||||
"targets": [{"expr": "ours_rp_latest_run_max_rss_kb / 1024", "legendFormat": "Max RSS MiB", "refId": "A"}],
|
||||
"title": "Max RSS Trend",
|
||||
"type": "timeseries"
|
||||
}
|
||||
],
|
||||
"preload": false,
|
||||
"refresh": "10s",
|
||||
"schemaVersion": 40,
|
||||
"tags": ["ours-rp", "arm64", "qemu"],
|
||||
"templating": {"list": []},
|
||||
"time": {"from": "now-1h", "to": "now"},
|
||||
"timepicker": {},
|
||||
"timezone": "browser",
|
||||
"title": "Ours RP ARM64 Compose Overview",
|
||||
"uid": "ours-rp-arm64-overview",
|
||||
"version": 1,
|
||||
"weekStart": ""
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
apiVersion: 1
|
||||
|
||||
providers:
|
||||
- name: ours-rp-arm64
|
||||
orgId: 1
|
||||
folder: Ours RP ARM64
|
||||
type: file
|
||||
disableDeletion: false
|
||||
updateIntervalSeconds: 10
|
||||
allowUiUpdates: true
|
||||
options:
|
||||
path: /var/lib/grafana/dashboards
|
||||
@@ -0,0 +1,10 @@
|
||||
apiVersion: 1
|
||||
|
||||
datasources:
|
||||
- name: Prometheus
|
||||
uid: Prometheus
|
||||
type: prometheus
|
||||
access: proxy
|
||||
url: http://prometheus:9090
|
||||
isDefault: true
|
||||
editable: true
|
||||
13
deploy/arm64-compose/prometheus.yml
Normal file
13
deploy/arm64-compose/prometheus.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
global:
|
||||
scrape_interval: 5s
|
||||
evaluation_interval: 5s
|
||||
|
||||
scrape_configs:
|
||||
- job_name: ours-rp-artifact-metrics
|
||||
metrics_path: /metrics
|
||||
static_configs:
|
||||
- targets:
|
||||
- artifact-metrics:9556
|
||||
labels:
|
||||
rp: ours-rp
|
||||
source: arm64-compose-artifact-sidecar
|
||||
Reference in New Issue
Block a user