Reorganize proxmox documentation into subdirectories per LXC/VM
- Create cluster/ for Proxmox cluster infrastructure (SSH guide, HA monitor, UPS) - Create lxc108-oracle/ for Oracle Database documentation and scripts - Create vm201-windows/ for Windows 11 VM docs and SSL certificate scripts - Add SSL certificate monitoring scripts (check-ssl-certificates.ps1, monitor-ssl-certificates.sh) - Remove archived VM107 references (decommissioned) - Update all cross-references between files - Update main README.md with new structure and navigation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
515
proxmox/cluster/ups/docs/UPS-BATTERY-REPLACEMENT.md
Normal file
515
proxmox/cluster/ups/docs/UPS-BATTERY-REPLACEMENT.md
Normal file
@@ -0,0 +1,515 @@
|
||||
# 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 să 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 să încarce bateria nouă
|
||||
- Verifică că 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 să 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
|
||||
Reference in New Issue
Block a user