Completa il hardening autoscaler (Fase 4): budget, kill-switch e runbook.
Drain sicuro in scale-in, alert Ops su overflow e controlli admin senza abilitare il deploy in produzione. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# Autoscale streaming — Proxmox attuale + Hetzner Cloud
|
||||
|
||||
**Stato:** design approvato (decisioni chiuse) — pronto per implementazione
|
||||
**Stato:** fasi 0–4 implementate sul branch — **solo test lab; nessun deploy produzione**
|
||||
**Branch:** `feature/streaming-autoscale-hetzner`
|
||||
**Ultimo aggiornamento:** 2026-08-09 (dominio ingest: `mltv-stream.net`)
|
||||
**Ultimo aggiornamento:** 2026-08-09 (Fase 4 hardening + runbook)
|
||||
|
||||
**Sostituisce / estende:** il piano overflow-only [`HETZNER_CLOUD_RELAY_OVERFLOW.md`](HETZNER_CLOUD_RELAY_OVERFLOW.md). Questo documento copre **MediaMTX + ffmpeg**, warm spare, DNS, storage, disco e lab sul Proxmox di produzione.
|
||||
|
||||
@@ -211,7 +211,7 @@ Cosa il lab **non** replica al 100%: tempi boot Hetzner, vSwitch, RTMP 4G multi-
|
||||
| **1 — Hetzner Cloud + DNS** | `HetznerCloudProvider` + `HetznerDnsProvider`, `mltv-stream.net`, cloud-init, WireGuard (§16) | **implementata sul branch** (WG ops manuale) |
|
||||
| **2 — Routing relay** | Coda `youtube_relay`, sticky owner, cap `RELAY_MAX_CONCURRENT` | **implementata sul branch** |
|
||||
| **3 — Autoscaler** | Soglie + warm spare (+1), kill-switch `STREAM_AUTOSCALE_ENABLED` | **implementata sul branch** |
|
||||
| **4 — Hardening** | Drain, budget, runbook, kill-switch | Picchi weekend |
|
||||
| **4 — Hardening** | Drain sicuro, budget, kill-switch Redis/admin, alert overflow, runbook | **implementata sul branch** (solo test lab — **non in prod**) |
|
||||
| **A — Auction (futuro)** | Migrazione control plane + vSwitch al posto di WireGuard | Hardware dedicato Hetzner |
|
||||
| **B2 (opz.)** | Switch object storage | Quando misurato |
|
||||
|
||||
@@ -260,6 +260,28 @@ Cosa il lab **non** replica al 100%: tempi boot Hetzner, vSwitch, RTMP 4G multi-
|
||||
- Cap `STREAM_AUTOSCALE_MAX_NODES`; kind `lab|cloud`
|
||||
- Metriche in admin Nodi stream
|
||||
|
||||
### Fase 4 — hardening (implementata sul branch)
|
||||
|
||||
> **NON rilasciare in produzione** finché lab + smoke Cloud non sono verdi. Su questo branch restano `STREAM_AUTOSCALE_ENABLED=0` e `STREAM_AUTOSCALE_ALLOW_CLOUD=0`.
|
||||
|
||||
- Scale-in **sicuro**: `drain!` → attesa sessioni zero → `decommission!`
|
||||
- Budget soft: `STREAM_AUTOSCALE_MONTHLY_BUDGET_EUR` + `STREAM_AUTOSCALE_NODE_EUR_PER_HOUR` (stima 24/7); scale-out bloccato se sforerebbe
|
||||
- Cloud autoscale solo con `STREAM_AUTOSCALE_ALLOW_CLOUD=1` **e** `HCLOUD_TOKEN`
|
||||
- Kill-switch runtime Redis `streams:autoscaler:kill_switch` (bottoni admin ON/OFF) oltre all’ENV
|
||||
- Health check `stream_overflow` → incidente Ops/ntfy su nodi idle orfani, over-budget, capacità al max
|
||||
- Admin: metriche budget + stato kill-switch
|
||||
|
||||
#### Runbook operativo (lab / pre-prod)
|
||||
|
||||
| Situazione | Azione |
|
||||
|------------|--------|
|
||||
| Dubbio / picco anomalo | Admin → **Kill-switch ON** (o `STREAM_AUTOSCALE_ENABLED=0`) |
|
||||
| Nodo spillato | Drain dal admin; dopo fine live → Destroy |
|
||||
| Budget alert Ops | Abbassa `MAX_NODES` / alza budget solo dopo review costi Hetzner |
|
||||
| Smoke Cloud | Provision **manuale** admin (kind cloud), non autoscaler; verifica WG + RTMP 1935 |
|
||||
| Scale-out lab OK | Solo dopo: considerare `ENABLED=1` + `KIND=lab` su staging/lab Proxmox |
|
||||
| Produzione overflow | Solo dopo checklist §12 punto 6 |
|
||||
|
||||
Ordine di lavoro consigliato sul branch: **0 → L → 1 → 2 → 3 → 4**; **A** quando si decide di lasciare il Proxmox casa.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user