多ノードで skills 面を一つにまとめる理由
体感速度は最も遅い冷パスで決まります。ノード間で初回キャッシュ時間がバラつくと LB が遅延の崖へ振り分けます。マニフェスト固定・prewarm・単一合成ヘルスで半温まりノードへ本番を流さないのが多機オーケストレーションの価値です。ゲートウェイ/ワーカの役割分離とインストール順は、別途マルチノード手順書で揃えてください。
ステップ1 — openclaw gateway status で基準線
テンプレを流し込む前に、実際にソケットに束ねられている制御面を確認します。LaunchDaemon や systemd と同じ POSIX ユーザーで実行し、本番と同じ権限エラーを再現してください。
sudo -u openclaw openclaw gateway status --json > /var/lib/openclaw/last-gateway-status.json
mesh_node_id、リスナアドレス、ビルド識別子、TLS プロファイルの指紋をアーカイブします。status が落ちているのに skills だけ先に配ると、キュー深さを浪費し、インシデントの時系列が壊れます。
- 合格:各ゲートウェイで JSON の
stateが運用定義の ready 相当。 - 不合格:CLI と LB 上流の健全性が食い違う——DNS か bind を直してから prewarm へ。
ステップ2 — 設定テンプレ同期と統一版固定
skills は Git SHA や内容ハッシュで指せる不変成果物として扱い、ゲートウェイ/ワーカーなど実行ロールごとに OPENCLAW_SKILLS_ROOT へ同一ツリーをコピーします。ディレクトリ 0750、シークレットのサイドカーは 0440。
export SKILLS_SHA=$(git rev-parse HEAD:skills)
rsync -a --delete ./skills/ "worker-01:/etc/openclaw/skills/${SKILLS_SHA}/"
ssh worker-01 "ln -sfn /etc/openclaw/skills/${SKILLS_SHA} /etc/openclaw/skills/current"
集約ログに SKILLS_MANIFEST_SHA256 を出しメッシュ横断で比較できるようにします。ロックファイルの列挙と検証は、冒頭でリンクしたスキル固定稿に従ってください。同期後はカナリアで openclaw doctor --scope skills(または同等)を通してから本番比率を上げます。
ステップ3 — 冷起動予熱(prewarm)
prewarm は全結合テストではありません。依存解決・キャッシュ・初回 TLSなど初回重いパスを本番キューを汚さない境界ジョブで触り、CPU・メモリ上限を掛けて共有ホストを守ります。
sudo -u openclaw openclaw skills prewarm \
--manifest /etc/openclaw/skills/current/skills.lock.json \
--concurrency 2 \
--timeout 15m
LB の重みを戻す前に実行。サブコマンドが無ければ健全な本番エントリを合成フィクスチャで叩き、出力は捨てても構いません。
ステップ4 — 統合ヘルスプローブ
LB が読むべきは 健全/ドレイン/停止の三値に集約することです。最低限、(1) ゲートウェイ TCP または HTTP 準備、(2) ワーカープロセス生存、(3) skills キャッシュの鮮度(デプロイ周期から導いた閾値)を合成します。
#!/usr/bin/env bash
set -euo pipefail
openclaw gateway status --quiet
find /var/lib/openclaw -maxdepth 1 -name skill-cache-ready -mmin -120 | grep -q .
curl -fsS http://127.0.0.1:8080/healthz >/dev/null
echo OK
skill-cache-ready は prewarm 成功時のみ。ローリング中は ドレインし、合成スクリプトがゼロ終了するまで本番を流しません。
ステップ5 — 失敗再試行(ジッター)
テンプレ同期と prewarm はレジストリ遅延や NFS の一時停止に当たります。チェックサム検証前の揺らぎだけ再試行し、マニフェスト不一致が出たら即中止——split-brain 展開の兆候です。
attempt=1
until rsync -a --checksum ./skills/ "host:/etc/openclaw/skills/${SKILLS_SHA}/"; do
[[ $attempt -ge 5 ]] && exit 1
sleep $((2 ** attempt + RANDOM % 5))
attempt=$((attempt + 1))
done
キュー向けの冪等キーや毒メッセージ退避は、ゲートウェイ再試行とワーカ再試行が増幅しないよう タスクキューとリトライ手順 と揃えてください。
FAQ — openclaw doctor で多い項目
「CONFIG_ROOT が無い」/skills パスが見えない
デーモンユーザーが OPENCLAW_CONFIG_ROOT や OPENCLAW_SKILLS_ROOT を参照できていません。LaunchDaemon の環境ブロック、NFS マウント、macOS の TCC ブロックを確認してください。
skills ツリーで Permission denied
openclaw グループで読める 0750 を基本とし、世界読み取り(0777)は避けます。プロジェクト別レイアウトは設定系の記事と揃えてください。
CLI とデーモン、またはマニフェスト SHA の食い違い
doctor がビルド不一致や current シンボリック先と manifest の差を報告したら、全ノードを同一 Git 参照から再同期し、単ファイルの手抜きコピーをやめてください。
ローカルでは gateway に届くがワーカから届かない
スプリットホライズン DNS や古い Tailscale ACL が典型です。openclaw gateway status の bind と、ワーカが使うホスト名を突き合わせ、ノート PC の /etc/hosts 頼みをやめます。
キャッシュボリュームのディスク圧迫
inode や空き容量で doctor が警告し、prewarm が途中失敗します。APFS ボリューム拡張やキャッシュ専用パスへ逃がし、プローブが緑になるまでノードをドレインします。
ヘルプやナビはサイト上部メニューからどうぞ。