IL BLOG DEGLI RHCE ITALIANI

OpenStack: la nuvola della community

Fabrizio Soppelsa

OpenStack

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).

Screen Shot 2014-10-23 at 23.06.24

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!

Info about author

Fabrizio Soppelsa

Prenota subito il tuo corso ufficiale Red Hat

GUARDA I CORSI