マルチ AZ 網関と補完。成果物はrsync マトリクス、索引はブログ一覧。
ディレクトリ約定
骨格は全 Mac で同一に。/usr/local/openclaw/tenants/<tenant>/fragments/*.yaml はテナント編集可、/var/lib/openclaw/merged に成果物+ SHA256、/var/log/openclaw に JSON 行とリトライ指紋。マージは一時ファイルへ書いてから mv で原子置換し、launchd に途中 YAML を読ませない。
導入単一テナント検証→複製。配線ラベルで集合選択、merged 直編集禁止。切り分けハッシュとログ。構文エラーはマージ失敗で reload 停止。
バージョンロック
ルートの versions.lock にバイナリ digest・sidecar タグ・マージスクリプト SHA を固定し、CI で照合。昇格はカナリア 1 台→ doctor/合成プローブ→短い観測→全ノードの順。URL 修正だけでもリビジョンを残し口頭ドリフトを防ぐ。台数は料金で先に押さえる。
ヘルス探針の統合
/healthz/composite のみ公開。ディスク・launchd・doctor・キューを直列化し tenant/az 付き JSON。網関が失敗をローカルへ、通知器が 5 分窓で 1 件要約。滞留は degraded。
#!/usr/bin/env bash
set -euo pipefail
/usr/bin/openclaw doctor --tenant "${TENANT}" --json >"/tmp/d.json"
/usr/bin/curl -fsS --max-time 4 "${WEBHOOK_PING_URL}" >/dev/null
/usr/bin/printf '{"tenant":"%s","doctor_ok":true,"webhook_ok":true,"queue_depth":0}\n' "${TENANT}"
パス統一で SSH スクリプト再利用。ヘルプと突き合わせ。
トークンのローテーション
Bearer と mTLS は分離。フラグメントにはパスだけ書き、秘密はストア注入でマージ成果物は参照のみ。シャドウをカナリアに載せ、外向きと要約が二周成功したらタグで全展開。短命ファイル+rename で原子更新、12h 重複猶予と監査ログ必須。公開先は月次ローテ目安、漏えい疑いは全テナント即時+ merged の grep。
ステップチェックリスト
- Mac 3 台(2 台+ノート可):網関 A/B、通知器 N。
- フラグメント+マージで
merged/openclaw.yamlと.sha256。openclaw validateで本番前に止める。 versions.lock+CI、初台で doctor/Webhook ping。- 合成プローブを LB 単一路径に載せ、DNS を外して JSON 反映を見る。
- 通知器で 4xx/5xx を流し、5 分窓で要約 1 件・テナント/相関 ID を確認。
- シャドウトークン→全ノード、旧鍵失効と merged grep。
- runbookに SSH ジャンプとロールバック。購入/ホームで予算合わせ。
FAQ(要点)
衝突は即失敗。doctorはタイムアウト→degraded。要約は件数+代表 URL、詳細は JSONL。