feat(cluster): scripturi de oprire si repornire controlata a clusterului
cluster-shutdown.sh / cluster-startup.sh — automatizeaza procedura din docs/oprire-planificata-cluster.md. Ruleaza de pe statia de admin prin SSH, nu de pe un nod: nodul care se opreste ultimul nu poate raporta rezultatul, iar la pornire scriptul trebuie sa astepte nodurile din afara. Decizii importante: - guest-urile din HA se opresc/pornesc cu `ha-manager set --state`, NU cu pct/qm shutdown; din CLI acestea nu actualizeaza state-ul HA si CRM-ul poate reporni guest-ul in mijlocul opririi - apartenenta la HA se descopera dinamic din `ha-manager config` - ordinea de oprire e pe dependente: consumatorii intai, CT 108 Oracle ultimul, cu `shutdown immediate` in baza inainte de a opri containerul - shutdown-ul salveaza local ce rula; startup-ul porneste exact atat, ca sa nu reporneasca VM-uri oprite intentionat - NEVER_AUTOSTART (109, 301, 310) protejeaza fallback-ul fara fisier de stare: VM 109 e DR-ul a carui pornire nedorita a declansat incidentul 2026-04-20, restul sunt template-uri - garda impotriva rularii de pe un nod sau din CT 171 (s-ar sinucide) - ping_host() portabil Git Bash / Linux Corectat in runbook: ordinea de oprire spunea "Oracle primul", gresit ca ordine de dependente — VM 201 si CT 104 consuma baza. Ambele testate cu --dry-run pe clusterul live. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RRyaDj39hPQ89SZS6URRpS
This commit is contained in:
@@ -10,7 +10,31 @@ mutare rack, mentenanță UPS, intervenții la switch.
|
||||
|
||||
---
|
||||
|
||||
## TL;DR
|
||||
## Varianta automată
|
||||
|
||||
Toată procedura de mai jos e implementată în două scripturi, de rulat **de pe
|
||||
stația de admin** (nu de pe un nod):
|
||||
|
||||
```bash
|
||||
cd proxmox/cluster/scripts
|
||||
|
||||
./cluster-shutdown.sh --dry-run # arată exact ce ar face, nu atinge nimic
|
||||
./cluster-shutdown.sh # oprire completă, cu confirmări
|
||||
|
||||
# ... după revenirea curentului, cu nodurile pornite fizic ...
|
||||
|
||||
./cluster-startup.sh # repornire completă
|
||||
```
|
||||
|
||||
`cluster-shutdown.sh` salvează local ce guest-uri rulau, iar `cluster-startup.sh`
|
||||
pornește **exact** ce era pornit — nu repornește VM-uri oprite intenționat.
|
||||
|
||||
**Rulează întâi cu `--dry-run`.** Restul documentului explică de ce fiecare pas e
|
||||
necesar și cum se face manual din GUI, dacă preferi.
|
||||
|
||||
---
|
||||
|
||||
## TL;DR (procedura manuală)
|
||||
|
||||
1. **Datacenter → Options → HA Settings → Shutdown Policy = `Freeze`** ← fără asta, HA mută resursele
|
||||
2. Dezactivează cron-urile de alertă (`pvemini-down-alert`, `vm109-watchdog`, `pveelite-down-alert`, `oom-alert`)
|
||||
@@ -149,23 +173,30 @@ singure la primul tick după revenire.
|
||||
|
||||
## Pas 2 — oprește guest-urile manual
|
||||
|
||||
Ordine importantă: **Oracle primul**, restul după.
|
||||
Ordinea corectă e cea de **dependențe: consumatorii întâi, Oracle ULTIMUL**.
|
||||
VM 201 (IIS) și CT 104 (flowise) folosesc baza din CT 108.
|
||||
|
||||
| Nod | Guest | În HA | Cum |
|
||||
|-----|-------|-------|-----|
|
||||
| pvemini | **CT 108** central-oracle | Da | `shutdown immediate` în DB, apoi Shutdown CT |
|
||||
| pvemini | VM 201 roacentral | Da | Shutdown (guest agent) |
|
||||
| pvemini | VM 302 oracle-test | Nu | Shutdown |
|
||||
| pvemini | VM 303 Win11-Adina | Nu | Shutdown |
|
||||
| pvemini | CT 100 portainer | Da | Shutdown |
|
||||
| pvemini | CT 102 docker.romfast.ro | Nu | Shutdown |
|
||||
| pvemini | CT 103 dokploy | Da | Shutdown |
|
||||
| pvemini | CT 104 flowise | Da | Shutdown |
|
||||
| pvemini | CT 106 gitea | Da | Shutdown |
|
||||
| pvemini | CT 171 claude-agent | Da | Shutdown |
|
||||
| pve1 | CT 101 minecraft | Da | Shutdown |
|
||||
| pve1 | CT 110 moltbot | Da | Shutdown |
|
||||
| pveelite | — | — | nimic pornit (CT 301 și VM 109 sunt `stopped`) |
|
||||
| # | Nod | Guest | În HA | Cum |
|
||||
|---|-----|-------|-------|-----|
|
||||
| 1 | pvemini | VM 303 Win11-Adina | Nu | Shutdown |
|
||||
| 2 | pvemini | VM 302 oracle-test | Nu | Shutdown |
|
||||
| 3 | pvemini | VM 201 roacentral | Da | Shutdown (guest agent) |
|
||||
| 4 | pve1 | CT 101 minecraft | Da | Shutdown |
|
||||
| 5 | pve1 | CT 110 moltbot | Da | Shutdown |
|
||||
| 6 | pvemini | CT 104 flowise | Da | Shutdown |
|
||||
| 7 | pvemini | CT 106 gitea | Da | Shutdown |
|
||||
| 8 | pvemini | CT 103 dokploy | Da | Shutdown |
|
||||
| 9 | pvemini | CT 102 docker.romfast.ro | Nu | Shutdown |
|
||||
| 10 | pvemini | CT 100 portainer | Da | Shutdown |
|
||||
| 11 | pvemini | CT 171 claude-agent | Da | Shutdown |
|
||||
| 12 | pvemini | **CT 108 central-oracle** | Da | `shutdown immediate` în DB, apoi Shutdown CT |
|
||||
|
||||
pveelite nu are nimic pornit în mod normal (CT 301 și VM 109 sunt `stopped`).
|
||||
|
||||
> **Din CLI, folosește `ha-manager set <sid> --state stopped` pentru guest-urile
|
||||
> din HA**, nu `pct shutdown` / `qm shutdown`. Din linia de comandă acestea **nu**
|
||||
> actualizează state-ul HA, iar CRM-ul poate reporni guest-ul în mijlocul opririi.
|
||||
> Din GUI nu e o problemă — butonul Shutdown trece oricum prin HA.
|
||||
|
||||
### Oracle CT 108 — shutdown curat al bazei
|
||||
|
||||
|
||||
Reference in New Issue
Block a user