マージ順の一致ワークフロー隔離カナリア戻しで、clustervps 多ノードの OpenClaw を短いドリルに落とす四見出しです。

カナリアと skills.dテナント分割・doctorマルチ AZ 網関と併読。

テナント別設定ディレクトリ

全 Mac で /etc/openclaw/tenants/<tenant>/gateway.d 等を揃え、番号付き YAML で優先順位を固定。SQLite は /var/db/openclaw/workflows/<tenant>/ に隔離し rsync 除外。openclaw config hash --tenant が一致しない限り昇格しない。tenants/<tenant>.prev で前版へ原子フリップ。台数は料金公開ページで先に押さえる。

設定テンプレートのマージ戦略

00-platform→テナント上書き→99-canary を辞書順に重ね、複合ブロックは拡張のみ。openclaw config lint --tenant で閉路を潰し、ドライラン結果をチケットに貼る。

2026 網関ホットリロード境界。重み・include・Notifier 扇出は TLS 維持で反映しやすい。bind・認証ポート・mTLS 束・ワークフロー根はドレイン後再起動。MAINTENANCE=drain→空→launchd。秘密はプロセス境界で読み直す。

README に reload 級/restart 級を表記し、openclaw.lock をノード横断で揃える。

カナリアノードの選定とロールバック

ゲートウェイ 1 台に LB 重み約 5%、残りは旧 symlink。2 プローブ周期はエラー・p95・合成 readiness を見る。dequeue はカナリア専用副ディレクトリのみ。戻しは保存済み重み JSON と .prev、restart 級だけ当該ホスト再起動。共有ロックを先に上げなければピアは無傷。

doctor とヘルスチェックの統合

doctor --json とループバック /healthz を 1 URL の JSON に束ね、黄なら degraded で 200 を維持。

#!/usr/bin/env bash
set -euo pipefail
T="${TENANT:-demo}"
/usr/local/bin/openclaw doctor --tenant "$T" --json >/tmp/d.json
curl -fsS --max-time 2 https://127.0.0.1:8443/healthz -o /tmp/g.json
python3 -c 'import json;d=json.load(open("/tmp/d.json"));g=json.load(open("/tmp/g.json"));print(json.dumps({"tenant":"demo","doctor_ok":d.get("ok"),"gateway":g.get("status")}))'

最小チェックリスト

  1. バージョンとロックを全ノード一致。
  2. フラグメントのみ rsync、DB/秘密は除外。
  3. lint→hash をクラスタ横断で照合。
  4. 5% カナリア→観測→倍率 or LB JSON 復元。
  5. ステージングで readiness を一度赤確認。
  6. チケット・演者・digest を昇格ログへ。

月次ドリルで固定。台数は購入料金ヘルプの公開ページで先に合意。

クラスタ運用メモ。フラグはリリースノートを正とし、数値は目安で SLA ではありません。
ログイン不要の公開ページ

多ノード構成の合意形成から始める

料金ヘルプ購入ホームはログインなしで閲覧できます。まずチームで前提を揃えてからコンソールへ進めます。

購入ページを開く 料金を見る