Три узких места до первого честного scale-out KEDA
1. Масштаб только по очереди. Реплики растут, пока канареечный срез шлюза всё ещё отдаёт неверный хеш skill pack.
2. Расщеплённые метрики. HPA видит низкий CPU, а доля 5xx на VIP канарейки растёт — webhook не получает единый вердикт.
3. Шторм webhook. Опрос ScaledObject плюс неограниченные повторы нагружают каждый Mac-шлюз за балансировщиком. Согласуйте с логами и digest кластера и главной clustervps.
KEDA ScaledObject: триггеры и связь с очередью сборки
Укажите триггер ScaledObject на тот же сигнал глубины, что экспортирует lane сборки OpenClaw — длина списка Redis, pending NATS или gauge Prometheus с координатора на Mac-шлюзе clustervps. Ограничьте maxReplicaCount на время канарейки, чтобы scale-out не обгонял бюджет проб.
| Триггер | Стартовое значение | Заметка для канарейки |
|---|---|---|
| Глубина очереди | Масштаб при ≥ 8 pending jobs | Держите max replicas +1, пока merge JSON не pass. |
| Cooldown | 120 с задержка scale-down | Снижает дрожание при повторах webhook во время анализа. |
| minReplicaCount | 1 stable + 0 canary workers | Canary — отдельная метка Deployment. |
| Activation | 0 → простаивающие шлюзы спят | Будите только AZ-срез под тестом. |
Согласуйте promote lock с паттерном Nomad build lock, чтобы rsync не шёл, пока KEDA масштабирует canary Deployment.
Канареечные срезы шлюза multi-AZ
Закрепите метки gateway_version и az на каждом Mac. Направляйте webhook канарейки на hostname с тегом из multi-AZ gateway webhook, а не на stable-пул для SSH. Повторите доли трафика из canary skills multi-AZ и фрагменты узлов из fragment merge workflow. Регионы выбирайте на главной до добавления четвёртого шлюза.
Пробы метрик: пороги latency и error rate
Возвращайте один объединённый JSON за интервал опроса ScaledObject — та же дисциплина, что у Rollouts или Flagger, но оценка на стороне webhook шлюза до роста реплик KEDA.
| Сигнал | Стартовый порог | Fail when |
|---|---|---|
| Доля 5xx канарейки | ≤ 0,5% за пять минут | Два окна подряд выше потолка. |
| p99 latency шлюза | ≤ 220 мс на VIP канарейки | Регрессия > 15% к stable baseline. |
| Глубина очереди | ≤ 12 pending jobs | Очередь растёт при увеличении веса канарейки. |
| degraded | HTTP 200 с явным boolean | degraded: true — fail closed. |
{
"status": "healthy",
"keda": "openclaw-build-lane",
"canary": { "5xx_rate": 0.003, "p99_ms": 158 },
"gateway": { "disk_ok": true, "queue_depth": 5, "skill_hash": "c4e1…" },
"degraded": false
}
Broadcast digest сбоев webhook
Держите два bearer-секрета с перекрытием минимум на одно окно опроса KEDA. При неуспешной классификации пакуйте digest на notifier Mac по контракту cluster logs webhook — дежурный читает одно резюме, пока scaler повторяет.
- Primary token: заголовок custom metric / webhook шлюза для ScaledObject.
- Overlap token: принимается семь суток после ротации.
- Потолок повторов: три попытки на шлюз с jitter; интервал опроса ≥ 60 с на время обслуживания.
Lock версии skill pack и откат
Заморозьте хеши skill pack при canary_active=true. При abort откатите хеш, верните maxReplicaCount KEDA к stable lane и снимите flock rsync по матрице rsync артефактов. Сбои Doctor по-прежнему валят merge JSON — см. Doctor deep checks до расширения трафика.
Водяные знаки диска 1 ТБ / 2 ТБ на Mac-шлюзах
Включите disk_ok в merge-пробы. Fail closed при пересечении жёлтого порога APFS во время scale-out.
| Тир | Жёлтый порог | Действие |
|---|---|---|
| Шлюз 1 ТБ | ≥ 82% занято | Блок scale-up KEDA; broadcast digest. |
| Шлюз 2 ТБ | ≥ 78% занято | То же; только stable lane. |
| Красный порог | ≥ 90% любой тир | Scale до min replicas; drain VIP канарейки. |
KEDA против Flagger и Argo Rollouts (чем отличается эта статья)
Flagger и Rollouts сдвигают вес трафика при почти фиксированном числе реплик. KEDA меняет ёмкость, когда очередь или custom metrics этого требуют — типично для всплесков сборки на параллельных lane Mac в clustervps.
- KEDA (эта статья): триггеры ScaledObject, связка с очередью, потолок реплик на канарейке.
- Flagger: Canary CRD + AnalysisRun — runbook Flagger.
- Argo Rollouts: AnalysisRun на объектах Rollout — пробы Rollouts.
- Flux: GitOps-автоматизация образов — Flux canary.
Один upstream на URL измерения шлюза. Не вызывайте один handler одновременно из scale KEDA и AnalysisRun Rollouts в одну минуту.
Семь шагов минимального воспроизведения
- Установите KEDA и убедитесь, что ScaledObject целит Deployment воркеров OpenClaw — не DaemonSet шлюза.
- Подключите триггер к глубине очереди сборки с cooldown и потолком реплик для канарейки.
- Откройте
/keda/metricsна Mac-шлюзе с тегом canary и bearer auth. - Верните merge JSON с latency, error rate, queue_depth, disk_ok и skill_hash.
- Заблокируйте skill pack и приостановите rsync до pass проб или abort.
- Включите broadcast сбоев на путь notifier; отрепетируйте scale-down при degraded true.
- Проверьте curl с бастиона, пока KEDA держит реплики на потолке канарейки.
Цифры для цитирования (runbook)
- Контракт измерения: одна версия merge JSON schema в Git на флот шлюзов.
- Заморозка масштаба: без scale-up KEDA, пока
degraded: trueдва окна опроса подряд. - Заморозка promote: без delete-тяжёлого rsync при
canary_active.
Подключите канарейки KEDA на многоузловом флоте OpenClaw
Сравните Flagger и Nomad build lock, затем на главной или странице аренды кластера закажите параллельные Mac mini M4 с SSH/VNC.