docs(proxmox): document HA, corosync tuning, diagnostic tools and mail relay
Following the 2026-04-20 cluster outage, the cluster README now covers HA resource limits, corosync token tuning (10s tolerance for USB glitches), rasdaemon/netconsole/kdump diagnostic stack on pvemini, mail relay via mail.romfast.ro with SMTP auth, OOM alerting via cron, and swap on pveelite. VM 109 README now clearly states it was removed from HA and is only started by the weekly DR test script. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -483,11 +483,213 @@ systemctl restart pveproxy
|
||||
|
||||
---
|
||||
|
||||
## 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`)
|
||||
|
||||
---
|
||||
|
||||
## 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`
|
||||
|
||||
@@ -495,6 +697,7 @@ systemctl restart pveproxy
|
||||
- **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`
|
||||
@@ -502,6 +705,6 @@ systemctl restart pveproxy
|
||||
|
||||
---
|
||||
|
||||
**Ultima actualizare:** 2026-01-27
|
||||
**Ultima actualizare:** 2026-04-20
|
||||
**Autor:** Marius Mutu
|
||||
**Proiect:** ROMFASTSQL - Proxmox Infrastructure Documentation
|
||||
Reference in New Issue
Block a user