Kapazität planen Sie über die Startseite; parallele Lanes und Buildsperren koppeln Sie an Nomad-Affinität & flock-Buildlocks. Die Matrix unten enthält zwei Vergleichstabellen und sechs Runbook-Schritte.
Drei Engpässe vor dem ersten KEDA-Scale-up
Ohne gemeinsamen Mess-Vertrag skaliert KEDA in die falsche Richtung, während Canary-Gateways weiter Skills und Artefakte promoten.
- Queue-Blindheit: CPU-Trigger reagieren zu spät; Build-Backlogs wachsen, bevor Replikas steigen.
- Slice-Drift: eine AZ fährt ein neueres Skill-Pack, KEDA misst eine andere — Sonden wirken grün, Nutzer sehen 5xx-Spitzen.
- Webhook-Stürme: enge Scaler-Intervalle plus unbegrenzte Retries belasten jeden Gateway-Mac hinter dem Load-Balancer.
KEDA ScaledObject: Trigger-Bedingungen und Build-Queue-Bezug
KEDA skaliert Replikas anhand externer Metriken — nicht anhand fest verdrahteter HPA-CPU-Schwellen. Für OpenClaw-Gateways auf clustervps mappen Sie den ScaledObject-Trigger auf openclaw_build_queue_depth (Prometheus) oder einen externen Webhook-Scaler, der dieselbe Queue aus Redis/SQL spiegelt.
| Trigger-Typ | Metrik / Query | scale-up wenn | scale-down wenn | Stabilität |
|---|---|---|---|---|
| prometheus | queue_depth{role="gateway"} | > 14 Jobs, 2 min | < 4 Jobs, 10 min | Standard CI |
| webhook | POST /keda/scale | Body desiredReplicas ↑ | Cooldown 300 s | Custom-Queues |
| cpu (Fallback) | avg(container_cpu) | > 75 % | < 35 % | nur Nachtfenster |
triggers:
- type: prometheus
metadata:
serverAddress: http://prometheus.monitoring:9090
query: sum(openclaw_build_queue_depth{cluster="clustervps"})
threshold: "14"
advanced:
horizontalPodAutoscalerConfig:
behavior:
scaleDown:
stabilizationWindowSeconds: 600
Mehr-AZ-Gateway-Knoten: Canary-Slices und Traffic-Anteil
Pro Verfügbarkeitszone ein unveränderliches gateway_version-Label und ein canary_weight-Annotation-Feld. KEDA erhöht nur Replikas im Slice, dessen skill_hash mit dem Stable-Pool übereinstimmt oder explizit als Canary markiert ist. Muster aus Mehr-AZ-Canary-Skills und Gateway-Webhooks wiederverwenden — Mess-URL immer auf den canary-getaggten Hostnamen, nicht den SSH-Bastion-Pool.
- Stable-Slice: 85–90 % Verkehr,
maxReplicaCount= dokumentierte Spitze. - Canary-Slice: 10–15 % während KEDA scale-up; Sonden-JSON muss
slice=canarytragen. - AZ-Parität: mindestens ein Gateway pro Region im Mess-Pool, sonst falsch-positive Latenz.
Metrik-Sonden: Latenz- und Fehlerrate-Schwellen
Exponieren Sie /keda/metrics auf einem canary-getaggten Mac mit einem Merge-JSON — ein Body pro Scaler-Intervall, analog zur Disziplin im Flagger-Leitfaden, aber Felder für KEDA-Autoscaling statt AnalysisRun.
| Signal | Start-Schwelle | scale-up blockieren wenn | scale-down erzwingen wenn |
|---|---|---|---|
| Canary-5xx-Rate | ≤ 0,5 % / 5 min | Zwei Fenster > Obergrenze | Ein Fenster > 1,2 % |
| Gateway-p99-Latenz | ≤ 210 ms | Regression > 18 % vs. Stable | p99 > 280 ms, 3 min |
| Queue-Tiefe | Trigger > 14 | Tiefe steigt trotz neuer Replikas | < 4 über 10 min |
| degraded-Flag | degraded: false | true fail-closed | sofort maxReplica auf Stable |
{
"keda": "openclaw-gateway",
"canary": { "5xx_rate": 0.004, "p99_ms": 178 },
"queue_depth": 16,
"allow_scale_up": false,
"degraded": true
}
Webhook-Fehler-Summary-Broadcast
Scaler-Webhooks und Sonden-Endpunkte teilen sich Bearer-Rotation mit Überlappung (mindestens ein volles KEDA-Polling-Intervall plus fünf Minuten). Bei Nicht-200 oder allow_scale_up: false einen Digest an den Notifier-Mac — Schema wie in Cluster-Logs & Webhook-Digests. Retry-Cap: drei Versuche mit Jitter; Polling-Intervall ≥ 45 s während APFS-Wartung.
- Primär-Token: Header
Authorization: Bearerfür KEDA-Scaler-Callbacks. - Broadcast-Felder: namespace, scaledObject, desiredReplicas, letzter Sonden-Fehler, AZ.
- Sicherheit: TLS 1.3, Pfade pro Namespace isoliert, Audit-JSONL mit Signatur-Hash.
Skill-Pack-Versionssperre und Rollback
Vor jedem scale-up skill_hash in Git versionieren und auf allen Gateway-Slices des Canary-Pools anwenden. Rollback: bei zwei fehlgeschlagenen Sonden-Fenstern maxReplicaCount auf Stable-Hash setzen, Canary-Gewicht auf null, rsync-Promotions hinter flock einfrieren — Parameter aus der Artefakt-rsync-Matrix.
1TB- und 2TB-Platten-Wasserstände vor Scale-up
KEDA darf keine Replikas erhöhen, wenn ein Gateway-Mac Gelb- oder Hard-Gates verletzt. Planungswerte für dedizierte Buildknoten:
| Knoten | Gelb-Gate | Hard-Stop | scale-up | rsync bwlimit (Tag) |
|---|---|---|---|---|
| 1 TB APFS | 78 % belegt | 88 % | blockiert | 45–52 Mbit/s |
| 2 TB APFS | 80 % belegt | 90 % | blockiert | 52–70 Mbit/s |
Abgrenzung zu Flagger und Argo Rollouts (KEDA im Fokus)
Flagger verschiebt Verkehrsgewichte und wertet AnalysisRun-Metriken aus; Argo Rollouts steuert progressive Replica-Sets mit eigenen Webhooks. KEDA antwortet auf Queue- und Custom-Metriken und ändert die Anzahl der Gateway-Pods — kein Ersatz für Canary-Mathematik, sondern die Schicht darunter. Pro Fleet einen primären Controller: entweder KEDA plus manuelle Canary-Gewichte, oder Flagger/Rollouts ohne parallelen ScaledObject auf dieselbe Deployment-Gruppe.
Vergleichen Sie Verkehrs-Canaries im Flagger-Leitfaden, AnalysisRun im Argo-Rollouts-Artikel und Job-Platzierung im Nomad-Buildlock-Matrix — denselben /keda/metrics-Handler nicht doppelt anstoßen.
Minimal reproduzierbare Schritte (sechs Schritte)
- KEDA installieren und
ScaledObjectauf das OpenClaw-Gateway-Deployment mappen — Trigger = Build-Queue, nicht CPU allein. /keda/metricsexponieren auf einem canary-getaggten Mac mit Merge-JSON undallow_scale_up-Boolean.- Canary-Slices pinnen pro AZ;
skill_hashsperren, bevormaxReplicaCountsteigt. - Webhook-Broadcast aktivieren für Scaler- und Sonden-Fehler; Dual-Bearer mit Überlappung mounten.
- Platten-Gates verdrahten: scale-up blockieren, wenn
disk_ok: falseim Sonden-Body. - Trockenlauf: Queue künstlich auf 18 Jobs treiben,
desiredReplicasbeobachten, beidegraded: trueRollback und Digest prüfen.
Zitierfähige Leitplanken
- Queue-Trigger:
openclaw_build_queue_depthSchwellwert 14 / 4 (up/down), Stabilisierung scale-down 600 s. - Sonden-Vertrag: ein Merge-JSON-Schema pro Gateway-Fleet, versioniert in Git.
- Token-Überlappung: mindestens ein KEDA-Polling-Intervall plus fünf Minuten.
- Parallel-Cluster: Mehrknoten-Macs über clustervps buchen — SSH/VNC, monatlich skalierbar.
Mac mini M4 Mehrknoten-Cluster für KEDA + OpenClaw
Lesen Sie Nomad-Buildlocks und Flagger-Canary, dann auf der Startseite regionale Lanes wählen und Parallel-Cluster-Kapazität buchen.