KEDA 첫 스케일 전에 막히는 세 가지
- 큐만 보고 스케일. 레플리카는 늘지만 잘못된 skill_hash 카나리 슬라이스가 남습니다.
- 지표 분열. CPU는 낮은데 게이트웨이 5xx만 올라 Webhook이 채점하지 않는 VIP로 트래픽이 갑니다.
- Webhook 폭주. ScaledObject 폴링과 무제한 재시도가 clustervps 모든 Mac 노드에 부하를 줍니다.
KEDA ScaledObject 트리거 조건과 빌드 큐 관계
트리거는 OpenClaw 빌드 레인의 동일 큐 깊이(Redis 리스트, NATS pending, 코디네이터 Prometheus 게이지)에 맞춥니다. 카나리 중 maxReplicaCount로 프로브 예산을 넘는 스케일업을 막습니다.
| 항목 | 시작값 | 카나리 메모 |
|---|---|---|
| 큐 깊이 | 대기 ≥ 8건 시 확장 | 병합 JSON 통과 전 +1 상한 |
| 쿨다운 | 스케일다운 120s | 분석 중 Webhook 재시도와 분리 |
| minReplicaCount | stable 1·카나리 0 | Deployment 라벨 분리 |
| activation | 0 → 유휴 절전 | 테스트 AZ만 기상 |
Nomad 빌드 락과 맞춰 카나리 스케일 중 flock 유지.
다중 AZ 게이트웨이 노드 카나리 슬라이스
Mac마다 gateway_version·az 라벨 고정. 카나리 Webhook은 멀티 AZ 게이트웨이 전용 호스트로 SSH stable 풀과 분리. 카나리 스킬·프래그먼트 병합과 표를 맞추고 네 번째 노드 전 홈에서 리전 선택.
지표 프로브: 지연·오류율 임계값
ScaledObject 폴링마다 병합 JSON 한 건을 반환합니다. Rollouts/Flagger와 유사하지만 채점은 KEDA가 레플리카를 올리기 전 게이트웨이 Webhook에서 합니다.
| 신호 | 시작 임계 | 실패 조건 |
|---|---|---|
| 카나리 5xx | 5분 ≤ 0.5% | 연속 두 창 상한 초과 |
| 게이트웨이 p99 | 카나리 VIP ≤ 220ms | stable 대비 +15% 회귀 |
| 큐 깊이 | ≤ 12 pending | 가중 상승 중 깊이만 증가 |
| 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
}
Webhook 실패 요약 방송
Bearer는 KEDA 폴링 한 창 이상 신·구 병존. 비성공 분류 시 rollout명·지표 차·AZ를 200자 이내로 notifier에 보내고, 상세는 클러스터 로그 Webhook JSONL로 분리합니다. 재시도 지터 3회, 유지보수 중 폴링 ≥ 60s.
스킬 패키지 버전 락과 롤백
canary_active=true 동안 skill_hash 동결. abort 시 해시·KEDA maxReplicaCount를 stable로 되돌리고 rsync 매트릭스 flock 해제. Doctor 실패도 병합 JSON에 포함.
1TB / 2TB 디스크 수위(게이트웨이 Mac)
병합 JSON에 disk_ok 포함. 옐로 수위에서 스케일업 fail-closed.
| 티어 | 옐로 게이트 | 조치 |
|---|---|---|
| 1TB 게이트웨이 | 사용 ≥ 82% | KEDA 스케일업 차단·digest |
| 2TB 게이트웨이 | 사용 ≥ 78% | 동일·stable 레인만 |
| 레드 | ≥ 90% | min 레플리카·카나리 VIP 드레인 |
KEDA vs Flagger vs Argo Rollouts (본문 초점)
Flagger·Rollouts는 고정 레플리카에서 트래픽 가중을 옮깁니다. KEDA는 큐·커스텀 메트릭으로 용량을 움직여 clustervps 병렬 Mac 빌드 버스트에 맞습니다.
| 레인 | 주 입력 | 참고 글 |
|---|---|---|
| KEDA(본문) | ScaledObject·큐 깊이 | — |
| Flagger | MetricTemplate·Webhook | Flagger 가이드 |
| Argo Rollouts | AnalysisRun HTTP | Rollouts 가이드 |
게이트웨이 측정 URL당 상위 호출자 하나만—같은 분에 KEDA 스케일과 AnalysisRun이 같은 핸들러를 두 번 호출하지 마세요.
최소 재현 롤아웃 (7단계)
- KEDA 설치 — ScaledObject가 worker Deployment를 겨냥(게이트웨이 DaemonSet 아님).
- 트리거 연결 — 빌드 큐 깊이·쿨다운·카나리 max 상한.
/keda/metrics— 카나리 태그 Mac에서 Bearer HTTPS.- 병합 JSON — 지연·5xx·깊이·disk_ok·skill_hash.
- 스킬 락 — 통과 또는 abort 전 rsync 일시정지.
- 실패 방송 — degraded true 시 스케일다운 리허설.
- 검증 — 바스천 curl + KEDA가 카나리 상한에 레플리카 고정.
FAQ
KEDA vs Flagger: 용량은 KEDA, 가중은 Flagger. degraded 두 창이면 maxReplicaCount 유지. Nomad는 빌드 락 글과 라벨 대조.