URL:2026-openclaw-clustervps-rolling-upgrade-peer-deps-canary.html。クラスタ連載:マルチ AZ 網関/カナリア・スキル/テナント Doctor/rsync。ブログ索引。
手順チェックリスト(ロールバック点つき)
上から順に実行します。ロールバック点に該当したらローリングを止め、まず復旧してから原因を切り分けます。
- 0 凍結:
openclaw.lock・LB 重み・symlink を記録。R0:未バックアップならパッケージ禁止。 - 1 カナリア:1 台のみ
npm -g(下記)。各段openclaw doctor --json。R1:非緑なら npm 巻き戻し+要約ブロードキャスト。 - 2 統合 readyz:Doctor+キュー+digest。R2:JSON ハード失敗で全停止。
- 3 5% カット:新規の約 5%、探針≥2 周期。拡大前に再チェック。R3:SLO 悪化で重みスナップショット復元。
- 4 他ノード:1→2 反復。検証済み網関より worker を進めない(多 AZ 稿)。
- 5 監査:actor・チケット・semver・
probe_sha256を 1 行。
npm -g の順序(パターン)
2026.4.x はnpm -g の順で半端状態を潰すのが前提:先に CLI/コア(ノート記載どおり)、次に公式プラグイン。ミラー利用時はカナリアで npm view とキャッシュを確認してから横展開。各レイヤ後に openclaw doctor --json と npm ls -g --depth=0、peer 警告はチケットへ。
# 例:順序とパッケージ名は自社 lockfile/リリースノートに合わせる npm install -g openclaw@2026.4.x # ドキュメントの列順で @openclaw/* プラグインを入れる、例: # npm install -g @openclaw/plugin-foo@^2026.4.0 openclaw doctor --json | tee /tmp/doctor-after-core.json npm ls -g --depth=0 2>&1 | tee /tmp/npm-global.txt
npm config get prefix を一致。brew と公式 pkg の混在は peer ズレの温床です。プラグイン peer と 2026.4.x 周りの中立メモ
近版でpeer メタ/ドキュリンク修正とミラー・イメージ生成手順の調整あり。正は CHANGELOG/リリースノート、本稿は中立。ローリング前に peer 範囲・推奨順・破壊的変更を照合し、私有 registry では CLI 整合の一覧がミラーに残るか確認。ERESOLVE は推奨レンジで、--force は避ける。
ノードごとの Doctor とヘルス探針の統合
トラフィック担当 Mac は全台 openclaw doctor。LB には統合 readyz 1 本—網関が doctor 要約・キュー・digest を束ねる(テナント稿の単一 JSON と同型)。digest 単独では昇格しない。
#!/usr/bin/env bash
set -euo pipefail
TENANT="${TENANT:-acme}"
/usr/local/bin/openclaw doctor --tenant "${TENANT}" --json >/tmp/doctor.json
/usr/bin/curl -fsS --max-time 3 "http://127.0.0.1:8088/readyz" -o /tmp/readyz.json
/usr/bin/curl -fsS --max-time 3 "http://127.0.0.1:9099/v1/webhook-digest" -o /tmp/digest.json
/usr/bin/python3 - <<'PY'
import hashlib, json, pathlib
parts = [pathlib.Path(p).read_bytes() for p in ("/tmp/doctor.json","/tmp/readyz.json","/tmp/digest.json")]
print(json.dumps({"merged_sha256": hashlib.sha256(b"".join(parts)).hexdigest()}))
PY
semver と実ディスク解決の不一致はfail。意図的劣化のみ degraded 明示。
失敗ブロードキャストとカナリアロールバックの併走
doctor/統合探針/キュー異常時は Notifier で重複排除した要約(ノード id・semver・コード・digest 断片)を送る。並行で先に R3 で流量オフ、続けて R1/R2 でパッケージ巻き戻し、同伴は停止してチケット化。網関・トークンは同シリーズ稿。
よくある質問
カナリア無し一括?非推奨。peer/ミラー問題は 1 台目で出やすく、全台同時は戻しコストが跳ねる。
イメージ生成の変更は?CI のグローバル一覧と実行時がズレると doctor/プラグインで落ちる。promote 前に本番 prefix でドライラン。
最低台数?カナリア 1+安定網関 2 が、重み戻しと同伴検証の現実的下限。