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:
464
proxmox/cluster/ups/README.md
Normal file
464
proxmox/cluster/ups/README.md
Normal file
@@ -0,0 +1,464 @@
|
||||
# Documentație UPS - Cluster Proxmox
|
||||
|
||||
## Despre
|
||||
|
||||
Această documentație descrie configurarea completă a sistemului UPS (Uninterruptible Power Supply) pentru cluster-ul Proxmox, incluzând monitorizare automată și shutdown orchestrat.
|
||||
|
||||
## Structură Directoare
|
||||
|
||||
```
|
||||
proxmox/ups/
|
||||
├── README.md # Acest fișier
|
||||
├── config/ # Fișiere de configurare NUT
|
||||
│ ├── ups.conf # Configurare driver UPS
|
||||
│ ├── upsd.conf # Configurare server NUT
|
||||
│ ├── upsd.users # Utilizatori și permisiuni
|
||||
│ ├── upsmon.conf # Configurare monitor local
|
||||
│ └── upssched.conf # Scheduler evenimente UPS
|
||||
├── scripts/ # Scripturi de shutdown și testare
|
||||
│ ├── ups-shutdown-cluster.sh # Script principal shutdown orchestrat
|
||||
│ ├── ups-shutdown-test.sh # Script test (dry-run)
|
||||
│ ├── upssched-cmd # Handler evenimente upssched
|
||||
│ ├── ups-monthly-test.sh # Test lunar automat baterie
|
||||
│ └── ups-maintenance-shutdown.sh # Shutdown pentru mentenanță UPS (NOU!)
|
||||
└── docs/ # Documentație
|
||||
├── INSTALARE-NUT.md # Ghid instalare NUT pe Proxmox
|
||||
├── INSTALARE-WINNUT.md # Ghid instalare WinNUT pe Windows
|
||||
├── UPS-SHUTDOWN-README.md # Documentație completă sistem
|
||||
├── UPS-MONTHLY-TEST.md # Documentație test lunar baterie
|
||||
└── UPS-BATTERY-REPLACEMENT.md # Procedură înlocuire baterie (NOU!)
|
||||
```
|
||||
|
||||
🎯 Utilizare:
|
||||
Pentru instalare nouă:
|
||||
Citește README.md
|
||||
Urmează docs/INSTALARE-NUT.md
|
||||
Copiază fișiere din config/ și scripts/ pe server
|
||||
Pentru backup:
|
||||
Tot ce trebuie este salvat în proxmox/ups/
|
||||
Versionat în Git
|
||||
Pentru recovery:
|
||||
Restaurează fișiere din config/ în /etc/nut/
|
||||
Restaurează fișiere din scripts/ în /usr/local/bin/
|
||||
Restart servicii
|
||||
|
||||
## Arhitectură Sistem
|
||||
|
||||
### Hardware
|
||||
- **UPS:** INNO TECH USB to Serial (Vendor ID: 0665, Product ID: 5161)
|
||||
- **Conectat la:** pvemini (10.0.20.201) via USB
|
||||
- **Tip:** Voltronic/Megatec protocol (driver: nutdrv_qx)
|
||||
|
||||
### Cluster Proxmox
|
||||
- **pvemini (10.0.20.201)** - Nod PRIMARY
|
||||
- Are UPS-ul conectat fizic
|
||||
- Rulează NUT server și driver
|
||||
- Ultimul nod care se oprește
|
||||
- **pve1 (10.0.20.200)** - Nod SECONDARY
|
||||
- Se oprește primul în caz de baterie critică
|
||||
- **pve2 (10.0.20.202)** - Nod SECONDARY
|
||||
- Se oprește primul în caz de baterie critică
|
||||
|
||||
### Monitorizare
|
||||
- **VM 201 (Windows 11)** - Monitorizare vizuală via WinNUT
|
||||
- Afișează status UPS în timp real
|
||||
- NU controlează shutdown-ul
|
||||
|
||||
## Flux Automat Shutdown
|
||||
|
||||
### Scenario 1: Întrerupere scurtă (< 3 minute)
|
||||
1. Curent se întrerupe → UPS trece pe baterie (status: OB)
|
||||
2. **📧 Email: "Trecere pe baterie"** - notificare imediată
|
||||
3. upssched pornește timer de 180 secunde
|
||||
4. Curent revine înainte de 3 minute
|
||||
5. **📧 Email: "Curent revenit - OK"**
|
||||
6. Timer anulat → **Niciun sistem nu se oprește**
|
||||
|
||||
### Scenario 2: Întrerupere lungă (> 3 minute)
|
||||
1. Curent se întrerupe → UPS pe baterie
|
||||
2. **📧 Email: "Trecere pe baterie"**
|
||||
3. Timer 180 secunde expiră
|
||||
4. **📧 Email: "Pe baterie 3 min - SHUTDOWN"**
|
||||
5. `/usr/local/bin/ups-shutdown-cluster.sh` pornește:
|
||||
- **📧 Email: "Shutdown cluster PORNIT"**
|
||||
- **Step 1:** Oprește toate VM-urile și LXC de pe toate nodurile
|
||||
- **Step 2:** Așteaptă 90 secunde pentru oprire graceful
|
||||
- **Step 3:** Shutdown pve1 → **📧 Email: "Shutdown pve1 trimis"**
|
||||
- **Step 4:** Shutdown pveelite → **📧 Email: "Shutdown pveelite trimis"**
|
||||
- **Step 5:** Așteaptă 60 secunde
|
||||
- **📧 Email: "Shutdown pvemini (ULTIMUL NOD)"**
|
||||
- **Step 6:** Comandă UPS shutdown (oprire completă)
|
||||
- **Step 7:** Shutdown pvemini (nod primary - ultimul)
|
||||
|
||||
### Scenario 3: Baterie scăzută imediată
|
||||
1. UPS raportează LOWBATT (baterie critică)
|
||||
2. **📧 Email: "BATERIE CRITICĂ - SHUTDOWN IMEDIAT"**
|
||||
3. Shutdown **IMEDIAT** (fără timer)
|
||||
4. Același flux de shutdown orchestrat ca mai sus
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Pentru Administrator Nou
|
||||
|
||||
1. **Citește documentația:**
|
||||
- Start: [`docs/UPS-SHUTDOWN-README.md`](docs/UPS-SHUTDOWN-README.md)
|
||||
- Detalii NUT: [`docs/INSTALARE-NUT.md`](docs/INSTALARE-NUT.md)
|
||||
- WinNUT: [`docs/INSTALARE-WINNUT.md`](docs/INSTALARE-WINNUT.md)
|
||||
|
||||
2. **Verifică status UPS:**
|
||||
```bash
|
||||
ssh root@10.0.20.201
|
||||
upsc nutdev1
|
||||
```
|
||||
|
||||
3. **Test dry-run:**
|
||||
```bash
|
||||
ssh root@10.0.20.201
|
||||
/usr/local/bin/ups-shutdown-test.sh
|
||||
cat /var/log/ups-shutdown-test.log
|
||||
```
|
||||
|
||||
4. **Monitorizează în WinNUT:**
|
||||
- Pornește WinNUT pe VM 201
|
||||
- Verifică că se conectează la 10.0.20.201:3493
|
||||
|
||||
### Verificare Săptămânală
|
||||
|
||||
```bash
|
||||
# Conectează-te la pvemini
|
||||
ssh root@10.0.20.201
|
||||
|
||||
# Status UPS
|
||||
upsc nutdev1 ups.status battery.charge input.voltage
|
||||
|
||||
# Status servicii
|
||||
systemctl status nut-server nut-monitor
|
||||
|
||||
# Logs evenimente recente
|
||||
tail -20 /var/log/ups-events.log
|
||||
|
||||
# Test dry-run
|
||||
/usr/local/bin/ups-shutdown-test.sh
|
||||
```
|
||||
|
||||
### Verificare Lunară
|
||||
|
||||
**🔋 Test Automat Baterie (1 ale lunii la 00:00):**
|
||||
|
||||
Scriptul `/opt/scripts/ups-monthly-test.sh` rulează automat lunar și:
|
||||
- Testează capacitatea reală a bateriei
|
||||
- Monitorizează scăderea charge și voltage
|
||||
- Evaluează sănătatea bateriei (EXCELLENT/GOOD/FAIR/POOR)
|
||||
- Trimite raport HTML prin email via PVE::Notify
|
||||
|
||||
**Verificare rezultat test:**
|
||||
```bash
|
||||
ssh root@10.0.20.201
|
||||
# Vezi ultimul test
|
||||
tail -50 /var/log/ups-monthly-test.log
|
||||
|
||||
# Rulare manuală (pentru testare)
|
||||
/opt/scripts/ups-monthly-test.sh
|
||||
```
|
||||
|
||||
**Documentație completă:** [`docs/UPS-MONTHLY-TEST.md`](docs/UPS-MONTHLY-TEST.md)
|
||||
|
||||
---
|
||||
|
||||
**Test fizic manual (opțional):**
|
||||
- Deconectează UPS de la priză timp de 30 secunde
|
||||
- Verifică că WinNUT detectează schimbarea (On Battery)
|
||||
- Verifică logs: `tail -f /var/log/ups-events.log`
|
||||
- Reconectează **înainte de 3 minute** pentru a evita shutdown
|
||||
|
||||
**Verificare SSH între noduri:**
|
||||
```bash
|
||||
ssh root@10.0.20.201
|
||||
ssh root@10.0.20.200 "hostname"
|
||||
ssh root@10.0.20.202 "hostname"
|
||||
```
|
||||
|
||||
## Instalare de la Zero
|
||||
|
||||
### 1. Instalare NUT pe pvemini
|
||||
|
||||
```bash
|
||||
# Instalare pachete
|
||||
apt update
|
||||
apt install -y nut nut-client nut-server
|
||||
|
||||
# Copiere fișiere de configurare
|
||||
cd /path/to/ROMFASTSQL/proxmox/ups
|
||||
scp config/* root@10.0.20.201:/etc/nut/
|
||||
|
||||
# Copiere scripturi shutdown
|
||||
scp scripts/ups-shutdown-cluster.sh scripts/ups-shutdown-test.sh scripts/upssched-cmd root@10.0.20.201:/usr/local/bin/
|
||||
ssh root@10.0.20.201 "chmod +x /usr/local/bin/ups-*.sh /usr/local/bin/upssched-cmd"
|
||||
|
||||
# Copiere script test lunar
|
||||
scp scripts/ups-monthly-test.sh root@10.0.20.201:/opt/scripts/
|
||||
ssh root@10.0.20.201 "chmod +x /opt/scripts/ups-monthly-test.sh"
|
||||
|
||||
# Configurare cron pentru test lunar
|
||||
ssh root@10.0.20.201 "(crontab -l 2>/dev/null | grep -v ups-monthly-test; echo '# UPS Monthly Battery Test'; echo '0 0 1 * * /opt/scripts/ups-monthly-test.sh') | crontab -"
|
||||
|
||||
# Configurare permisiuni
|
||||
ssh root@10.0.20.201 "chown nut:nut /etc/nut/ups*.conf /etc/nut/upsd.*"
|
||||
ssh root@10.0.20.201 "chmod 640 /etc/nut/upsd.users"
|
||||
|
||||
# Pornire servicii
|
||||
ssh root@10.0.20.201 "systemctl enable nut-server nut-monitor"
|
||||
ssh root@10.0.20.201 "systemctl start nut-server nut-monitor"
|
||||
|
||||
# Verificare
|
||||
ssh root@10.0.20.201 "upsc nutdev1"
|
||||
```
|
||||
|
||||
### 2. Instalare WinNUT pe VM 201
|
||||
|
||||
Vezi ghid detaliat: [`docs/INSTALARE-WINNUT.md`](docs/INSTALARE-WINNUT.md)
|
||||
|
||||
```
|
||||
Server: 10.0.20.201
|
||||
Port: 3493
|
||||
UPS: nutdev1
|
||||
User: admin
|
||||
Pass: parola99
|
||||
Polling: 15
|
||||
```
|
||||
|
||||
## Troubleshooting Rapid
|
||||
|
||||
### UPS nu răspunde
|
||||
|
||||
```bash
|
||||
ssh root@10.0.20.201
|
||||
|
||||
# Verifică UPS conectat
|
||||
lsusb | grep 0665
|
||||
|
||||
# Restart driver
|
||||
upsdrvctl stop && upsdrvctl start
|
||||
|
||||
# Verifică status
|
||||
upsc nutdev1
|
||||
```
|
||||
|
||||
### WinNUT nu se conectează
|
||||
|
||||
1. **Verifică Polling Interval ≠ 0** (pune 15)
|
||||
2. **Test port:**
|
||||
```powershell
|
||||
Test-NetConnection -ComputerName 10.0.20.201 -Port 3493
|
||||
```
|
||||
3. **Verifică server:**
|
||||
```bash
|
||||
ssh root@10.0.20.201 "ss -tulpn | grep 3493"
|
||||
```
|
||||
|
||||
### Scriptul de shutdown nu funcționează
|
||||
|
||||
```bash
|
||||
# Test SSH între noduri
|
||||
ssh root@10.0.20.201 "ssh root@10.0.20.200 hostname"
|
||||
|
||||
# Dacă eșuează, reconfigurează SSH keys
|
||||
ssh root@10.0.20.201
|
||||
ssh-keygen -f /root/.ssh/known_hosts -R 10.0.20.200
|
||||
ssh-keyscan -H 10.0.20.200 >> /root/.ssh/known_hosts
|
||||
```
|
||||
|
||||
## Logs Important
|
||||
|
||||
| Fișier | Scop |
|
||||
|--------|------|
|
||||
| `/var/log/ups-shutdown.log` | Shutdown orchestrat real |
|
||||
| `/var/log/ups-shutdown-test.log` | Test dry-run |
|
||||
| `/var/log/ups-events.log` | Evenimente UPS (upssched) |
|
||||
| `/var/log/ups-monthly-test.log` | **Test lunar baterie (NOU!)** |
|
||||
| `journalctl -u nut-server` | Server NUT |
|
||||
| `journalctl -u nut-monitor` | Monitor NUT |
|
||||
|
||||
## Comenzi Utile
|
||||
|
||||
```bash
|
||||
# Status UPS complet
|
||||
upsc nutdev1
|
||||
|
||||
# Doar câmpuri importante
|
||||
upsc nutdev1 ups.status battery.charge input.voltage output.voltage
|
||||
|
||||
# Comenzi disponibile
|
||||
upscmd -l nutdev1
|
||||
|
||||
# Conexiuni active NUT
|
||||
ss -tnp | grep 3493
|
||||
|
||||
# Monitoring live
|
||||
watch -n 2 'upsc nutdev1 ups.status battery.charge input.voltage'
|
||||
|
||||
# Test shutdown (DRY RUN - nu oprește nimic)
|
||||
/usr/local/bin/ups-shutdown-test.sh
|
||||
|
||||
# Test lunar baterie (cu raport email)
|
||||
/opt/scripts/ups-monthly-test.sh
|
||||
|
||||
# Verifică ultimul test lunar
|
||||
tail -50 /var/log/ups-monthly-test.log
|
||||
```
|
||||
|
||||
## Configurare Personalizată
|
||||
|
||||
### Modificare timp de asteptare (default: 3 minute)
|
||||
|
||||
Fisier: `/etc/nut/upssched.conf` pe pvemini
|
||||
|
||||
Linia relevanta:
|
||||
```
|
||||
AT ONBATT * START-TIMER onbatt 180
|
||||
```
|
||||
|
||||
Valoarea **180** = secunde (3 minute). Exemple:
|
||||
- 180 = 3 minute
|
||||
- 300 = 5 minute
|
||||
- 600 = 10 minute
|
||||
|
||||
Pentru a modifica:
|
||||
```bash
|
||||
# Editare manuala
|
||||
nano /etc/nut/upssched.conf
|
||||
|
||||
# Sau comanda directa (exemplu: 5 minute)
|
||||
sed -i 's/START-TIMER onbatt [0-9]*/START-TIMER onbatt 300/' /etc/nut/upssched.conf
|
||||
|
||||
# Restart serviciu pentru a aplica
|
||||
systemctl restart nut-monitor
|
||||
```
|
||||
|
||||
### Adăugare noduri noi în cluster
|
||||
|
||||
Editează `/usr/local/bin/ups-shutdown-cluster.sh`:
|
||||
|
||||
```bash
|
||||
# Adaugă IP-ul noului nod
|
||||
NODES=("10.0.20.200" "10.0.20.202" "10.0.20.XXX")
|
||||
```
|
||||
|
||||
## Backup și Restore
|
||||
|
||||
### Backup configurație
|
||||
|
||||
```bash
|
||||
# De pe stația locală
|
||||
cd /path/to/ROMFASTSQL/proxmox/ups
|
||||
|
||||
# Backup configurație
|
||||
ssh root@10.0.20.201 "tar czf /tmp/nut-backup.tar.gz /etc/nut/*.conf /usr/local/bin/ups*.sh /usr/local/bin/upssched-cmd"
|
||||
scp root@10.0.20.201:/tmp/nut-backup.tar.gz ./nut-backup-$(date +%Y%m%d).tar.gz
|
||||
```
|
||||
|
||||
### Restore configurație
|
||||
|
||||
```bash
|
||||
# Extrage backup
|
||||
tar xzf nut-backup-YYYYMMDD.tar.gz
|
||||
|
||||
# Copiază pe server
|
||||
scp -r etc/nut/* root@10.0.20.201:/etc/nut/
|
||||
scp usr/local/bin/* root@10.0.20.201:/usr/local/bin/
|
||||
|
||||
# Restart servicii
|
||||
ssh root@10.0.20.201 "systemctl restart nut-server nut-monitor"
|
||||
```
|
||||
|
||||
## Securitate
|
||||
|
||||
### Parole
|
||||
|
||||
**IMPORTANT:** Schimbă parolele default!
|
||||
|
||||
```bash
|
||||
ssh root@10.0.20.201
|
||||
nano /etc/nut/upsd.users
|
||||
|
||||
# Schimbă "parola99" cu ceva sigur
|
||||
# Apoi restart:
|
||||
systemctl restart nut-server
|
||||
```
|
||||
|
||||
### Firewall
|
||||
|
||||
NUT portul 3493 trebuie accesibil din rețea locală. Dacă ai firewall:
|
||||
|
||||
```bash
|
||||
# Permite port 3493 din subnet local
|
||||
iptables -A INPUT -p tcp --dport 3493 -s 10.0.20.0/24 -j ACCEPT
|
||||
```
|
||||
|
||||
## Suport și Documentație
|
||||
|
||||
- **NUT Official:** https://networkupstools.org/
|
||||
- **NUT Documentation:** https://networkupstools.org/docs/user-manual.chunked/
|
||||
- **Hardware Compatibility:** https://networkupstools.org/stable-hcl.html
|
||||
- **WinNUT GitHub:** https://github.com/gawindx/WinNUT-V2
|
||||
|
||||
## Notificări Email
|
||||
|
||||
Sistemul trimite notificări email via **PVE::Notify** pentru toate evenimentele importante:
|
||||
|
||||
| Eveniment | Când | Severity |
|
||||
|-----------|------|----------|
|
||||
| **ONBATT** | UPS trece pe baterie | warning |
|
||||
| **ONLINE** | Curentul revine | info |
|
||||
| **LOWBATT** | Baterie critică | error |
|
||||
| **SHUTDOWN_START** | Începe shutdown cluster | error |
|
||||
| **SHUTDOWN_NODE** | Shutdown nod secundar (pentru fiecare) | error |
|
||||
| **SHUTDOWN_PRIMARY** | Shutdown nod primary (ultimul) | error |
|
||||
| **COMMBAD** | Comunicație pierdută cu UPS | warning |
|
||||
|
||||
**Configurare:** Email-urile folosesc notificările Proxmox existente. Verifică că ai configurat un target email în **Datacenter → Notifications**.
|
||||
|
||||
**Template-uri:** `/etc/pve/notification-templates/default/ups-power-event-*`
|
||||
|
||||
## Funcționalități Complete
|
||||
|
||||
### ✅ Shutdown Orchestrat Automat
|
||||
- Detectare întrerupere curent (3 minute grace period)
|
||||
- Oprire ordonată: VM-uri/LXC → noduri secundare → nod primary
|
||||
- **Oprire automată UPS** după shutdown (protecție power surge)
|
||||
- Notificări email la fiecare pas
|
||||
|
||||
### ✅ Test Lunar Automat Baterie (NOU!)
|
||||
- Rulare automată pe 1 ale lunii la 00:00
|
||||
- Test real capacitate baterie (comutare pe baterie ~10 secunde)
|
||||
- Evaluare sănătate: EXCELLENT/GOOD/FAIR/POOR
|
||||
- Rapoarte HTML + email prin PVE::Notify
|
||||
- Recomandări automate pentru înlocuire baterie
|
||||
- Log detaliat istoric teste
|
||||
|
||||
### ✅ Monitorizare Continuă
|
||||
- WinNUT pe VM 201 (Windows 11) pentru vizualizare real-time
|
||||
- NUT server pe pvemini expune date la toate nodurile
|
||||
- Logging complet evenimente și teste
|
||||
|
||||
### ✅ Mentenanță Baterie (NOU!)
|
||||
- Script automat shutdown orchestrat pentru înlocuire baterie
|
||||
- Procedură pas-cu-pas completă cu checklist-uri
|
||||
- Recovery procedures pentru probleme comune
|
||||
- Documentație: [`docs/UPS-BATTERY-REPLACEMENT.md`](docs/UPS-BATTERY-REPLACEMENT.md)
|
||||
|
||||
## Autori și Istoric
|
||||
|
||||
- **Creat:** 2025-10-06
|
||||
- **Versiune:** 1.2
|
||||
- **Ultima modificare:** 2026-01-13
|
||||
- **Autor:** Configurat automat via Claude Code
|
||||
- **Changelog:**
|
||||
- v1.2 (2026-01-13): Adăugat notificări email pentru toate evenimentele UPS + oprire automată UPS
|
||||
- v1.1 (2025-10-06): Adăugat test lunar automat baterie cu notificări PVE::Notify
|
||||
- v1.0 (2025-10-06): Release inițial cu shutdown orchestrat și monitorizare NUT
|
||||
|
||||
## Licență
|
||||
|
||||
Documentația și scripturile sunt furnizate "as-is" fără garanție.
|
||||
NUT și WinNUT sunt software open-source cu licențele lor respective.
|
||||
Reference in New Issue
Block a user