- 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>
759 lines
23 KiB
Markdown
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 |