Rolling на нескольких Mac clustervps для openclaw@2026.4.x держится на трёх опорах: предсказуемый порядок npm -g, doctor на каждом узле до сдвига трафика и одна merge-проба, которая не даёт LB «зелёный» при расколе плагинов.

Контекст. Для 2026.4.x типичны правки вокруг peer-зависимостей плагинов (диапазоны совместимости, разрешение peer-ссылок) и доработки конвейера образов. Ниже — нейтрально: сверяйте release notes, гоняйте тот же сценарий на теневом узле, отделяйте рекламу от приёмки.

Ещё по кластеру: канарея, multi-AZ, тенанты, rsync · главная · блог · справка · покупка.

Чек-лист шагов и точки отката

Каждая строка — атомарный шаг; колонка отката — последний «безопасный» рубеж.

Шаг Действие Контроль Точка отката
0 Снимок npm ls -g --depth=0, весов LB, openclaw.lock, JSON doctor Артефакты в /var/db/openclaw/audit/ Без изменений на узлах
1 Снять долю трафика с канареечного узла; drain по вашему LB Нет sticky на «полупустом» шлюзе Вернуть веса из снимка шага 0
2 npm -g: ядро openclaw@2026.4.x, затем плагины openclaw plugins doctor без peer warning npm -g uninstall … + установка прежних версий из списка
3 На каждом обновлённом узле: openclaw doctor --json по тенантам с трафиком Сверка semver с lock/symlink skill Откат npm или symlink current (см. канарею)
4 Включить merge-пробу: ядро, плагины, очередь, дайджест Один /readyz для LB Выключить узел из пула до зелёного JSON
5 Канарея: 5–10% трафика, два интервала пробы, затем шаги 10–20% p95, очередь, поле дайджеста внутри JSON Снимок весов шага 0 + broadcast «стоп промоушен»
6 Rolling на следующий узел только при зелёном шаге 5 Нет расхождения lock между шлюзами Изолировать отстающий узел; откат по одному узлу
Правило эскалации: если peer-конфликт проявился после обновления только части плагинов, не «дожимайте» долю трафика — зафиксируйте plugins doctor, сделайте откат на канарее и одно широковещательное сообщение (см. ниже).

Порядок npm -g на узле

Сначала ядро CLI, затем плагины от узких peer к зависимым — так короче окно «новый CLI, старые расширения». После установок — openclaw plugins doctor --json; цепочку образов проверяйте отдельным прогоном CI, не смешивая с LB.

# Пример последовательности на одном узле (имена пакетов замените на ваш scope)
set -euo pipefail
sudo npm install -g "openclaw@2026.4.x"
sudo npm install -g @your-scope/openclaw-plugin-core @your-scope/openclaw-plugin-vision
/usr/local/bin/openclaw plugins doctor --json | tee "/tmp/plugins-doctor-$(hostname -s).json"
/usr/local/bin/openclaw doctor --json | tee "/tmp/openclaw-doctor-$(hostname -s).json"

Повторяйте блок на каждом узле clustervps в очереди rolling; не копируйте node_modules между хостами — только согласованные версии из одного списка.

Doctor на каждом узле до merge-пробы

doctor на каждом узле ловит рассинхрон peer и lock до того, как LB увидит «зелёный» PID. Сохраняйте JSON с hostname; при расхождении с openclaw.lock не вводите узел в канарею. Для сценариев с образами опирайтесь на артефакт, а не на косвенный webhook.

Слияние health-проб

Объедините сигналы в один endpoint для балансировщика: версия ядра и плагинов (или резолв symlink skill), очередь, поле дайджеста webhook. Так вы не получите ситуацию, когда три URL «зелёные», а четвёртый — красный. Ниже — скелет проверки; подставьте порты и пути из гайда по тенантам.

#!/usr/bin/env bash
set -euo pipefail
TENANT_CANARY="${TENANT_CANARY:-acme}"
/usr/local/bin/openclaw version --json | tee /tmp/oc-version.json
/usr/local/bin/openclaw doctor --tenant "${TENANT_CANARY}" --json | tee /tmp/oc-doctor.json
/usr/bin/curl -fsS --max-time 3 "http://127.0.0.1:9099/v1/webhook-digest" -o /tmp/digest.json
/usr/bin/curl -fsS --max-time 3 "http://127.0.0.1:8088/readyz" | tee /tmp/readyz.json

Политика статусов: degraded допустим при жёлтом второстепенном плагине, если peer и lock согласованы; fail — немедленный вывод узла из LB и откат по чек-листу.

Канареечный сдвиг и промоушен

После зелёной merge-пробы верните малую долю; держите ≥двух интервалов p95 и очереди. Наращивайте вес, если semver на канарее совпадает со стабильными и дайджест чист. Следующий узел — только когда канарея не одинока на новой линии.

Широковещание при сбое

При красной пробе — одно сообщение дежурным: hostname, целевой 2026.4.x, шаг чек-листа, откат npm/symlink, ссылка на последний зелёный JSON. Так вы режете дубли алертов и фиксируете «стоп промоушен». Это не бизнес-webhook, а инцидент выкладки.

Коротко

Peer и образы в 2026.4.x проверяйте на теневом Mac теми же командами, что и в проде; не полагайтесь на косвенные метрики. Минимум два стабильных узла + канарея сохраняют окно отката, пока вы катаете npm -g по очереди.

Ориентир. Имена пакетов npm, порты gateway и формат readyz зависят от вашей сборки; примеры — шаблоны для clustervps.
Кластер OpenClaw на Mac

Нужен ещё один узел под канарею?

Главная, справка и SSH, покупка, тарифы. Материалы по сетке: канарея, шлюзы, тенанты, артефакты.

Добавить узел Mac mini M4 Справка