Runbook nou pentru oprirea controlata a celor 3 noduri (lucrari electrice, mutare rack, mentenanta UPS) fara ca HA sa relocheze resursele si fara ca watchdog-ul sa reseteze hard nodul ramas fara quorum. Doua capcane documentate: - /etc/pve/datacenter.cfg nu exista => shutdown_policy implicit `conditional` => poweroff pe nod declanseaza FAILOVER, nu freeze - watchdog-ul face reset hard dupa ~60s pe nodul care pierde quorumul cu servicii HA inca active Corectii in failover/README.md, verificate pe clusterul live: - VM 201 ESTE in HA (grup ha-prefer-pvemini), docul spunea ca nu e - CT 108 e in ha-prefer-pvemini (pvemini:100, pve1:50, pveelite:10), nu in ha-group-main cu pveelite:50/pve1:33 - replicare CT 108 si VM 201 la */15 min, nu */5 => RPO real 15 min Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RRyaDj39hPQ89SZS6URRpS
5.0 KiB
Failover & High Availability
Strategia HA pe cluster, separată pe nivele de criticitate.
Rezumat resurse critice
| Resursă | Criticitate | HA automat | Replicare | RPO |
|---|---|---|---|---|
| CT 108 Oracle central | Nivel 0 | Da | pveelite */15 min, pve1 */15 min |
15 min |
| VM 201 Windows roacentral | Nivel 0 | Da (din 2026, vezi mai jos) | pveelite */15 min, pve1 */15 min |
15 min |
| CT 171 claude-agent | Nivel 1 | Da | pveelite */15 min, pve1 */15 min |
15 min |
| CT 104 flowise | Nivel 2 | Da | zilnic 21:15 | 24h |
| CT 106 gitea | Nivel 2 | Da | */2 ore |
2h |
| CT 100 portainer | Nivel 2 | Da | zilnic | 24h |
VM 201 — HA automat + procedură manuală de rezervă
Corectat 2026-08-27. Docul spunea anterior că VM 201 nu este în HA. Nu mai este adevărat — verificat pe cluster live:
vm:201 (pvemini, started), grupha-prefer-pvemini,max_restart 3,max_relocate 2.
VM 201 (Windows production) este acum în HA, grup ha-prefer-pvemini
(pvemini:100, pve1:50, pveelite:10). Dacă pvemini cade, CRM-ul o repornește
automat pe pve1 din ultima replicare ZFS (RPO 15 min).
Motivul pentru care a stat inițial în afara HA: la o mentenanță în care pvemini a fost scos temporar din HA, VM 201 a migrat automat — comportament nedorit pentru Windows production, care cere fereastră de mentenanță controlată.
Acest risc rămâne valabil. Pentru orice oprire planificată setează
shutdown_policy=freeze înainte — vezi
Oprire planificată a clusterului.
Procedura manuală de mai jos rămâne validă ca rezervă, pentru cazul în care HA nu reușește recovery-ul (lipsă quorum, pveelite fără RAM, replicare rămasă în urmă).
Declanșator alertă
Cron pe pveelite verifică pvemini la fiecare minut:
- Script:
/opt/scripts/pvemini-down-alert.sh - După 2 minute DOWN consecutive → mail
mmarius28@gmail.comcu comanda failover ready-to-run
Execuție failover
Din orice sesiune SSH:
ssh root@10.0.20.202 /opt/scripts/failover-vm201.sh
Scriptul:
- Verifică pvemini efectiv DOWN (ping + ssh); abort dacă răspunde
- Verifică VM 201 nu rulează deja pe pveelite
- Afișează ultima replicare ZFS disponibilă local
- Cere confirmare interactivă (tastezi
DA) qm start 201pe pveelite- Trimite mail confirmare cu pași post-failover
Pentru automatizare (fără prompt):
ssh root@10.0.20.202 /opt/scripts/failover-vm201.sh --yes
După revenire pvemini — script interactiv
NU porni automat VM 201 pe pvemini. Date posibil divergente.
ssh root@10.0.20.202 /opt/scripts/recover-vm201-to-pvemini.sh
Scriptul verifică:
- pvemini uptime min. 30 min + erori recente
- pvemini reachable ssh + VM 201 nu rulează deja acolo (anti split-brain)
- VM 201 running local pe pveelite
Pași executați automat (cu confirmare):
qm shutdown 201pe pveelitepvesr create-local-job 201-2 pvemini --source pveelite+ run forțatqm migrate 201 pveminioffline- Cleanup job replicare inversă
qm start 201pe pvemini
Non-interactiv: adaugă --yes.
CT 108 Oracle — HA automat
- Group
ha-prefer-pvemini(pvemini:100, pve1:50, pveelite:10) — corectat 2026-08-27, docul spuneaha-group-maincu alte priorități max_restart 3, max_relocate 2- Replicare
*/15min → failover automat cu RPO 15 min - Constrângere RAM pveelite 16 GB: dacă pvemini cade, pveelite trebuie să aibă spațiu pentru CT 108 (8 GB) + CT 101 existent + eventual alte CT-uri HA
CT 171 claude-agent — HA automat
- Adăugat în HA pentru acces Claude Code continuu
- Dacă pvemini cade, CT 171 pornește pe pveelite cu ultima replicare (max 15 min în urmă)
- State = workspace files din
/workspace/— replicate ZFS
Fișiere relevante
| Fișier | Locație | Scop |
|---|---|---|
failover-vm201.sh |
/opt/scripts/ pe pveelite |
Failover manual VM 201 pvemini → pveelite |
recover-vm201-to-pvemini.sh |
/opt/scripts/ pe pveelite |
Recovery interactiv VM 201 pveelite → pvemini |
pvemini-down-alert.sh |
/opt/scripts/ pe pveelite |
Watchdog 1 min, mail dacă pvemini DOWN 2 min |
oom-alert.sh |
/opt/scripts/ pe toate nodurile |
Alertă OOM kills |
Comenzi utile
# Stare replicare
ssh root@10.0.20.201 "pvesr status"
# Stare HA
ssh root@10.0.20.201 "ha-manager status"
# Forțează replicare acum (util înainte de mentenanță)
ssh root@10.0.20.201 "pvesr run --id 108-1; pvesr run --id 201-1; pvesr run --id 171-1"
# Test script failover (dry — fără confirmare)
ssh root@10.0.20.202 "/opt/scripts/failover-vm201.sh" # va abort dacă pvemini răspunde
Oprire planificată a întregului cluster
Pentru lucrări electrice, mutare rack sau mentenanță UPS — nu folosi butonul
Shutdown direct. Politica implicită conditional relochează resursele HA, iar
watchdog-ul resetează hard nodul rămas fără quorum.