Si sente molto parlare di OpenStack, ed a ragione. È uno dei progetti opensource più importanti del momento: 19000 sviluppatori da 144 paesi, decine di aziende coinvolte a partire dai più grossi calibri come HP, Red Hat, Mirantis, Dell, Cisco, IBM, un successo crescente e un’adozione massiccia nei data center di tutto il mondo.
È il software che può competere realmente con i giganti di Internet, come Amazon e Google e i loro cloud pubblici. Tutta l’infrastruttura di Rackspace, oltre a molte altre di grossi nomi come NASA, Samsung, Ebay, Paypal e così via, è fondata su OpenStack. Tutte le più importanti app del mondo (ad eccezione di quelle dotate di infrastrutture proprie) girano su OpenStack.
Ma OpenStack, che cos’è? L’obettivo del progetto è fornire un software che coniughi sotto un’unico cappello le capacità di cloud computing necessarie nell’informatica moderna: gestione degli hypervisor e delle macchine virtuali, delle reti, dello storage (sia delle macchine virtuali che di file, stile AWS S3), delle applicazioni, dei progetti, degli utenti, del Big Data, e molto altro.
OpenStack è scalabile verso l’alto con l’aggiunta (rimozione) di nodi, garantisce l’HA (High Availability), può inglobare nel cluster hardware eterogenei e geograficamente distribuiti, fornisce un’API omogenea per la gestione delle varie componenti. In una parola, OpenStack fornisce uno IaaS (Infrastructure as a Service).
Fondato da Rackspace e NASA in congiunzione nel 2010, oggi OpenStack è arrivato a spegnere le fatidiche 10 candeline: il 16 ottobre 2014 è stato rilasciata Juno, la decima release, quella della maturazione.
Tre aziende sono oggi al timone di questo gigantesco progetto di sistema operativo cloud: HP, Red Hat e Mirantis, e c’è da giurare che sotto sotto, al di là dei sorrisi di convenienza e alla collaborazione dell’opensource, che c’è, la competizione per la leadership sarà intensa e senza esclusione di colpi (qualcosa che qualcuno ha sintetizzato con il termine coopetizione).
OpenStack è il desiderio di molte organizzazioni che si scontrano però inevitabilmente contro la sua complessità (soprattutto a livello di networking). Poi, sebbene esistano svariati tool di deployment, dai punta e clicca ai manifesti puppet pronti, la sua diffusione è ancora ostacolata da un’oggettiva difficoltà di installazione. Solo i dipartimenti IT più grandi attualmente sono in grado di mettere in piedi e amministrare bene un’infrastruttura OpenStack in produzione.
In produzione, tipicamente OpenStack è rivolto essenzialmente a gestire il calcolo e lo storage, ed è costituito da una serie di tool interconnessi essenziali, e opzionali. Ogni tool si chiama “programma” e ogni programma ha un team leader, un team di sviluppo e uno di progettazione, un’API pubblica, un sistema di persistenza indipendente e una pagina Launchpad (per la gestione e segnalazione di bug e feature aggiuntive).
Si può interagire in tre modi con OpenStack: API, linea di comando o dashboard web (che si chiama Horizon). Ma il cuore di OpenStack si chiama Keystone, il programma che viene invocato ogni volta che si esegue un’operazione sul cloud e che gestisce le identità, le chiavi, i token di sessione, i progetti, gli utenti e i gruppi e garantisce l’autenticazione a tutti i servizi e gli utenti.
Il fulcro del calcolo (compute) si chiama invece Nova. Nova astrae la virtualizzazione e permette di usare delle API comuni per interfacciarsi ai driver, come libvirtd, docker o quelli di VMWare. Nova istanzia le macchine virtuali, le distrugge, le mette in pausa, e molto altro. Per le immagini dei sistemi operativi da usare, Nova si appoggia a Glance.
A sua volta, Nova ha abbandonato (ora deprecate) le proprie capacità di networking native e per le reti si affida a Neutron, il programma che fornisce il Network as a Service. Con Neutron si lavora a L2 come a L3, si possono creare load balancer (LBaaS) o firewall (FaaS), segmenti di rete, routing e molto altro. Anche Neutron, come Nova, astrae delle API comuni per le operazioni sulle reti e si basa sui driver, scritti dai produttori di apparati di networking (come Cisco).
Lo storage è gestito da Cinder. Parte molto delicata che, ormai è chiaro, astrae delle API comuni dei driver scritti dai produttori di storage (come EC2). Cinder alloca lo spazio per i volumi e gli snapshot.
Uno IaaS potrebbe esaurirsi qui, con questi pezzi. Ma OpenStack include e incuba molti altri programmi. Alcuni sono rilasciati ufficialmente nelle release, altri devono essere promossi allo status ufficiale, mentre altri sono ancora considerati sperimentali.
Tra i programmi ufficiali, Swift implementa lo storage distribuito di oggetti (file); Heat l’orchestrazione, cioè a partire da template crea strutture di macchine virtuali e progetti anche molto complessi; Ceilometer il monitoraggio; Trove il Database as a Service; Sahara il Big Data, fornendo un’API comune per progetti tipo Hadoop; Ironic, che sarà promosso a ufficiale in Kilo, la prossima release, gestisce il Metal as a Service, cioè il provisioning di server fisici.
La famiglia comunque è molto grande: ci sono anche Murano, per gestire il catalogo delle applicazioni, Zaqar per gestire il queueing, Designate per il DNS as a Service, Manila per il Filesharing as a Service, e tanti altri.
Esploreremo più nel dettaglio alcuni dei progetti ufficiali di OpenStack nei prossimi articoli, quindi stay tuned su Extraordy!