Files
ROMFASTSQL/proxmox/ups/docs/UPS-BATTERY-REPLACEMENT.md
Marius cc72a5f96e Add UPS battery replacement procedure and maintenance shutdown script
Adds complete procedure for replacing UPS battery when entire cluster
is powered by the same UPS, requiring full cluster shutdown.

New files:
- scripts/ups-maintenance-shutdown.sh: Automated orchestrated shutdown
  for maintenance operations with confirmation prompts and progress display
- docs/UPS-BATTERY-REPLACEMENT.md: Complete step-by-step guide for battery
  replacement including pre-shutdown, physical replacement, and post-startup
  verification procedures

Features:
- Orchestrated shutdown: VMs → LXC containers → secondary nodes → primary
- Interactive confirmation before shutdown
- Color-coded progress indicators
- Countdown timers for each phase
- Post-replacement verification checklist
- Troubleshooting guide for common issues
- Recovery procedures for cluster/quorum problems

The procedure accounts for all 3 cluster nodes (pve1, pvemini, pveelite)
being on the same UPS, requiring complete infrastructure shutdown.

Documentation includes:
- When to replace battery (based on monthly test results)
- Pre-planning and user notification templates
- Physical battery replacement safety procedures
- Cluster recovery and VM restart procedures
- Post-replacement testing and verification
- 24-hour and 1-week monitoring checklists

Estimated maintenance window: 30-60 minutes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-06 21:46:28 +03:00

516 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Procedură Înlocuire Baterie UPS
## Despre
Ghid complet pentru înlocuirea bateriei UPS când cluster-ul Proxmox este complet alimentat de UPS. Include scripturi automate, checklist-uri și proceduri de recovery.
**⚠️ IMPORTANT:** Toate cele 3 noduri (pve1, pvemini, pveelite) sunt pe același UPS, deci **trebuie oprit complet cluster-ul**.
## Când Trebuie Înlocuită Bateria?
### Indicatori din Testele Lunare:
| Indicator | Acțiune |
|-----------|---------|
| **Health: POOR** (charge drop > 55%) | ⚠️ URGENT - Înlocuiește IMEDIAT |
| **Health: FAIR** (charge drop 35-55%) | 📅 Planifică în 1-3 luni |
| **Health: GOOD** (charge drop 15-35%) | ✅ Monitorizează lunar |
| **Health: EXCELLENT** (charge drop < 15%) | Baterie OK |
### Alte Semne:
- Vârsta bateriei > 3-4 ani
- UPS emite beep-uri frecvente
- Timp de autonomie scăzut vizibil (< 5 minute cu sarcină normală)
- Baterie umflată sau deteriorată fizic
- 3+ teste lunare consecutive cu health FAIR/POOR
## Pregătire
### 1. Comandă Baterie Nouă
**Verifică specificațiile UPS-ului:**
```bash
ssh root@10.0.20.201 "upsc nutdev1 2>/dev/null | grep -E 'battery.voltage.nominal|battery.type'"
```
Pentru UPS-ul tău (INNO TECH):
- Tensiune nominală: **24V** (2x 12V în serie)
- Tip: Probabil **12V 7Ah** sau **12V 9Ah** (2 bucăți)
**Verifică FIZIC bateria actuală** înainte de comandă:
- Model exact scris pe baterie
- Capacitate (Ah)
- Dimensiuni fizice
### 2. Planificare Fereastră de Mentenanță
**Timpul estimat: 30-60 minute**
Breakdown:
- Shutdown cluster: ~10 minute
- Înlocuire fizică baterie: 10-15 minute
- Pornire și verificare cluster: 10-15 minute
- **Buffer pentru probleme:** 15-20 minute
**Moment recomandat:**
- Duminică 02:00-04:00 (minimal impact)
- SAU orice fereastră de mentenanță aprobată
### 3. Anunță În Avans
**Template email/notificare:**
```
Subject: [IMPORTANT] Mentenanță Programată UPS - Duminică 02:00-04:00
Bună ziua,
Duminică, [DATA], între orele 02:00-04:00 va avea loc o intervenție
programată pentru înlocuirea bateriei UPS.
IMPACT:
- Toate serverele/serviciile vor fi indisponibile timp de ~45 minute
- Cluster Proxmox va fi oprit complet
- VM-uri și servicii vor fi oprite orchestrat și repornite automat
Ce se va întâmpla:
1. 02:00 - Shutdown orchestrat cluster (VM-uri + noduri)
2. 02:15 - Înlocuire fizică baterie UPS
3. 02:30 - Pornire noduri + verificare cluster
3. 02:45 - Pornire VM-uri și verificare servicii
În caz de probleme, timpul poate fi extins cu 30-60 minute.
Vă rugăm să salvați orice lucru în curs și să vă deconectați
de la servicii cu 10 minute înainte (01:50).
Mulțumim pentru înțelegere!
```
## Procedură Pas-cu-Pas
### ETAPA 1: Pre-Shutdown (15 minute înainte)
**1.1. Conectare la pvemini:**
```bash
ssh root@10.0.20.201
```
**1.2. Verificare finală status cluster:**
```bash
# Status cluster
pvecm status
# VM-uri running
qm list | grep running
# Status UPS
upsc nutdev1 ups.status battery.charge
# Backup-uri recente?
ls -lh /var/lib/vz/dump/ | tail -5
```
**1.3. Notificare utilizatori (dacă aplicabil):**
```bash
# Trimite mesaj pe toate nodurile (wall)
for node in pve1 pvemini pveelite; do
ssh root@$node "wall 'ATENȚIE: Cluster se va opri în 15 minute pentru mentenanță UPS!'"
done
```
### ETAPA 2: Shutdown Orchestrat
**2.1. Rulare script automat:**
```bash
cd /opt/scripts
./ups-maintenance-shutdown.sh
```
Scriptul va:
- Cere confirmare (scrie **DA**)
- Opri toate VM-urile (timeout 180s)
- Opri containerele LXC
- Opri nodurile secundare (pve1, pveelite)
- Opri pvemini (ultimul)
**2.2. Monitorizare (opțional):**
Deschide un al doilea terminal SSH și monitorizează:
```bash
# Monitor log
tail -f /var/log/ups-maintenance.log
# Monitor VM-uri
watch -n 5 'qm list'
```
**2.3. Așteptare:**
- Script va afișa countdown
- Totul se va opri automat în ~10 minute
- **pvemini se va opri ultimul (2 minute după nodurile secundare)**
### ETAPA 3: Verificare Oprire Completă
**3.1. Verifică LED-uri:**
- **pve1:** LED-uri stinse
- **pveelite:** LED-uri stinse
- **pvemini:** LED-uri stinse
**3.2. Verifică ventilatoare:**
- Ascultă - toate ventilatoarele ar trebui fie oprite
**3.3. Dacă un nod nu s-a oprit:**
- Conectează monitor/keyboard la nod
- SAU apasă lung butonul de power (10 secunde) pentru force shutdown
- **ULTIMĂ OPȚIUNE:** Deconectează alimentarea
### ETAPA 4: Înlocuire Fizică Baterie
** ATENȚIE LA SIGURANȚĂ:**
- Folosește mănuși izolante
- NU scurtcircuita terminalele bateriei
- Notează polaritatea (+/-)
**4.1. Deconectare UPS:**
```
1. Deconectează UPS de la priză (scoate din priză)
2. Apasă butonul de power al UPS-ului 5 secunde (descarcă condensatori)
```
**4.2. Deschide UPS:**
```
1. Identifică panoul de acces baterie (de obicei față sau spate)
2. Deșurubează/deschide panoul
3. Fotografiază conexiunile (pentru referință)
```
**4.3. Deconectare baterie veche:**
```
1. Notează polaritatea (+ la roșu, - la negru)
2. Deconectează mai întâi cablul NEGATIV (-)
3. Apoi deconectează cablul POZITIV (+)
4. Scoate bateria veche cu grijă
```
**4.4. Instalare baterie nouă:**
```
1. Plasează bateria nouă în suport
2. Conectează cablul POZITIV (+) PRIMUL
3. Apoi conectează cablul NEGATIV (-)
4. Verifică că conexiunile sunt ferme
5. Asigură-te că bateria nu se mișcă
```
**4.5. Închide UPS:**
```
1. Închide panoul de acces
2. Fixează șuruburile
```
**4.6. Reconectare:**
```
1. Conectează UPS la priză
2. Pornește UPS (buton de power)
3. Verifică LED-uri: ar trebui să vadă "charging" sau "online"
4. Ascultă beep-uri - normal este 1 beep la pornire
```
**4.7. Așteptare încărcare inițială:**
- Lasă UPS-ul conectat 2-3 minute încarce bateria nouă
- Verifică nu sunt erori pe display
### ETAPA 5: Pornire Cluster
**5.1. Pornire noduri - Ordine inversă:**
**Primul: Noduri secundare (pve1, pveelite)**
```
1. Apasă butonul de power pe pve1
2. Apasă butonul de power pe pveelite
3. Așteaptă 2 minute pentru boot
```
**Al doilea: Nod primary (pvemini)**
```
1. Apasă butonul de power pe pvemini
2. Așteaptă 3 minute pentru boot complet
```
**5.2. Conectare la pvemini când e disponibil:**
```bash
# Așteaptă până poți face SSH
ssh root@10.0.20.201
```
### ETAPA 6: Verificări Post-Pornire
**6.1. Verificare cluster:**
```bash
# Status cluster - ar trebui să vezi toate cele 3 noduri
pvecm status
# Verifică quorum
corosync-quorumtool -s
# Toate nodurile online?
pvecm nodes
```
**Așteptat:**
```
Quorate: Yes
Expected votes: 3
Total votes: 3
Nodeid: 1 (pve1) - online
Nodeid: 2 (pvemini) - online
Nodeid: 3 (pveelite) - online
```
**6.2. Verificare UPS:**
```bash
# Status UPS
upsc nutdev1
# Valori importante:
upsc nutdev1 ups.status # Ar trebui: OL (Online)
upsc nutdev1 battery.charge # Poate fi 50-80% (baterie nouă în încărcare)
upsc nutdev1 battery.voltage # ~24-27V
```
**6.3. Verificare servicii NUT:**
```bash
systemctl status nut-server
systemctl status nut-monitor
# Logs pentru erori
journalctl -u nut-server -n 50
```
### ETAPA 7: Pornire VM-uri
**7.1. Verifică ce VM-uri au autostart:**
```bash
# VM-uri cu onboot=1
grep -r "onboot: 1" /etc/pve/qemu-server/
# Sau
qm list | head -1 && grep "^onboot" /etc/pve/qemu-server/*.conf | grep "onboot: 1"
```
**7.2. Pornire VM-uri critice manual:**
```bash
# Listează toate VM-urile
qm list
# Pornește VM-uri importante
qm start 201 # roacentral (Windows 11)
# Adaugă alte VM-uri critice
# Sau pornește toate VM-urile care erau running:
for vmid in $(qm list | awk 'NR>1 {print $1}'); do
qm start $vmid
done
```
**7.3. Verificare VM-uri:**
```bash
# Status VM-uri
qm list
# Pentru fiecare VM important, verifică:
qm status 201
```
### ETAPA 8: Test Final Baterie Nouă
**8.1. Rulare test baterie NUT:**
```bash
# Test automat
/opt/scripts/ups-monthly-test.sh
# Monitorizează log
tail -f /var/log/ups-monthly-test.log
```
**8.2. Verificare rezultat test:**
```bash
# Ar trebui să vezi EXCELLENT sau GOOD pentru baterie nouă
tail -30 /var/log/ups-monthly-test.log | grep -A 5 "Sănătate baterie"
```
**Așteptat pentru baterie nouă:**
- Charge drop: < 10% (EXCELLENT)
- Voltage drop: 1-2V
- Recuperare rapidă: < 60 secunde
**8.3. Test fizic (opțional dar recomandat):**
```bash
# Deconectează UPS de la priză 10 secunde
# Monitorizează în WinNUT pe VM 201
# UPS ar trebui să susțină sarcina fără probleme
# Reconectează la priză
```
### ETAPA 9: Notificare Finalizare
**9.1. Email/notificare utilizatori:**
```
Subject: Mentenanță UPS Finalizată Cu Succes
Mentenanța programată a fost finalizată cu succes.
STATUS:
✅ Baterie UPS înlocuită
✅ Toate nodurile cluster online
✅ Quorum OK
✅ VM-uri repornite
✅ Test baterie: [EXCELLENT/GOOD]
Serviciile sunt disponibile.
Durata totală: [XX] minute
Mulțumim pentru răbdare!
```
**9.2. Documentare în log:**
```bash
echo "[$(date)] UPS Battery replaced. Old battery removed, new battery installed. Test result: [RESULT]. Cluster fully operational." >> /var/log/ups-maintenance.log
```
## Troubleshooting
### Problema 1: Un nod nu pornește după shutdown
**Verificări:**
```bash
# Încearcă SSH
ssh root@[IP-NOD]
# Dacă nu răspunde:
# 1. Verifică LED-uri de pe nod - sunt aprinse?
# 2. Conectează monitor la nod - ce erori apar?
# 3. Verifică cablul de rețea
# 4. Hard reset: butoane power lung (10s) apoi pornește din nou
```
**Recovery:**
```bash
# Dacă nodul lipsește din cluster:
pvecm nodes
# Forțează quorum cu 2 noduri (ULTIMĂ OPȚIUNE):
pvecm expected 2
```
### Problema 2: UPS nu funcționează după înlocuire baterie
**Verificări:**
- LED-uri UPS - ce culoare?
- Beep-uri - ce pattern?
- Polaritate baterie corectă? (+ la +, - la -)
- Conexiuni ferme?
**Soluții:**
```bash
# Verifică ce raportează NUT
upsc nutdev1
# Dacă nu răspunde:
systemctl restart nut-driver@nutdev1
systemctl restart nut-server
```
### Problema 3: Baterie nouă se descarcă prea repede în test
**Normal pentru bateriile noi:**
- Primele 2-3 cicluri de încărcare pot fi instabile
- Bateria trebuie "condiționată" (câteva cicluri complete)
**Verificare:**
```bash
# Rulează test din nou după 24 ore
/opt/scripts/ups-monthly-test.sh
# Dacă și al 2-lea test e POOR:
# -> Baterie defectă, returnează la furnizor
```
### Problema 4: Cluster nu formează quorum
**Verificări:**
```bash
# Status pe fiecare nod
ssh root@10.0.20.200 "pvecm status"
ssh root@10.0.20.201 "pvecm status"
ssh root@10.0.20.202 "pvecm status"
# Corosync funcționează?
ssh root@10.0.20.201 "systemctl status corosync"
```
**Recovery:**
```bash
# Restart corosync pe toate nodurile
for node in 10.0.20.200 10.0.20.201 10.0.20.202; do
ssh root@$node "systemctl restart corosync pve-cluster"
done
# Așteaptă 30 secunde
sleep 30
# Verifică din nou
pvecm status
```
## Checklist Post-Înlocuire
### Verificare Imediată (primele 24 ore):
- [ ] Toate nodurile online în cluster
- [ ] Quorum OK (pvecm status)
- [ ] UPS status: OL (Online)
- [ ] Baterie nouă se încarcă (battery.charge crește)
- [ ] Test automat baterie: EXCELLENT sau GOOD
- [ ] VM-uri critice pornite și funcționale
- [ ] Servicii în producție OK
- [ ] Notificare utilizatori trimisă
- [ ] Documentat în log (/var/log/ups-maintenance.log)
### Monitorizare Prima Săptămână:
- [ ] Zi 1: Verificare battery.charge ajunge la 100%
- [ ] Zi 3: Test fizic scurt (deconectare 10s)
- [ ] Zi 7: Test baterie complet (rulare script lunar manual)
### Acțiuni După 1 Lună:
- [ ] Verificare test lunar automat (1 ale lunii)
- [ ] Rezultat ar trebui fie în continuare EXCELLENT/GOOD
- [ ] Dacă nu: verifică baterie/conexiuni
## Checklist Înainte de Următoarea Mentenanță
Pentru mentenanța viitoare (peste 3-4 ani), verifică că:
- [ ] Acest document este actualizat
- [ ] IP-urile nodurilor sunt corecte în script
- [ ] Backup-uri recente există
- [ ] Procedura a fost testată/revizuită
- [ ] Ai bateria de rezervă comandată din timp
## Referințe
- Script shutdown: `/opt/scripts/ups-maintenance-shutdown.sh`
- Log mentenanță: `/var/log/ups-maintenance.log`
- Test lunar: `/opt/scripts/ups-monthly-test.sh`
- Documentație UPS: [`UPS-SHUTDOWN-README.md`](UPS-SHUTDOWN-README.md)
---
**Autor:** Claude Code
**Data:** 2025-10-06
**Versiune:** 1.0