本文假设 LB 后至少两台网关机,另有一台持 git 的构建/预发机;除 rsync 或 CM、编号 YAML 与保存的权重 JSON 外不必上重型编排。比例门闩与技能切片见《多 AZ 金丝雀与技能包》;目录与 Webhook 摘要纪律见《租户拆分、Doctor 与摘要合并》;openclaw@2026.4.x 滚动与 peer 顺序见《滚动升级与金丝雀回滚》。三篇与本 HowTo 互为 spine,避免「片段合了、流量却分裂脑」。
分租户配置目录
启用 launchd 前,各节点先镜像 /etc/openclaw/tenants/<租户>/,其下 gateway.d、workflows.d、doctor.d 只同步模板;重状态落在 /var/db/openclaw/workflows/<租户>/,晋升时绝不 rsync。Doctor 片段写清合并后值班仍要成立的不变量。
- 前缀定序:
10-base.yaml、20-overlay.yaml,避免两队争 merge 先后。 - parity:全集群
openclaw config hash --tenantdigest 不一致则禁止晋升。 - 秒级回滚:
tenants/<租户>.prev链到上次好树,一次原子翻转目录。
密钥进 /var/db/openclaw/secrets/<租户>,POSIX ACL 各机一致,片段留在可 diff 范围。扩容网关前可先打开公开 价格页对齐规格。
模板合并策略
三层:共享 00-platform.yaml、租户编号覆盖、仅金丝雀镜像存在的 99-canary.yaml。守护进程按字典序走目录;标量后者胜,组合块须扩展不可硬改形状,保证 openclaw config lint --tenant 仍无环。构建机 dry-run 的有效配置贴工单,评审不必 SSH。
MAINTENANCE=drain,等在飞作业结束,launchctl 干净重启后再清标志。不要指望 reload 完成密钥轮换——文件原子替换后换进程边界读环境。平台 README 用表列出「reload 类 / restart 类」键;各机 openclaw.lock 必须一致,否则片段 schema 会无声分叉。周五改监听却期待 SIGHUP「魔法」是事故温床;合并前先在 staging 对照已安装构建核对 flag。
金丝雀节点选择与回滚
每晋升窗口只选一台已挂 99-canary.yaml 的网关,把约 5% LB 权重打上去,稳定同伴保持旧 symlink。至少跨越两个合并就绪探针周期再看错误率、p95 队列与合并 JSON。金丝雀只能消费自有工作流子目录,避免坏合并写坏兄弟机上的生产 SQLite。
回滚是卫生而非丢脸:改权前导出权重 JSON 进工单,月度演练一键恢复。合并面一红:金丝雀权重归零 → tenants/<租户> 指回 .prev;若动到 restart 类键只重启该 Mac。同伴通常无需联控,除非你过早抬了共享锁版本。
合并 Doctor 与健康检查
每网关一条就绪 URL,JSON 合并 openclaw doctor --json、经本机监听的 synthetic、以及轻量磁盘/APFS 压强。LB 与人共用此面,禁止事故时出现两套矛盾的 shadow 端点。Doctor 黄而 synthetic 绿:HTTP 200 + "status":"degraded",流量可走、告警仍响。
#!/usr/bin/env bash
set -euo pipefail
TENANT="${TENANT:-demo}"
/usr/local/bin/openclaw doctor --tenant "$TENANT" --json >/tmp/oc-doctor.json
/usr/bin/curl -fsS --max-time 2 "https://127.0.0.1:8443/healthz" -o /tmp/oc-gateway.json
/usr/bin/python3 - <<'PY'
import json
d=json.load(open("/tmp/oc-doctor.json")); g=json.load(open("/tmp/oc-gateway.json"))
print(json.dumps({"tenant":"demo","doctor_ok":d.get("ok"),"gateway":g.get("status")}))
PY
可交给 launchd 每分钟执行;边缘代理直接 scrape 输出或包一层极小 HTTP。接入 Notifier digest 时把字段并进同一 JSON,与租户篇对齐。
最小可复现清单
- bootstrap:各机
openclaw version --json与openclaw.lock对齐。 - 只同步模板:rsync 编号片段,排除 workflow SQLite 与密钥挂载。
- lint + hash:
openclaw config lint --tenant后全集群config hash。 - 金丝雀 + 合并面:约 5% 权重,观察合并 JSON;staging 故意打坏一条 synthetic 验证告警链路。
清单跑通后,这套 clustervps 多节点节奏可以按月演练而不扰客户。需要再加独占网关时,用与预发相同的规格走公开 购买页扩容量;值班台边固定打开 帮助中心 与 站点首页,动流量前全队先对齐路径与书签。