# 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 # Start/Stop/Restart VM qm start qm stop qm restart # Configurație VM qm config # Modificare configurație qm set --memory 4096 --cores 2 ``` ### Gestiune LXC Containers ```bash # Listare containere pct list # Status container pct status # Start/Stop container pct start pct stop # Configurație container pct config # Intrare în container pct enter ``` ### Gestiune Storage ```bash # Listare storage-uri pvesm status # Conținut storage pvesm list # Spațiu disponibil pvesm list local-zfs # Ștergere volum pvesm free ``` ### Gestiune Backup-uri ```bash # Listare backup-uri pvesh get /cluster/backup # Backup manual VM vzdump --storage backup --compress gzip # Restore backup qmrestore /path/to/backup.vma.gz --storage local-zfs # Căutare backup-uri pentru VM specific find /mnt/pve/backup-nfs/dump/ -name "**" | sort -V ``` ## Configurații Hardware Recomandate ### Pentru VM Windows 11 ```bash qm set --cpu host --cores 2 --memory 4096 --kvm 1 qm set --machine q35 --bios ovmf --ostype win11 qm set --net0 e1000=,bridge=vmbr0,firewall=1 qm set --virtio0 local-zfs:80,format=raw ``` ### Pentru VM Windows 7/10 ```bash qm set --cpu host --cores 2 --memory 4096 --kvm 1 qm set --machine pc-i440fx-2.12 --bios seabios --ostype win10 qm set --net0 virtio=,bridge=vmbr0,firewall=1 qm set --virtio0 local-zfs:60,format=raw ``` ### Pentru LXC Ubuntu/Debian ```bash pct set --cores 2 --memory 2048 pct set --net0 name=eth0,bridge=vmbr0,ip=dhcp,type=veth pct set --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