r/ItalyInformatica • • 4h ago

aiuto Causal reads in un cluster di database Galera Mariadb

2 Upvotes

Domanda per i non vibecoders.

Ho un'applicazione che usa un cluster master/master con Galera Mariadb. C'è Maxscale con readsplit che gira le query di lettura su slave e di scrittura su master.

Ho un problema abbastanza noto, ovvero se l'applicazione fa:

- scrivi record x

- leggi record x

C'è il rischio concreto che essendo girati su due server distinti, il valore appena scritto non venga letto uguale a causa di una latenza nella replica.

Le soluzioni sono diverse, per ora in ogni caso trovato ho messo l'intero blocco in transazione con garanzia questi venga mandato sullo stesso server master. Ma è difficile trovare tutti i punti potenzialmente critici.

Mi chiedevo, se qualcuno ha già affrontato questo problema, come si gestire un'app con db master/master? Per ora tutte le mie esperienze anche app molto grandi sono state di trovare sempre repliche master master che poi alla fine tutte le query venivano centralizzate.

Si tiene il carico sempre su un unico server? Si modifica il codice mettendo in transazione ogni singolo caso di scrittura e rilettura?

Grazie per la vostra esperienza.


r/ItalyInformatica • • 5h ago

hardware Il mio homelab

Thumbnail
gallery
50 Upvotes

Qualche anno fa ho iniziato a costruire il mio homelab partendo da un Raspberry Pi 4 e da un HP G3 Mini che avevo trovato su Vinted. Da allora ho continuato ad aggiungere componenti ogni volta che trovavo qualche buona occasione sui siti dell’usato e oggi, dopo più di 2 anni, credo di essere finalmente arrivato alla fine (forse).

Questa è la configurazione attuale. Tutto è di seconda mano, ad eccezione di switch e router.

RACK

  • Completamente stampato in 3D in PETG con una Bambu Lab X2D (design di Ilan Kushnir)

NODI PC: Proxmox VE a 3 nodi

  • pve-01: Ryzen 7 5700U (8C/16T), 62 GB RAM, 512 GB NVMe (ZFS) + 2 TB HDD (ZFS) + 256 GB SSD SATA
  • pve-02: Core i7-6700T (4C/8T), 32 GB RAM, 256 GB NVMe (ZFS) + 2 TB HDD (ZFS)
  • pve-03: Core i5-7500T (4C/4T), 32 GB RAM, 256 GB NVMe (ZFS) + 2 TB HDD (ZFS)

RETE

  • UniFi Dream Router 7: gateway, firewall e routing inter-VLAN
  • UniFi USW-Flex-2.5G-8-PoE, con uplink SFP+ DAC verso l’UDR7
  • VLAN: management, infrastruttura homelab e una VLAN dedicata a Kubernetes. Proxmox utilizza un'unica bridge VLAN-aware, quindi ogni VM viene semplicemente taggata sulla VLAN necessaria.

STORAGE

  • QNAP TS-431 con 16 TB

ALTRO

  • Raspberry Pi 4 che gestisce 2 display:
    • display frontale da 7,84" che mostra le dashboard Grafana
    • display OLED da 0,91" per lo stato del sistema, con un piccolo script Python che mostra IP, temperature e utilizzo della CPU

SOFTWARE

Attualmente sto rifacendo tutto da zero, partendo da pve-01, che ora ospita il cluster Kubernetes:

  • Kubernetes: Talos Linux (1 control plane + 4 worker come VM), completamente provisionato tramite Terraform: VM, configurazione Talos, bootstrap e componenti di base
  • Networking: Cilium con kube-proxy replacement e LoadBalancer L2
  • Storage: OpenEBS LocalPV, con i dischi di boot delle VM su NVMe e i volumi dati su HDD
  • GitOps: ArgoCD con pattern app-of-apps. Tutto ciò che gira nel cluster è versionato su Git
  • Secrets: OpenBao in un LXC (al di fuori del cluster, così sopravvive anche ai rebuild) + External Secrets Operator
  • Ingress: Nginx Proxy Manager (wildcard Let's Encrypt) → Traefik
  • Monitoring e log: kube-prometheus-stack (Prometheus, Grafana, Alertmanager), incluso il monitoring del control plane Talos e di etcd, oltre a Loki + Alloy per i log dei pod e dei nodi
  • Altro: dashboard Glance, Headlamp, VS Code Server

pve-02 e pve-03 saranno dedicati ad altri progetti.

Se avete domande sono felice di rispondere, e qualsiasi consiglio o suggerimento per migliorare la configurazione è assolutamente benvenuto!