feat(cluster): corosync ring1 pe insula, test de repornire cu WoL, fixuri in scripturi
Ring1 aplicat si verificat pe cluster live: config_version 17, ring1_addr pe
10.10.10.20x la fiecare nod, interface{linknumber:1}. Validat cu `corosync -t`
inainte de instalare. Testat prin oprirea reala a lui ring0 pe pveelite: link0
disconnected, link1 connected, cvorum 3/3 neatins - exact scenariul care pe
27 august a lasat nodul mort 16 ore.
Test de repornire completa a clusterului, cu Wake-on-LAN (trezire in ~15s).
Insula a urcat singura pe toate trei nodurile; ipoteza enumerarii tarzii a
USB-ului nu s-a materializat. Unealta noua: wake-cluster.ps1.
Testul a scos la iveala o linie ramasa in /etc/fstab pe pve1 si pveelite, care
monta storage-ul NFS de pe IP-ul de productie inaintea lui pvestatd. Backup-ul
trecea tacut pe reteaua gresita, cu storage.cfg corect. cluster-startup verifica
acum asta automat, impreuna cu IP-urile de insula si conectivitatea reala.
Patru bug-uri gasite prin rulare pe cluster live:
- sonda Oracle nu avea timeout: un sqlplus agatat pe o instanta in pornire a
blocat cluster-startup 14 minute, fara mesaj, cu propriul prag de 600s
nefolosit, fiindca bucla n-a apucat o iteratie;
- `bash -c` in loc de `bash -lc`: sqlplus lipsea din PATH, deci baza nu se
oprea si containerul s-ar fi inchis peste ea;
- PowerShell 5.1 pierde ghilimelele duble catre exe-uri native, deci comanda
ajungea rupta pe nod - trecut pe trimitere codificata base64;
- backup-ul de crontab si fisierul de stare se rescriau la o a doua rulare,
lasand monitorizarea oprita permanent si lista de repornit goala.
Documentatia de oprire planificata pornea de la o afirmatie devenita falsa
("nu exista datacenter.cfg") si de la o comanda care ar fi adaugat o a doua
linie `ha:`. Actualizata, impreuna cu inventarul de guest-uri (VM 304 lipsea
din toate listele de ordine si cadea in maturarea de dupa Oracle).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RJFQZcA7uerXRaL1NrsXpS
This commit is contained in:
@@ -1,17 +1,24 @@
|
||||
# Reatasarea adaptoarelor USB LAN dupa un reset pe magistrala USB.
|
||||
#
|
||||
# De ce exista: adaptoarele Realtek RTL8156 (driver r8152) folosite ca placa de
|
||||
# retea principala pe pve1 si pveelite se reseteaza singure pe xHCI. Kernelul
|
||||
# sterge interfata si o recreeaza, dar nimeni NU o readauga in vmbr0 si nu o
|
||||
# ridica - interfata e declarata "inet manual", fara "auto" si fara
|
||||
# "allow-hotplug", deci se ridica doar ca efect secundar la boot.
|
||||
# De ce exista: adaptoarele Realtek RTL8156 (driver r8152) de pe pve1 si pveelite
|
||||
# se reseteaza singure pe xHCI. Kernelul sterge interfata si o recreeaza, dar
|
||||
# nimeni NU o reconfigureaza - se ridica doar ca efect secundar la boot.
|
||||
#
|
||||
# Rezultatul: nodul merge perfect si e invizibil in retea, pe termen nelimitat.
|
||||
# Pe pveelite asta a insemnat 16 ore de tacere in noaptea de 27 spre 28 august
|
||||
# 2026 - vezi ../../incidents/2026-08-27-pveelite-down.md
|
||||
# Cand a fost scrisa regula, dongle-ul era portul puntii vmbr0, adica placa de
|
||||
# retea principala: un reset lasa nodul perfect functional si invizibil in retea,
|
||||
# pe termen nelimitat. Pe pveelite asta a insemnat 16 ore de tacere in noaptea de
|
||||
# 27 spre 28 august 2026 - vezi ../../incidents/2026-08-27-pveelite-down.md
|
||||
#
|
||||
# Din 2026-08-29 vmbr0 e pe interfata onboard, iar dongle-ul tine doar IP-ul
|
||||
# retelei dedicate de cluster (10.10.10.200 / 10.10.10.202, strofa "auto ...
|
||||
# inet static"). Miza s-a schimbat: un reset nu mai ia nodul offline, ci opreste
|
||||
# tacut replicarea ZFS si NFS-ul backup-pvemini.
|
||||
# Vezi ../../docs/switch-2.5g-dedicat-noduri.md
|
||||
#
|
||||
# Regula prinde momentul in care interfata reapare si reaplica configuratia.
|
||||
# Se declanseaza si la boot; e inofensiv, ifreload -a e idempotent.
|
||||
# Se declanseaza si la boot - inofensiv (ifreload -a e idempotent) si chiar util:
|
||||
# acopera cazul in care USB-ul se enumereaza dupa networking.service, singurul
|
||||
# risc ramas pentru reteaua de insula.
|
||||
|
||||
ACTION=="add", SUBSYSTEM=="net", ENV{ID_NET_DRIVER}=="r8152", RUN+="/usr/bin/systemctl --no-block start usb-lan-hotplug@$env{INTERFACE}.service"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[Unit]
|
||||
Description=Reataseaza adaptorul USB LAN %I in punte dupa un reset USB
|
||||
Description=Reaplica configuratia de retea pentru adaptorul USB LAN %I dupa un reset USB
|
||||
Documentation=file:///etc/udev/rules.d/70-usb-lan-hotplug.rules
|
||||
After=network.target
|
||||
|
||||
@@ -11,9 +11,10 @@ Type=oneshot
|
||||
# inainte ca astea sa se aseze prinde interfata intr-o stare intermediara.
|
||||
ExecStartPre=/bin/sleep 3
|
||||
|
||||
# ifreload -a, nu ifup: interfata e "inet manual" si e port de punte, iar doar
|
||||
# ifreload reface legatura cu vmbr0. E si comanda verificata in teren - exact ea
|
||||
# a readus pveelite in retea pe 28.08 la 09:49, de la consola fizica.
|
||||
# ifreload -a, nu ifup: e comanda verificata in teren - exact ea a readus pveelite
|
||||
# in retea pe 28.08 la 09:49, de la consola fizica. Atunci interfata era port de
|
||||
# punte si doar ifreload refacea legatura cu vmbr0; din 2026-08-29 are strofa
|
||||
# proprie cu IP static pe reteaua de cluster, pe care ifreload o reaplica la fel.
|
||||
# Aplica numai diferentele fata de /etc/network/interfaces, deci nu atinge
|
||||
# interfetele tap/veth ale guest-urilor.
|
||||
ExecStart=/usr/sbin/ifreload -a
|
||||
|
||||
Reference in New Issue
Block a user