Data-delivery senza "single point of failure"
Ci è stata commissionata la realizzazione di un sistema che deve ospitare un applicazione per la distribuzione su rete geografica di grandi quantità di dati tecnico-scientifici (meteo-clima). Questa applicazione permette all'utente abilitato di selezionare e prelevare il sottoinsieme di dati di suo interesse da un pool che misura diversi terabytes.
I requisiti principali richiesti all'infrastruttura sono l'affidabilità, la disponibilità 24x7, la flessibilità e l'espandibilità.
Abbiamo realizzato l'infrastruttura in questione utilizzando le seguenti componenti:
Hardware: una coppia di server Linux dotati 16-core Intel e 30 TB di spazio disco cadauno, interconnessi da una rete a 10 Gigabit, che svolge le funzioni di service network, oltre alla tradizionale rete ethernet gigabit.
Software: abbiamo accoppiato un sistema di "private cloud" (Ganeti) con un sistema di "software-defined storage" (Gluster). Entrambi questi componenti sono software open-source liberamente disponibile.
Ganeti è un software open-source sviluppato da Google che si definisce un "gestore di cluster di server virtuali". Utilizza le tecnologie di virtualizzazione Xen e KVM e il sistema di storage (RAID1 su ethernet) DRBD. Ganeti è stato progettato per facilitare la gestione dei cluster di server virtuali e per fornire il recupero veloce e semplice in caso di guasti fisici e per utilizzare "commodity hardware".
Gluster è un file system distribuito, che permette di aggregare assieme le risorse fornite da un insieme di server, detti "storage building blocks", interconnessi tramite rete Infiniband o TCP/IP, in un unico filesystem di rete (NAS virtuale).
La caratteristica saliente di entrambi i sistemi software utilizzati rispetto ad altri software con funzionalità simili è quella di non avere "single point of failure" in quanto entrambi sono basati su un architettura peer-to-peer, in cui qualunque dei peer è in grado di assumere funzioni di master. Inoltre sia le macchine virtuali (Ganeti-DRBD) che i dati da distribuire (Gluster) sono replicati in doppia copia. Tutto ciò conferisce al sistema una notevole resistenza ai guasti.
Il sistema è anche flessibile ed espandibile: aggiungendo nuovi server alla service network è possibile aumentare la capacità del sistema sia in termini di capacità di storage che computazionale. O di rimpiazzare una componente divenuta obsoleta con una più moderna (funzionalità, questa, che la distingue in modo netto da soluzioni tradizionali come le SAN monolitiche, ad esempio).
L'utilizzo di macchine virtuali permette inoltre un processo di evoluzione del software di distribuzione dei dati molto naturale, in quanto è possibile sviluppare e testare nuove componenti sulla stessa infrastruttura che contiene l'applicazione di produzione.