初回スケール前に詰まる三つの壁
- キューだけ見る。 レプリカは増えるのに、誤った skill_hash のカナリア切片が残ります。
- 指標の分裂。 CPU は低いのに網関 5xx が上がり、Webhook が採点しない VIP にトラフィックが流れます。
- Webhook 嵐。 ScaledObject のポーリングと無制限再送が、clustervps 全ノードへ負荷を波及します。
KEDA ScaledObject トリガー条件とビルドキューの関係
トリガーは OpenClaw ビルドレーンが吐く同一キュー深度(Redis リスト長、NATS pending、コーディネータの Prometheus ゲージ)に向けます。カナリア中は maxReplicaCount を上限し、探針予算を超える scale-out を禁止します。
| 項目 | 初期値 | カナリア注意 |
|---|---|---|
| キュー深度 | 待ち ≥ 8 件で拡張 | merged JSON 合格まで +1 上限 |
| クールダウン | scale-down 120 秒 | 分析中の Webhook 再送と干渉しません |
| minReplicaCount | 安定 1・カナリア 0 | Deployment ラベルで分離します |
| activation | 0 でアイドル休眠 | 試験 AZ のみ起動します |
Nomad ビルドロック稿 と整合し、KEDA がカナリア Deployment を伸ばす間は昇格パスの flock を維持してください。
多 AZ 網関ノードのカナリア切片
各 Mac に gateway_version と az ラベルを固定します。カナリア Webhook は マルチ AZ 網関稿 の専用ホストへ向け、SSH 用安定プールと分離します。skills 稿 の加重比と 断片マージ稿 のノード断片を表に載せ、四台目追加前に ホームでリージョンを選びます。
指標探針(遅延・エラー率)の閾値
ScaledObject のポーリング間隔ごとに一つの合算 JSONを返します。Rollouts/Flagger と同型ですが、採点は KEDA がレプリカを上げる前の網関 Webhook で行います。
| 信号 | 目安 | 失敗条件 |
|---|---|---|
| カナリア 5xx | 五分間 ≤ 0.5% | 二窓連続で上限超過 |
| 網関 p99 | カナリア VIP ≤ 220 ms | 安定比 +15% 超の回帰 |
| キュー深度 | ≤ 12 件 | 加重増加と同時に深度増 |
| 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 失敗要約(digest)のブロードキャスト
Bearer は新旧二鍵併存を一ポーリング窓以上維持します。非成功分類では rollout 名・指標差・AZ を二百字以内で notifier へ送り、詳細は ログ Webhook 稿 の JSONL へ逃がします。再送は指数バックオフ三回、メンテ中はポーリング ≥ 60 秒にします。
技能包(スキル)バージョンロックとロールバック
canary_active=true 中は skill_hash を凍結します。abort 時は hash を戻し、KEDA の maxReplicaCount を安定レーン値へ戻し、rsync 決定表稿 の flock を解放します。doctor 深検査稿 の失敗も merged JSON に含めます。
1TB/2TB ディスク水位(網関 Mac)
合算 JSON に disk_ok を含め、黄水位を跨いだ scale-out は fail-closed です。
| SKU | 黄信号 | 処置 |
|---|---|---|
| 1TB 網関 | 使用率 ≥ 82% | KEDA scale-up 禁止・digest 放送 |
| 2TB 網関 | 使用率 ≥ 78% | 同上・安定レーンのみ許可 |
| 赤信号 | いずれも ≥ 90% | min レプリカへ縮退・カナリア VIP 排出 |
KEDA と Flagger/Argo の差(本稿の位置づけ)
Flagger と Rollouts は固定レプリカでトラフィック加重を変えます。KEDA はキューとカスタムメトリクスで台数を変え、clustervps 並列 Mac でバーストビルドに向きます。
| レーン | 主入力 | 参照稿 |
|---|---|---|
| KEDA(本稿) | ScaledObject・キュー深度 | — |
| Flagger | MetricTemplate/Webhook | Flagger 稿 |
| Argo Rollouts | AnalysisRun HTTP | Rollouts 稿 |
網関の計測 URL には上流呼び出し元を一つに固定し、同一分に KEDA スケールと AnalysisRun が同ハンドラを叩かないでください。
最小再現:七手順
- KEDA 導入:ScaledObject がワーカー Deployment を指すことを確認します(網関 DaemonSet ではありません)。
- トリガー結線:ビルドキュー深度・クールダウン・カナリア用 max を設定します。
/keda/metrics:カナリアタグ付き網関 Mac で Bearer 付き HTTPS を公開します。- 合算 JSON:遅延・5xx・深度・disk_ok・skill_hash を返します。
- 技能包ロック:合格または abort まで rsync を一時停止します。
- digest 放送:notifier 経路を有効化し、degraded で scale-down を演習します。
- 検証:踏み台から curl し、KEDA がカナリア上限でレプリカを保持することを確認します。
カナリア・ロールバック FAQ
KEDA と Flagger の使い分けは? 台数が問題なら KEDA、加重だけなら Flagger。パスと Secret は分離します。
degraded が二窓続く: maxReplicaCount を据え置き、Flagger 稿 の abort runbook と同型で網関重みをゼロにします。
Nomad 併用: スケジューラ affinity と KEDA ラベルが一致しているか Nomad 稿 で突合します。