Files
ROMFASTSQL/proxmox/cluster/README.md
Claude Agent 679719c295 docs(cluster): document notification targets + cron stdout rules
- Proxmox default-matcher acum trimite doar la mail-to-root (pve1 smtp
  eliminat din matcher → fix emailuri duble pentru backup/vzdump)
- Adaugat tabel cron jobs per nod cu motivul redirect-ului > /dev/null
- Regula: scripturi cu propriile notificari trebuie sa aiba redirect in
  crontab, altfel cron genereaza email suplimentar de confirmare

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 05:50:34 +00:00

759 lines
23 KiB
Markdown

# Ghid Conexiune SSH la Cluster Proxmox
## Informații Generale Cluster
- **Nume Cluster:** romfast
- **Număr Noduri:** 3
- **Status Quorum:** Activ (3/3 noduri)
- **Transport:** knet
- **Secure Auth:** on
### Noduri Cluster
| Nod | IP | Status | Node ID | Descriere |
|-----|-----|--------|---------|-----------|
| pve1 | 10.0.20.200 | Online | 1 | Nod cluster 1 |
| **pvemini (local)** | 10.0.20.201 | Online | 2 | **Nod principal (aici rulează LXC-urile)** |
| pveelite | 10.0.20.202 | Online | 3 | Nod cluster 3 |
### Versiune Proxmox
- **Versiune:** pve-manager/8.4.14/b502d23c55afcba1 (kernel: 6.8.12-15-pve)
- **Utilizator SSH:** root
## Configurare Inițială SSH
### 1. Generare Cheie SSH (din WSL/Linux)
```bash
# Generează cheie SSH RSA 4096-bit
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
# Locația default: ~/.ssh/id_rsa
# Apasă Enter pentru locația default
# Setează parolă opțională pentru cheie
```
### 2. Copierea Cheii pe Proxmox
```bash
# Metoda automată
ssh-copy-id root@10.0.20.201
# Metoda manuală
cat ~/.ssh/id_rsa.pub | ssh root@10.0.20.201 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
```
### 3. Testare Conexiune
```bash
ssh root@10.0.20.201
```
## Storage Configuration
### Storage-uri Disponibile (Cluster)
| Storage | Tip | Noduri | Status | Capacitate | Utilizat | Locație | Content |
|---------|-----|--------|--------|------------|----------|---------|---------|
| `local` | dir | **Toate** (separat pe fiecare) | active | 1.51 TiB | 128 KB | `/var/lib/vz` | ISO, templates, backup |
| `local-zfs` | zfspool | **pvemini, pve1, pveelite** | active | 1.75 TiB | 324 GiB (18%) | `rpool/data` | **VM disks, LXC rootfs** |
| `backup` | dir | **Doar pvemini** | active | 1.79 TiB | 333 GiB (18%) | `/mnt/backup` | Backup-uri principale |
| `backup-ssd` | dir | **Doar pve1** | disabled | - | - | `/mnt/pve/backup-ssd` | Backup-uri SSD |
| `backup-nfs` | nfs | - | disabled | - | - | NFS server 10.0.20.201 | - |
| `backup-pvemini-nfs` | nfs | pve1, pveelite | disabled | - | - | NFS server 10.0.20.201 | - |
### Explicații Storage
**`local` (Director local)**
- **Scop:** ISO-uri, template-uri CT, backup-uri temporare
- **Locație:** Fiecare nod are propriul `/var/lib/vz` SEPARAT
- **Non-partajat:** Fișierele nu sunt vizibile între noduri
- **Conținut:** ISO, vztmpl (templates), backup
**`local-zfs` (ZFS Pool partajat)**
- **Scop:** Storage PRINCIPAL pentru VM-uri și LXC-uri
- **Pool:** `rpool/data` (ZFS)
- **Partajat:** Disponibil pe pvemini, pve1, pveelite
- **Conținut:** images (VM disks), rootdir (LXC root filesystems)
- **Performanță:** Cea mai bună (ZFS + local storage)
- **Sparse:** Enabled (economie spațiu)
**`backup` (Director backup pe pvemini)**
- **Scop:** Backup-uri principale job automat
- **Locație:** DOAR pe pvemini (10.0.20.201) - `/mnt/backup`
- **Non-partajat:** Accesibil doar pe pvemini
- **Conținut:** Toate tipurile (VM, LXC, templates)
- **Retention:** keep-all=1 (păstrează toate backup-urile)
**`backup-ssd` (Director backup pe pve1)**
- **Status:** Disabled
- **Locație:** DOAR pe pve1 - `/mnt/pve/backup-ssd`
**`backup-nfs` și `backup-pvemini-nfs`**
- **Status:** Disabled
- **Server NFS:** 10.0.20.201 (pvemini)
- **Export:** `/mnt/backup` de pe pvemini
- **Note:** Dezactivate - se folosește `backup` (director local)
### Căi Storage Important
**Pe pvemini (10.0.20.201):**
```bash
/var/lib/vz/ # local storage
/var/lib/vz/dump/ # backup-uri local
/mnt/backup/ # backup storage principal
/mnt/backup/dump/ # backup-uri job automat
rpool/data # ZFS pool pentru VM/LXC
```
**ISO-uri și Templates:**
```bash
/var/lib/vz/template/iso/ # ISO-uri pe fiecare nod (local)
/var/lib/vz/template/cache/ # LXC templates
```
## Comenzi Utile Proxmox
### Gestiune VM-uri
```bash
# Listare toate VM-urile
qm list
# Status VM specific
qm status <VMID>
# Start/Stop/Restart VM
qm start <VMID>
qm stop <VMID>
qm restart <VMID>
# Configurație VM
qm config <VMID>
# Modificare configurație
qm set <VMID> --memory 4096 --cores 2
```
### Gestiune LXC Containers
```bash
# Listare containere
pct list
# Status container
pct status <CTID>
# Start/Stop container
pct start <CTID>
pct stop <CTID>
# Configurație container
pct config <CTID>
# Intrare în container
pct enter <CTID>
```
### Gestiune Storage
```bash
# Listare storage-uri
pvesm status
# Conținut storage
pvesm list <storage_name>
# Spațiu disponibil
pvesm list local-zfs
# Ștergere volum
pvesm free <volume_id>
```
### Gestiune Backup-uri
```bash
# Listare backup-uri
pvesh get /cluster/backup
# Backup manual VM
vzdump <VMID> --storage backup --compress gzip
# Restore backup
qmrestore /path/to/backup.vma.gz <VMID> --storage local-zfs
# Căutare backup-uri pentru VM specific
find /mnt/pve/backup-nfs/dump/ -name "*<VMID>*" | sort -V
```
## Configurații Hardware Recomandate
### Pentru VM Windows 11
```bash
qm set <VMID> --cpu host --cores 2 --memory 4096 --kvm 1
qm set <VMID> --machine q35 --bios ovmf --ostype win11
qm set <VMID> --net0 e1000=<MAC>,bridge=vmbr0,firewall=1
qm set <VMID> --virtio0 local-zfs:80,format=raw
```
### Pentru VM Windows 7/10
```bash
qm set <VMID> --cpu host --cores 2 --memory 4096 --kvm 1
qm set <VMID> --machine pc-i440fx-2.12 --bios seabios --ostype win10
qm set <VMID> --net0 virtio=<MAC>,bridge=vmbr0,firewall=1
qm set <VMID> --virtio0 local-zfs:60,format=raw
```
### Pentru LXC Ubuntu/Debian
```bash
pct set <CTID> --cores 2 --memory 2048
pct set <CTID> --net0 name=eth0,bridge=vmbr0,ip=dhcp,type=veth
pct set <CTID> --rootfs local-zfs:20
```
## Template-uri și ISO-uri Disponibile
### Windows ISO-uri
- `Win11_24H2_Original.iso` - Windows 11 original (5.8GB)
- `windows11rufus.iso` - Windows 11 modificat cu Rufus (5.8GB)
- `windows10.iso` - Windows 10 (4.6GB)
### Drivere
- `virtio-win-0.1.141.iso` - Drivere VirtIO pentru Windows
## Rețea
### Configurația Bridge
- **Bridge:** vmbr0
- **Interfață Fizică:** enp87s0
- **IP Bridge:** 10.0.20.201/24
- **Gateway:** 10.0.20.1
- **Subnet:** 10.0.20.0/24
### VM-uri și Containere Active
#### LXC Containers (Proxmox pvemini - 10.0.20.201)
| VMID | Nume | IP | CPU | RAM | Storage | Status | Tags |
|------|------|-----|-----|-----|---------|--------|------|
| 100 | portainer | 10.0.20.170 | 2 cores | 1 GB | 21 GB | running | docker;portainer |
| 102 | coolify | - | 4 cores | 6 GB | 50 GB | stopped | debian |
| 103 | dokploy | 10.0.20.167 | 2 cores | 2 GB | 10 GB | running | docker;deployment |
| 104 | flowise | 10.0.20.161 | 4 cores | 2 GB | 100 GB | running | flowise;ollama |
| 106 | gitea | 10.0.20.165 | 2 cores | 4 GB | 250 GB | running | alpine;community-script;docker;gitea |
| 108 | central-oracle | 10.0.20.121 | 2 cores | 4 GB | 50 GB | running | docker;oracle |
#### Virtual Machines (QEMU)
| VMID | Nume | IP | CPU | RAM | Storage | Status | Descriere |
|------|------|-----|-----|-----|---------|--------|-----------|
| 201 | roacentral | DHCP | 2 cores | 4 GB | 500 GB | running | Windows 11 - Client pentru aplicații |
| 300 | Win11-Template | - | 2 cores | 4 GB | 500 GB | stopped | Windows 11 Template pentru clonare |
---
## 🔧 LXC 108 - Oracle Database (Acces Rapid)
### Informații Container
- **VMID:** 108 | **Nume:** central-oracle | **IP:** 10.0.20.121
- **CPU:** 2 cores | **RAM:** 4 GB | **Storage:** 50 GB (local-zfs)
- **Docker:** oracle-xe (Oracle XE 21c) | **Status:** Running
- **Portainer:** http://10.0.20.121:9443
### Acces în LXC (fără user/parolă)
> Nu ai nevoie de credențiale pentru LXC 108!
> Accesul se face prin Proxmox folosind `pct enter` sau `pct exec`.
```bash
# Metoda 1: Intrare directă în LXC
ssh root@10.0.20.201
pct enter 108
# Metoda 2: Execuție comandă din Proxmox
ssh root@10.0.20.201 "pct exec 108 -- docker ps"
```
### Restart Oracle Database
```bash
# Opțiunea 1: Restart Oracle container (RAPID)
ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"
# Opțiunea 2: Restart LXC complet
ssh root@10.0.20.201 "pct restart 108"
# Verificare după restart
ssh root@10.0.20.201 "pct exec 108 -- docker ps"
```
### Verificări Rapide
```bash
# Status containere Docker
ssh root@10.0.20.201 "pct exec 108 -- docker ps"
# Loguri Oracle
ssh root@10.0.20.201 "pct exec 108 -- docker logs oracle-xe --tail 50"
# Test conexiune Oracle
nc -zv 10.0.20.121 1521
```
### 📖 Documentație Completă Oracle
Pentru detalii despre:
- Conexiuni Oracle (PDB-uri: roa, roa2)
- Useri și parole Oracle
- SQL*Plus, JDBC, TNS configurations
- Export/import DMP
- Comenzi SQL și troubleshooting
**Vezi:** `../lxc108-oracle/README.md`
---
## Backup Job Configuration
### Job ID: backup-fbb668c0-726e
- **Schedule:** Daily la 02:00
- **Compression:** zstd
- **Mode:** snapshot
- **Storage:** backup
- **VM-uri incluse:** 100, 103, 104, 106, 108, 201
- **Retention:** 1 daily, 1 weekly
- **Fleecing:** Disabled
- **Notes Template:** {{guestname}}
**Containere în backup:**
- 100 (Portainer) - 10.0.20.170
- 103 (Dokploy) - 10.0.20.167
- 104 (Flowise) - 10.0.20.161
- 106 (Gitea) - 10.0.20.165
- 108 (Oracle) - 10.0.20.121
- 201 (Windows 11 VM) - DHCP
### Comenzi Cluster
```bash
# Verificare status cluster
pvecm status
# Listare noduri
pvecm nodes
# Listare toate resurse cluster
pvesh get /cluster/resources
# Verificare configurație cluster
cat /etc/pve/corosync.conf
```
## 📡 Hartă Rapidă IP-uri
### Noduri Proxmox Cluster
| Nod | IP | Rol | Web GUI |
|-----|-----|-----|---------|
| pve1 | 10.0.20.200 | Nod cluster 1 | https://10.0.20.200:8006 |
| **pvemini** | 10.0.20.201 | **Nod principal (LXC-uri active)** | https://10.0.20.201:8006 |
| pveelite | 10.0.20.202 | Nod cluster 3 | https://10.0.20.202:8006 |
### LXC Containers (Servicii)
| VMID | Nume | IP | Port(uri) | Serviciu |
|------|------|-----|-----------|----------|
| 100 | portainer | 10.0.20.170 | 9443, 8000 | Portainer (Docker management) |
| 103 | dokploy | 10.0.20.167 | 3000 | Dokploy (Deployment platform) |
| 104 | flowise | 10.0.20.161 | 3000 | Flowise AI + Ollama |
| 106 | gitea | 10.0.20.165 | 3000, 22 | Gitea (Git server) |
| 108 | central-oracle | 10.0.20.121 | 1521, 5500, 9443 | Oracle XE 21c + Portainer |
### Virtual Machines
| VMID | Nume | IP | OS | Rol |
|------|------|-----|-----|-----|
| 201 | roacentral | DHCP | Windows 11 | Client aplicații |
| 300 | Win11-Template | - | Windows 11 | Template pentru clonare |
### Accesuri Rapide
```bash
# Oracle Database (LXC 108) - Vezi ../lxc108-oracle/README.md pentru detalii
nc -zv 10.0.20.121 1521 # Test port Oracle
sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba
# Portainer Oracle
http://10.0.20.121:9443
# Portainer Principal
http://10.0.20.170:9443
# Gitea
http://10.0.20.165:3000
# Dokploy
http://10.0.20.167:3000
# Flowise AI
http://10.0.20.161:3000
```
**Pentru conexiuni Oracle detaliate (PDB-uri, useri, TNS, export DMP):**
Vezi fișierul `../lxc108-oracle/README.md`
---
## Troubleshooting
### Probleme Comune SSH
```bash
# Regenerare host keys pentru toate nodurile
ssh-keygen -R 10.0.20.200
ssh-keygen -R 10.0.20.201
ssh-keygen -R 10.0.20.202
# Conectare cu debug
ssh -v root@10.0.20.201
# Test conectivitate toate nodurile
ping -c 3 10.0.20.200
ping -c 3 10.0.20.201
ping -c 3 10.0.20.202
```
### Probleme Cluster
```bash
# Verificare quorum
pvecm status
# Restart servicii cluster
systemctl restart pve-cluster
systemctl restart corosync
# Verificare log-uri cluster
journalctl -u corosync -f
journalctl -u pve-cluster -f
```
### Probleme VM Windows 11
```bash
# Bypass cerințe TPM/Secure Boot în setup
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassRAMCheck" /t REG_DWORD /d 1 /f
# Forțare cont local în OOBE
oobe\BypassNRO.cmd
```
### Verificare Status Servicii
```bash
# Status servicii Proxmox
systemctl status pveproxy
systemctl status pvedaemon
systemctl status pvestatd
# Restart servicii dacă e nevoie
systemctl restart pveproxy
```
## Web Interface
### Accesare Web GUI
- **Nod pvemini (principal):** https://10.0.20.201:8006
- **Nod pve1:** https://10.0.20.200:8006
- **Nod pveelite:** https://10.0.20.202:8006
- **Utilizator:** root
- **Port:** 8006 (HTTPS)
## Note Importante
### Cluster și High Availability
1. **Clusterul are 3 noduri** - Quorum necesită 2/3 noduri online
2. **Întotdeauna fă backup** înainte de modificări majore
3. **Storage sincronizat** - backup și backup-nfs sunt disponibile pe toate nodurile
### Performance și Configurații
4. **Folosește storage local-zfs** pentru performanță optimă VM-uri/containere
5. **Pentru Windows 11** folosește placa de rețea e1000 în loc de VirtIO pentru compatibilitate
6. **CPU type 'host'** oferă performanțe maxime cu KVM=1
7. **VM 201 (Windows 11)** rulează pe local-zfs pentru performanță optimă
8. **LXC 108 (Oracle XE 21c)** - IP: 10.0.20.121 - Acces fără user/parolă prin `pct enter 108`
### Backup și Siguranță
9. **Backup zilnic la 02:00** pentru toate containerele active și VM 201
10. **Retention policy:** 1 daily + 1 weekly
11. **Compression zstd** pentru backup-uri eficiente
12. **Testează conexiunea SSH** pe toate nodurile înainte de automatizări
### Containere Active
13. **6 containere LXC active** - Portainer (170), Dokploy (167), Flowise (161), Gitea (165), Oracle (121)
14. **Container 103 (Dokploy)** - Platform deployment și management Docker
15. **Container 108 (Oracle XE 21c)** - Database principal
- Restart rapid: `ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"`
- Restart complet LXC: `ssh root@10.0.20.201 "pct restart 108"`
- Portainer: http://10.0.20.121:9443
---
## High Availability (HA)
Cluster-ul folosește HA pentru failover automat al containerelor critice. Configurația a fost revizuită după incidentul 2026-04-20 (vezi `incidents/2026-04-20-cluster-outage.md`).
### Grupuri HA
```
group: ha-group-main → pvemini (primar 100), pveelite (50), pve1 (33)
group: ha-group-elite → pveelite (primar 100), pve1 (33), pvemini (50)
```
### Resurse HA active
| Resursă | Grup | Home node | Max restart | Max relocate | Notă |
|---------|------|-----------|-------------|--------------|------|
| ct:100 portainer | ha-group-main | pvemini | 3 | 3 | |
| ct:101 minecraft | ha-group-elite | pvemini | 3 | 3 | Rulează pe pveelite |
| ct:104 flowise | ha-group-main | pvemini | 3 | 2 | Limite adăugate 2026-04-20 |
| ct:105 test | ha-group-elite | pvemini | - | - | Stopped |
| ct:106 gitea | ha-group-main | pvemini | 3 | 3 | |
| ct:108 central-oracle | ha-group-main | pvemini | 3 | 2 | Limite adăugate 2026-04-20 |
**VM 109 (oracle-dr-windows) NU mai e în HA** — scos intenționat 2026-04-20 după buclă OOM. Pornit exclusiv de scriptul DR test sâmbăta 06:00.
### Verificare HA
```bash
ssh root@10.0.20.201 "ha-manager status"
ssh root@10.0.20.201 "ha-manager config"
```
### Modificare limite HA (exemplu)
```bash
ha-manager set ct:108 --max_restart 3 --max_relocate 2
```
---
## Corosync Tuning
După incidentul 2026-04-20 (crash pveelite din USB LAN disconnect → pierdere cvorum → watchdog reset), tokenul corosync a fost mărit pentru a tolera glitch-uri scurte de rețea.
**Config curent** (`/etc/pve/corosync.conf`, `config_version: 16`):
```
totem {
token: 10000
token_retransmits_before_loss_const: 10
}
```
Impact: cluster-ul așteaptă **10 secunde** înainte să declare un nod mort (default era 1 sec). Tolerează USB disconnect scurt pe pveelite fără să forțeze reboot.
Verificare:
```bash
ssh root@10.0.20.201 "corosync-cmapctl | grep 'totem.token '"
# runtime.config.totem.token (u32) = 10650
# totem.token (u32) = 10000
```
---
## Diagnostic Tools (pvemini)
Instalate 2026-04-20 pentru a prinde cauza crash-ului din 00:23 (care nu a lăsat niciun log).
### rasdaemon — MCE + PCIe AER monitoring
```bash
# Verificare erori hardware istorice
ssh root@10.0.20.201 "ras-mc-ctl --summary"
# Memory errors / PCIe AER errors / Extlog / MCE
```
### netconsole — kernel logs către pve1
pvemini trimite log-uri kernel via UDP către pve1. Dacă pvemini crashează hard, ultimele linii kernel sunt captate pe pve1.
```bash
# Logs pre-crash pe pve1
ssh root@10.0.20.200 "tail /var/log/netconsole-pvemini.log"
# Status serviciu listener
ssh root@10.0.20.200 "systemctl status netconsole-receiver"
```
Config pe pvemini: `/etc/modules-load.d/netconsole.conf`
Config pe pve1: `/etc/systemd/system/netconsole-receiver.service` + `/var/log/netconsole-pvemini.log`
### kdump-tools — captură kernel crash dump
```bash
# Verificare configurare
ssh root@10.0.20.201 "cat /proc/cmdline | grep crashkernel"
ssh root@10.0.20.201 "systemctl is-active kdump-tools"
# La următorul crash, dump-ul va fi în:
ssh root@10.0.20.201 "ls /var/crash/"
```
Parametru: `crashkernel=128M` în `/etc/kernel/cmdline` (Proxmox folosește systemd-boot prin `proxmox-boot-tool`, nu GRUB).
### kernel.panic auto-reboot
```bash
ssh root@10.0.20.201 "sysctl kernel.panic"
# kernel.panic = 10 → auto-reboot după 10s la kernel panic
```
---
## Mail Notifications
Toate 3 nodurile trimit mail prin `mail.romfast.ro:465` cu autentificare SMTP SASL (cont `ups@romfast.ro`).
### Configurare Postfix
Config în `/etc/postfix/main.cf` pe fiecare nod:
```
relayhost = [mail.romfast.ro]:465
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
```
Credentiale în `/etc/postfix/sasl_passwd` (permisiuni 600).
### Test rapid
```bash
ssh root@10.0.20.201 "echo 'test' | mail -r 'ups@romfast.ro' -s 'test $(hostname)' mmarius28@gmail.com"
ssh root@10.0.20.201 "journalctl -u postfix@- --since '1 min ago' | grep status="
# Trebuie să vezi: status=sent (250 OK ...)
```
### Dependințe
- `libsasl2-modules` (instalat 2026-04-20 — fără el: `SASL authentication failure: No worthy mechs found`)
### Proxmox Notification Targets (`/etc/pve/notifications.cfg`)
Două target-uri definite, **doar `mail-to-root` activ în matcher**:
| Target | Tip | From | Folosit |
|--------|-----|------|---------|
| `mail-to-root` | sendmail | proxmox@romfast.ro | **DA**`default-matcher` |
| `pve1` | smtp (mail.romfast.ro:465) | pve1@romfast.ro | NU (definit, dar scos din matcher) |
`default-matcher` → trimite DOAR la `mail-to-root`:
```
matcher: default-matcher
mode all
target mail-to-root
```
Toate backup job-urile folosesc `DEFAULT` (nu au `notification-target` explicit), deci fiecare backup trimite **un singur email**.
> **ATENȚIE:** Dacă adaugi un nou notification target, nu-l adăuga în `default-matcher` dacă `mail-to-root` e deja acolo — vei primi emailuri duble pentru fiecare backup și alert.
### Cron Jobs — Regula stdout
Cron trimite email dacă scriptul produce orice output pe stdout/stderr. Scripturile care își trimit propriile notificări (via `mail` sau PVE::Notify) trebuie să aibă `> /dev/null 2>&1` în crontab, altfel generează un email suplimentar de "confirmare execuție".
**Stare curentă crontab pvemini (10.0.20.201):**
| Script | Schedule | Redirect | Motiv |
|--------|----------|----------|-------|
| `oom-alert.sh` | `* * * * *` | — | Silențios când nu e OOM |
| `ha-monitor.sh` | `0 0 * * *` | — | Output captat intern în `$()` |
| `ups-monthly-test.sh` | `0 0 1 * *` | `> /dev/null 2>&1` | Folosește `tee` → stdout |
| `vm109-watchdog.sh` | `* * * * *` | — | Scrie în log file |
| `pveelite-down-alert.sh` | `* * * * *` | — | Silențios fără alertă |
| `weekly-dr-test-proxmox.sh` | `0 6 * * 6` | `> /dev/null 2>&1` | Folosește `tee` → stdout |
| `kingston-thermal-monitor.sh` | `*/30 * * * *` | — | Folosește `logger`, silențios |
| `kingston-thermal-report.sh --mail` | `0 8 * * *` | `> /dev/null 2>&1` | Trimite raport via `mail`, confirmarea pe stdout |
**Stare curentă crontab pveelite (10.0.20.202):**
| Script | Schedule | Redirect | Motiv |
|--------|----------|----------|-------|
| `oracle-backup-monitor-proxmox.sh` | `0 21 * * *` | — | Silențios |
| `oom-alert.sh` | `* * * * *` | — | Silențios când nu e OOM |
| `pvemini-down-alert.sh` | `* * * * *` | — | Silențios fără alertă |
| `vm109-watchdog.sh` | `* * * * *` | — | Scrie în log file |
| `zfs-replicate-oracle-backups.sh` | `*/15 * * * *` | — | Silențios |
| `nightly-backup-mirror.sh` | `0 4 * * *` | — | Silențios |
| `weekly-dr-test-proxmox.sh` | `0 6 * * 6` | `> /dev/null 2>&1` | Folosește `tee` → stdout |
---
## OOM Alerting
Cron pe fiecare nod verifică la 1 minut dacă au avut loc OOM-kills. Dacă da, trimite mail cu detalii.
### Configurare
- Script: `/opt/scripts/oom-alert.sh` pe fiecare nod (pve1, pvemini, pveelite)
- Cron: `* * * * * /opt/scripts/oom-alert.sh`
- Mail destinat: `mmarius28@gmail.com` (de la `ups@romfast.ro`)
### Verificare script instalat
```bash
for ip in 10.0.20.200 10.0.20.201 10.0.20.202; do
ssh root@$ip "crontab -l | grep oom-alert"
done
```
### Test simulare
```bash
# Generează OOM kill mesaj fals (NU omoară nimic, doar log)
ssh root@10.0.20.202 "logger -t kernel -p kern.warn 'Killed process 99999 (fake-test) total-vm:1kB'"
# Așteaptă 1 min, verifică inbox
```
---
## Swap pe pveelite
Adăugat 2026-04-20 ca insurance împotriva OOM cascade (pveelite are doar 16 GB RAM).
- Swap device: `/dev/zvol/rpool/swap` (ZFS zvol 8 GB)
- Mount: `/etc/fstab`
- swappiness: 10 (folosește swap doar sub presiune reală)
### Verificare
```bash
ssh root@10.0.20.202 "swapon --show; sysctl vm.swappiness"
```
### Recreare (dacă e nevoie)
```bash
zfs create -V 8G -b 4K -o compression=zle -o logbias=throughput \
-o sync=always -o primarycache=metadata -o secondarycache=none \
rpool/swap
mkswap -f /dev/zvol/rpool/swap
echo '/dev/zvol/rpool/swap none swap sw 0 0' >> /etc/fstab
swapon -a
```
---
## Documentație Asociată
### Index Principal
- **README.md** - `../README.md` - Index complet documentație Proxmox
### Incidents
- **2026-04-20 Cluster Outage:** `incidents/2026-04-20-cluster-outage.md` — post-mortem complet + plan prevenție
### LXC Containers
- **LXC 108 - Oracle Database:** `../lxc108-oracle/README.md`
### Virtual Machines
- **VM 201 - Windows 11:** `../vm201-windows/README.md`
- SSL Certificates: `../vm201-windows/docs/vm201-certificat-letsencrypt-iis.md`
- Troubleshooting: `../vm201-windows/docs/`
- **VM 109 - Oracle DR Windows:** `../vm109-windows-dr/README.md` — NU mai e în HA din 2026-04-20
### Cluster Resources (acest director)
- **HA Monitor:** `cluster-ha-monitor.sh`
- **Sistem UPS:** `ups/README.md`
---
**Ultima actualizare:** 2026-05-01
**Autor:** Marius Mutu
**Proiect:** ROMFASTSQL - Proxmox Infrastructure Documentation