Università degli Studi di Napoli Federico II Scuola Politecnica e delle Scienze di Base Area Didattica Scienze MM.FF.NN. Master di I° Livello in Tecnologie per il CAlcolo Scientifico ad Alte Prestazioni - CASAP Tesi di Master GaaS, un approccio per l'integrazione dei paradigmi GRID/CLOUD: i servizi di storage Relatori Candidato Prof. Giuliano Laccetti Dott.ssa Luisa Carracciuolo Francesco Iannone matr. Z62/000014 Anno Accademico 2012-2013 Indice generale Prefazione.................................................................................................................. 5 Introduzione...............................................................................................................6 1 Le griglie computazionali.......................................................................................8 1.1 Elementi costitutivi di una griglia computazionale.........................................9 1.2 La tecnologia Grid di riferimento: il middleware EMI.................................12 2 Il Cloud Computing..............................................................................................14 2.1 I Modelli di servizio..................................................................................14 2.2 I Modelli di distribuzione.........................................................................15 2.3 Elementi costitutivi di un'infrastruttura di Cloud Computing........................17 2.4 La Tecnologia Cloud di riferimento: la piattaforma OpenStack....................19 3 Il Progetto GaaS...................................................................................................23 4 Grid Site Service: GaaS_GSS..............................................................................26 4.1 Il GaaS Cloud Management Controller: l'architettura generale ....................28 4.2 Architettura di Riferimento............................................................................30 4.3 Il GaaS CMC inserito in una architettura multilivello..................................31 4.4 Il database:gaasDB.......................................................................................34 4.5 Un caso d'uso: richiesta e creazione di un elemento grid..............................38 5 Creazione di un Elemento per lo Storage (SE)....................................................39 5.1 Verifica della disponibilità delle risorse.........................................................40 5.2 Schedulazione delle risorse...........................................................................43 5.3 Definizione e propagazione dei file di contestualizzazione .........................45 Francesco Iannone Z62/000014 Pagina 2 di 53 5.4 Creazione istanza..........................................................................................49 5.5 Funzionalità a contorno....................................................................................49 5.5.1 Update SE..................................................................................................49 5.5.2 Delete SE...................................................................................................51 Conclusioni e sviluppi futuri....................................................................................52 Francesco Iannone Z62/000014 Pagina 3 di 53 Indice delle illustrazioni Illustrazione 1: Entità e loro interazioni in uno scenario GRID-EMI......................13 Illustrazione 2: Modello architetturale di un'infrastruttura di cloud computing......17 Illustrazione 3: Esempio di un'architettura base di OpenStack...............................21 Illustrazione 4: modello concettuale del servizio GaaS_GSS .................................27 Illustrazione 5: Architettura generale del componente GaaS_CMC.........................28 Illustrazione 6: scelte implementative in merito ai moduli del Gaas_CMC ............30 Illustrazione 7: Schema Entità-Relazione che modella il database gaasDB.............37 Illustrazione 8: caso d'uso per la funzionalità di “creazione di un elemento grid”...38 Illustrazione 9: Diagramma di flusso che verifica la disponibilità delle risorse.......42 Illustrazione 10: Diagramma di flusso della procedura che schedula la richiesta di risorse .....................................................................................................................44 Illustrazione 11: Diagramma di flusso che sintetizza la fase di definizione dei file di contestualizzazione..................................................................................................46 Illustrazione 12: Attività eseguite all'avvio dell'istanza della VM sulla quale èinstanziato il ruolo.................................................................................................47 Illustrazione 13: Diagramma di flusso in merito all'aggiornamento dello spazio disponibile sullo storage element.............................................................................50 Illustrazione 14: Flusso delle attività svolte in fase di eliminazione dello storage element.................................................................................................................... 51 Francesco Iannone Z62/000014 Pagina 4 di 53 Prefazione Il lavoro svolto in questa tesi si colloca in un contesto progettuale più ampio che ha l'obiettivo di realizzare una piattaforma, GaaS, per l'integrazione dei paradigmi di Grid e Cloud computing. L'idea progettuale è un'iniziativa del gruppo di gestione del datacenter SCoPE (scopeadmin). Il Master CASAP ha fornito l'occasione e le persone per consolidare l'idea progettuale, già in parte realizzata negli ultimi due anni, attraverso la costituzione di un gruppo di lavoro al quale hanno partecipato quattro studenti del Master CASAP (F. Iannone, C. Napolitano, S. Scamardella e A. Solla) e i membri del gruppo di gestione del datacenter ScoPE (tutor relatori delle rispettive tesi di Master). Ciascuno degli studenti coinvolti ha contribuito alla definizione e all'arricchimento dell'architettura generale di GaaS, nonché all'implementazione di specifici servizi di gestione o di accesso. L'approccio utilizzato per lo svolgimento delle attività ha richiesto periodici incontri di coordinamento tra tutti i partecipanti al gruppo di lavoro, nonché una stretta collaborazione tra gli studenti coinvolti nella realizzazione delle varie attività. Tutto il lavoro è stato svolto su un set di risorse del datacenter SCoPE dedicate all'allestimento dell'architettura di riferimento e una versione prototipale del prodotto realizzato è attualmente disponibile sulle risorse suddette. Francesco Iannone Z62/000014 Pagina 5 di 53 Introduzione Le organizzazioni di ricerca si trovano spesso coinvolte in progetti nei quali devono collaborare con realtà differenti e geograficamente lontane, gruppi di ricerca e dipartimenti multi-disciplinari, appartenenti a domini amministrativi diversi. Per rispondere alle esigenze delle moderne sfide scientifiche è necessario un uso coordinato e condiviso delle risorse, assicurando sempre scalabilità, sicurezza ed efficienza. Fino ad oggi il mondo scientifico ha utilizzato quasi esclusivamente soluzioni di tipo Grid scegliendo di, investire in tale ambito molte risorse, essenzialmente perchè tale paradigma è stato, ed è di fatto, l'unico in grado di soddifare in maniera efficace le esigenze di calcolo condiviso su larga scala. Ma da qualche anno molte realtà, non solo aziendali, stanno guardando con interesse ai servizi che il Cloud Computing è capace di fornire in maniera semplice ed intuitiva. Si manifestano quindi nuove esigenze da parte di tutti i soggetti coinvolti:gli utenti, ad esempio, vorrebbero utilizzare i nuovi servizi e le interfacce semplificate del Cloud Computing pur mantenendo la possibilità di accedere alle risorse tramite interfacce Grid (soprattutto in quelle comunità che hanno investito molto, in questi anni, su Grid); dall'altra parte, i fornitori di servizi, vogliono ottimizzare l’uso delle proprie risorse ed allargare il proprio bacino d’utenza, per esempio supportando l’accesso e l’approvvigionamento di risorse tramite tecnologie diverse, mantenendo la sicurezza, dinamicità e scalabilità, raggiunte durante l’esperienza Grid di questi anni. La gestione dei dati e delle risorse di calcolo in ambito distribuito è molto complessa e prevede la risoluzione di alcune problematiche, come ad esempio la Francesco Iannone Z62/000014 Pagina 6 di 53 fornitura di un accesso efficiente ed integrato, una gestione corretta delle repliche, l'identificazione univoca e trasparente delle entità, il mantenimento dell'integrità e della consistenza, l'uso di cache che implementino funzionalità di scadenza e rimozione dei dati, e così via. Grid e Cloud computing si sono imposti come soluzioni di rilievo in quest'ambito, portando ad un livello più avanzato la gestione delle collaborazioni e la qualità del flusso informativo che intercorre fra le diverse comunità, scientifiche e non. Appare quindi necessaria una piattaforma che applichi un'integrazione dei principali aspetti positivi dei due paradigmi di calcolo, una realizzazione che permetta di fornire risorse e servizi interoperabili, mantenendo i principali benefici raggiunti in questi anni nel mondo Grid e Cloud. I primi due capitoli di questa tesi affronteranno gli aspetti relativi ai paradigmi del Grid e del Cloud Computing, entrando anche nel merito rispettivamente del middleware EMI e di OpenStack, che permettono di realizzare rispettivamente le due architetture. Il terzo capitolo sarà interamente dedicato alla piattaforma GaaS, della quale viene offerta una panoramica delle motivazioni che hanno portato a realizzarla nonché delle funzionalità che implementa ed dei servizi che offre. Il quarto capitolo, farà riferimento all'oggetto di questo lavoro di tesi, sarà quindi introdotto il servizio GaaS_GSS e sarà data una descrizione di come questi sia stato ampliato ed ottimizzato attraverso la componente GaaS_CMC della quale si descriverà l'architettura e l'integrazione nell'ambiente GaaS illustrandone il funzionamento anche grazie ad un diagramma di caso d'uso. Infine nel quinto capitolo verranno descritti nel dettaglio come tali servizi sono stati implementati. Francesco Iannone Z62/000014 Pagina 7 di 53 1 Le griglie computazionali In un ambiente industriale e scientifico in fase di profonda evoluzione tecnologica, le aziende devono reagire per non restare escluse dal processo di innovazione ma diventare più competitive sul mercato. Ciò può essere reso possibile utilizzando una tecnologia d’avanguardia che sfrutti le risorse a disposizione e limiti al tempo stesso gli investimenti. Al giorno d’oggi, ogni volta che si presenta un problema dovuto ad una carenza di potenza di calcolo, la soluzione è unire insieme le risorse sia che si tratti di un’azienda o di un’istituzione accademica. Tale insieme è quindi pensato ed usato come una singola, unificata risorsa: la griglia computazionale o GRID A lungo termine si prefigura uno scenario in cui le capacità di calcolo e di storage di milioni di sistemi, attraverso la rete globale, funzioneranno come un unico team, utilizzabile pressoché da chiunque ne avrà bisogno secondo il paradigma più generale del Distributed Computing.. Di seguito viene riportata la definizione di griglia computazionale data da FosterKesselman nel 1998 [1]: “A computational Grid is a hardware and software infrastructure that provides dependable, consistent, pervasive and inexpensive access to high-end computational capabilities” . Dunque si tratta di un'infrastruttura sia Hardware che Software che fornisce un accesso affidabile, consistente, pervasivo e non costoso verso unità computazionali di fascia alta. Francesco Iannone Z62/000014 Pagina 8 di 53 1.1 Elementi costitutivi di una griglia computazionale Un'infrastruttura di griglia computazionale è costituita dai seguenti servizi: Virtual Organization Membership Service (VOMS): Si tratta di un servizio che ha lo scopo di fornire meccanismi di autorizzazione/autenticazione degli utenti di una Virtual Organizazion (VO)1. Ciò è reso possibile grazie ad un sistema per la gestione delle identità degli utenti, rappresentate da certificati digitali, organizzate in gerarchie sulla base di ruoli e attributi. Il servizio VOMS è composto principalmente da: • Un VOMS core service, che rilascia credenziali ad utenti identificati da un Ente Certificante o Certification Authority (CA). • Un VOMS Admin service, che viene utilizzato dal responsabile della VO per gestire sia le stesse Virtual Organization sia le utenze che ad esse afferiscono. Workload Management System (WMS): Il ruolo del WMS è gestire l'insieme dei job presenti sull'infrastruttura allocando ad essi le risorse e monitorandone lo stato. Sarà comunque compito dell’utente, definire correttamente sia le azioni che il job deve eseguire sia i suoi requisiti. Il job da sottomettere al WMS può essere scritto in un apposito linguaggio che cambia a seconda del middleware in questione. Computing Element (CE): rappresenta un insieme di risorse computazionali localizzate in un sito. 1 Con i termini “Virtual Organization” si intende un insieme dinamico di individui o istituzioni che condividono risorse sulla base di regole e condizioni Francesco Iannone Z62/000014 Pagina 9 di 53 Un CE include solitamente una generica interfaccia all'insieme dei nodi di calcolo o (Worke Nodes), detta Grid Gate (GG). Quest’interfaccia è responsabile dell’accettazione e schedulazione dei job di calcolo verso i Worker Node, elementi che andremo ad analizzare a breve. Ciascun Computing Element rende nota la propria esistenza nella griglia computazionale mediante un sistema informativo, ed è di solito fornito di certificato digitale che ne attesta l'identità. Si occupa inoltre di gestire l’insieme di risorse di calcolo rappresentate dai Worker Node tramite un batch system e ordinare i job in code (queue). Worker Node (WN): I Worker Node sono i veri e propri nodi di calcolo,, ossia isistemi sulle quali vengono effettuate le elaborazioni. Tali sistemi vengono gestiti dal CE, con il quale andranno a interagire direttamente. User Interface (UI): L’interfaccia utente è il punto di accesso alle risorse della griglia. Su tale sistema a ciascun utente in possesso di un certificato personale sono consentite le seguenti operazioni: • la sottomissione del job ad un CE in via diretta o tramite WMS • la visualizzazione dello stato del job • la cancellazione del job • il recupero dell’output del job Information Sistem (IS): fornisce informazioni sulla struttura della Grid sia agli utenti che alla Grid stessa (agli elementi che la costituiscono). Tali informazioni riguardano lo stato delle risorse della Grid e consentono un uso ottimale delle risorse stesse. Francesco Iannone Z62/000014 Pagina 10 di 53 Il sistema informativo è organizzato in un sistema a livelli basato su un pull model gerarchico con architettura ad albero: – Basso livello (foglie): Grid Resource Information Server (GRIS) • Gestisce l’informazione sullo stato di una data risorsa • E' disponibile un GRIS su ogni risorsa (CE, SE, etc) • utilizza un insieme di sensori che estraggono dati utili sullo stato della risorsa – Livello medio: Site BDII (Berkley Database Information Index) • Gestisce l’informazione a livello di ‘sito’ , collezionando e propagando ai livelli superiori le informazioni raccolte dai GRIS sottostanti che sono periodicamente interrogati. • E' disponibile un BDII per ogni sito – Alto livello (radice): Top BDII • Ottiene informazioni su tutte le risorse registrate. • E' disponibile un BDII per ogni VO o multi-VO su base regionale Storage Elements (SE): Questi elementi forniscono un accesso uniforme ai dati delle risorse di storage. Ciascuno Storage Element possiede un certificato digitale che ne attesta l’identità. Lo Storage Element è il servizio che fornisce servizi per la locazione, l'accesso e il trasferimento dei files consentendo ad utenti o applicazioni GRID di utilizzare le risorse di storage, ossia di memorizzare i dati e ritrovarli per usi futuri Lo storage element fornisce diversi tipi di interfacce: Accesso ai dati (I/O), Trasferimento dati (GridFTP) , Storage Management (SRM) . Francesco Iannone Z62/000014 Pagina 11 di 53 L'interfaccia SRM maschera l'eterogeneità dei sistemi di archiviazione (gli SE possono controllare infatti semplici dischi, array di dischi o dispositivi a nastro) rendendo uniforme l'accesso alla risorsa e consentendo all'utente di riferirsi ai dati mediante un nome logico senza farsi carico di conoscere il luogo fisico sul quale questi sono di fatto memorizzati. 1.2 La tecnologia Grid di riferimento: il middleware EMI Come tecnologia Grid di riferimento considereremo quella realizzata nell'ambito del progetto Europeo EMI (The European Middleware Initiative) [2]. Tale progetto ha come obbiettivo quello di rendere disponibile un insieme consolidato di prodotti middleware2 basato sui quattro maggiori sistemi middleware presenti in contesto europeo: ARC, dCache, gLite and UNICORE. Il middleware EMI implementa un insieme integrato di componenti ciascuno dei quali rende disponibili i servizi che costituiscono la Griglia Computazionale. Grazie ad esso si realizza l’infrastruttura accessibile ai membri della comunità organizzati in Virtual Organizations. L’infrastruttura fornisce agli utenti servizi di alto livello per la schedulazione e l’esecuzione di job computazionali, l'accesso ed il trasferimento di dati e l'accesso alle informazioni sullo stato dell'infrastruttura stessa. In particolare vengono forniti servizi di autenticazione/autorizzazione (VOMS, MYPROXY ), allocazione, scoperta della risorse e job scheduling (LB/WMS), diffusione e recupero delle informazioni relative ai siti Grid (BDII o più in generale IS) . Le risorse di calcolo (WNs) sono fornite per mezzo del CE (Computing Element) 2 Con il termine middleware si intende “lo strato software, compreso fra il sistema operativo e le applicazioni, in grado di interagire con entrambi i suddetti livelli in un contesto di calcolo distribuito." Francesco Iannone Z62/000014 Pagina 12 di 53 che è un endpoint con un set di code gestite dall’ LRMS (Local Resource Management System). Lo storage element (SE) fornisce servizi e interfacce relative all'accesso ed archiviazione dati. Gli utenti possono accedere ai servizi dalla User Interface (UI). In figura 1 è rappresentata una griglia computazionale basata sul middleware EMI che fa uso dei servizi suddetti. Le linee tratteggiate rappresentano le informazioni scambiate tra i vari componenti (es. info sullo stato del job e delle risorse ) mentre quelle continue rappresentano il flusso di dati di un job (sia in input che in output ) che “attraversa ” la griglia. Illustrazione 1: Entità e loro interazioni in uno scenario GRID-EMI Francesco Iannone Z62/000014 Pagina 13 di 53 2 Il Cloud Computing Attualmente il termine di Cloud Computing viene usato per indicare l'accesso tramite internet a servizi disponibili e/o instanziati on-demand. Per dare una definizione che identifichi il termine “cloud computing” in maniera più chiara e secondo uno standard ben preciso, si può far riferimento alla definizione che viene data dal NIST (National Institute of Standards and Technology) [3] della quale viene di seguito riportata la traduzione: “Il Cloud Computing è un modello che permette da qualsiasi luogo e in maniera facile l’accesso su richiesta tramite rete, ad un insieme di risorse di elaborazione condivise e configurabili (es. reti, server, storage, applicazioni e servizi) che vengono rapidamente fornite e rilasciate con il minimo sforzo di gestione o di interazione da parte del fornitore del servizio”. Il documento pubblicato dal NIST espone, tra l'altro, i modelli di servizio e di distribuzione del cloud computing che vengono di seguito riportati: 2.1 I Modelli di servizio Per modello di servizio si intende il tipo di servizio che il fornitore (o cloud producer) rende disponibile al consumatore (o cloud consumer). Lo standard definito dal NIST classifica tali tipi in classi a seconda del livello di astrazione crescente (dalla infrastruttura fino alla piattaforma) Francesco Iannone Z62/000014 Pagina 14 di 53 Infrastructure as a Service (IaaS): I servizi di tale classe mettono a disposizione del consumatore risorse di elaborazione, archiviazione, reti e sulle quali il consumatore è in grado di distribuire e eseguire software arbitrario, che può includere sistemi operativi e applicazioni. Il consumatore non gestisce e non controlla l’infrastruttura cloud sottostante, ma ha il controllo su sistemi operativi, e sulle applicazioni distribuite, ed eventualmente ha il controllo limitato di componenti di rete (es. firewall host). Software as a Service (SaaS): I servizi di tale classe mettono a disposizione del consumatore applicazioni del fornitore in grado di essere eseguite su un’infrastruttura cloud. Le applicazioni sono accessibili dai vari dispositivi client attraverso un’ interfaccia di tipo thin client, ad esempio attraverso un web browser, oppure attraverso API. Il consumatore non gestisce e non controlla l’infrastruttura cloud sottostante, che comprende la rete, i server, i sistemi operativi, lo storage né le singole funzionalità delle applicazioni. Platform as a Service (PaaS): I servizi di tale classe mettono a disposizione del consumatore la possibilità di eseguire sull'infrastruttura cloud applicazioni acquisite o create dal consumatore stesso, utilizzando linguaggi di programmazione, librerie, servizi e strumenti supportati dal fornitore. Il consumatore non gestisce e non controlla l’infrastruttura cloud sottostante, che comprende la rete, i server, i sistemi operativi e l’eventuale storage, ma ha il controllo sulle applicazioni distribuite e le possibili impostazioni di configurazione per l’ambiente che ospita le applicazioni. 2.2 I Modelli di distribuzione Per modello di distribuzione si intende la modalità con la quale il fornitore rende disponibile al consumatore le risorse. Lo standard definito dal NIST classifica tali modalità in classi a seconda dell'accessibilità e condivisone delle risorse. Francesco Iannone Z62/000014 Pagina 15 di 53 Private cloud: L’infrastruttura cloud viene fornita ad uso esclusivo di una singola organizzazione che comprende più consumatori. L’infrastruttura può essere di proprietà, gestita o solo azionata, dall’organizzazione o da terze parti, oppure da una combinazione di essi. L’ infrastruttura può trovarsi all’interno o al di fuori della sede dell’organizzazione. Community cloud: L’infrastruttura cloud viene fornita ad uso esclusivo di una specifica comunità di consumatori, provenienti da organizzazioni che condividono fini ed interessi. L’infrastruttura può essere di proprietà, gestita da una o più organizzazioni all’interno della comunità o da terze parti, oppure da una combinazione di essi. L’infrastruttura può trovarsi all’interno o al di fuori delle sedi delle organizzazioni.. Public cloud: L’infrastruttura viene fornita per un utilizzo aperto al grande pubblico. L’infrastruttura può essere di proprietà, gestita o azionata da organizzazioni aziendali, accademiche o governative, oppure da una combinazione di essi. L’infrastruttura è situata nelle sedi del fornitore. Hybrid cloud: L’infrastruttura cloud è un insieme di due o più infrastrutture cloud distinte (private, community o public) che mantengono la propria unicità, ma sono legate tra di loro da tecnologie standard o proprietarie che consentono la portabilità dei dati e delle applicazioni (es. cloud bursting 3 per il bilanciamento di carico tra infrastrutture cloud). 3 E’ un concetto che esprime la possibilità per una applicazione che gira all’interno di un'infrastruttura cloud o data center, di poter utilizzare risorse di elaborazione di un altro cloud nel momento in cui l’applicazione raggiunge il picco di utilizzo. Francesco Iannone Z62/000014 Pagina 16 di 53 2.3 Elementi costitutivi di un'infrastruttura di Cloud Computing Per facilitare la comprensione dei requisiti, degli usi, delle caratteristiche e degli standard del cloud computing, in questo paragrafo sarà introdotta un'anteprima dell'architettura di riferimento per il cloud computing così come formulata da lNIST [4], indentificando i principali attori coinvolti, le loro attività e funzioni nel cloud computing. Illustrazione 2: Modello architetturale di un'infrastruttura di cloud computing Come mostrato in figura 2, il NIST, in merito all'architettura definisce cinque attori principali, ognuno dei quali è un'entità (una persona fisica o un'organizzazione) che partecipa in una transazione o un processo e/o realizza tasks nel cloud computing. Tali attori vengono elencati e definiti nella tabella che segue: Francesco Iannone Z62/000014 Pagina 17 di 53 Attore Definizione Cloud Consumer Una persona fisica o un'organizzazione che mantiene una relazione di business ed usa i servizi di un Cloud Provider. Cloud Provider Una persona o un' organizzazione responsabile della fornitura di un servizio e di renderlo disponibile alle parti interessate. Cloud Auditor Un soggetto o un gruppo, in grado di condurre una valutazione sui servizi cloud offerti, sulle prestazioni e sul livello di sicurezza implementati. Cloud Broker Entità che gestisce l'uso, le prestazioni e la distribuzione dei servizi cloud, negoziando le relazioni tra il Cloud Providers ed i Cloud Consumers. Cloud Carrier Un intermediaro che fornisce connettività e trasporto dei servizi cloud dal fornitore del servizio verso gli utilizzatori Tabella 1: Attori e relativa descrizione delle entità coinvolte in un'infrastruttura di cloud computing Il Cloud Provider rende disponoibili i seguenti servizi (vedi figura 2): Il “service orchestration”: Tale servizio è organizzato in livelli raggruppa e coordina i tre seguenti componenti: Al livello superiore troviamo il service layer che definisce le interfacce attraverso le quali il Cloud Provider permettere l'accesso ai servizi da parte dei Cloud Consumers. Il livello intermedio (il middleware) è detto resource abstraction and control layer. Tale livello contiene i componenti che il Cloud Providers utilizza per fornire e gestire gli accessi alle risorse di computing fisiche mediante astrazioni software implementate grazie a componenti quali hypervisors, virtual machines, virtual data storage etc. Francesco Iannone Z62/000014 Pagina 18 di 53 Ad un livello più basso della pila troviamo il livello physical resource, il quale include tutte le risorse fisiche quali ad esempio CPU, memoria RAM, dispositivi di rete (router, firewall, switch..), componenti di storage (hard disks), etc. Il “Cloud Service Management” che include tutti quei meccanismi che sono necessari alla definizione e gestione delle politiche di qualità e tariffazione sui servizi offerti ai Cloud Consumers. “Security Services”: l'insieme dei servizi gestori dei processi di autenticazione, autorizzazione e di verifica dell'integrità delle identità dei principali attori coinvolti nell'infrastruttura Cloud Provider, Cloud Consumers, etc. “Privacy Services”: L'insieme dei servizi che consentono ai Cloud providers di proteggere in modo sicuro, corretto e coerente tutte le informazioni scambiate e/o disponibili sull'infrastruttura. 2.4 La Tecnologia Cloud di riferimento: la piattaforma OpenStack Come tecnologia Cloud di riferimento considereremo quella realizzata dal progetto Openstack [5]. Il progetto OpenStack è un cloud system manager open source per tutte le tipologie di clouds,(private, pubbliche etc) che mira ad essere di semplice implementazione, altamente scalabile e ricco di funzionalità. OpenStack consente di implementare alcune delle funzionalità previste dal “service orchestration” e dal “Security Services” dell'architettura di riferimento del NIST. Francesco Iannone Z62/000014 Pagina 19 di 53 La piattaforma OpenStack, basata sulla possibilità di virtualizzare4 sistemi, fornisce una soluzione di tipo Infrastructure as a Service (IaaS) attraverso una serie di servizi fra loro integrati. Ogni servizio offre una serie di interfacce di programmazione (API), che ne facilita l'integrazione e l'interazione. Non esite un'architettura statica di OpenStack ma sono i servizi e le varie opzioni di storage e networking di cui si ha bisogno a delinearne la topologia. Possiamo però fornire un esempio di architettura base e descriverne alcuni servizi da essa offerti. Una sua semplice implementazione può essere realizzata attraverso la creazione di due nodi: • Un Controller Node sul quale vengono eseguiti i servizi di controllo, alcuni di questi descritti di seguito. • Un Compute Node sul quale risiedono le macchine virtuali gestite a loro volta da un hypervisor5. 4 Virtualizzare: astrarre le componenti hardware, cioè fisiche, degli elaboratori al fine di renderle disponibili al software in forma di risorsa virtuale. Tramite questo processo è quindi possibile installare sistemi operativi su hardware virtuale; l'insieme delle componenti hardware virtuali (RAM, CPU, HARD DISK..) prende il nome di macchina virtuale 5 Un hypervisor o Virtual Machine Monitor (VMM) è un componente software, firmware o hardware che crea e gestisce le macchine virtuali. Francesco Iannone Z62/000014 Pagina 20 di 53 Illustrazione 3: Esempio di un'architettura base di OpenStack I servizi principali forniti in un tale contesto sono (vedi figura 3): Keystone: l'identity service, fornisce meccanismi di autenticazione e di autorizzazione che definiscono e implementano le politiche di accesso e/o gestione degli utenti ai/dei servizi OpenStack. Glance: l'Image Service, fornisce servizi di discovery, registration e delivery delle immagini delle macchine virtuali. Tali immagini una volta rese disponibili su tale servizio possono essere usate dai nodi Compute per fornire le istanze di macchine virtuali. Nova: il servizio disponibile sul Controller Node (il cuore del sistema IaaS) che crea e distrugge, mediante API dell' hypervisor, le istanze di macchine virtuali. Francesco Iannone Z62/000014 Pagina 21 di 53 L'architettura è stata progettata per “scalare orizzontalmente”, aggiungendo nuovi Compute Node, su hardware standard, con la capacità di integrarsi con i sistemi legacy e le tecnologie di terze parti anche proprietarie. Inoltre consente di automatizzare la gestione di insiemi di risorse interagendo con diverse tecnologie di virtualizzazione (ad esempio KVM, etc. ). Neutron: fornisce il servizio NaaS (network connectivity as a service) permettendo di definire indirizzi e connessioni di rete in un sistema cloud. Ciò avviene mediante un' API fornita dal servizio stesso che consente inoltre di configurare e gestire una varietà di servizi di rete (es. L3 forwarding, NAT, load balancing..,) KVM, (Kernel-based Virtual Machine) è una tecnologia di virtualizzazione integrata nel kernel Linux. Usando KVM, si possono instanziare più macchine virtuali sullo stesso sitema ospite (hosting system)6, ciascuna con un proprio hardware (virtualizzato): scheda di rete, disco, scheda grafica, ecc. Tutto ciò in modo trasparente bilanciando e partizionando opportunamente l'utilizzo delle risorse fisiche del sistema ospite. L'hypervisor KVM può: • allocare le risorse, anche eterogenee, dinamicamente quando e dove necessario, effettuare un management delle risorse in modo più efficiente • facilitare collaudo e debugging di ambienti controllati • ridurre in modo significativo i tempi di risposta in merito all'istanzazione di nuovi sistemi 6 Un computer su cui un hypervisor esegue una o più macchine virtuali è definito come una macchina host (o sistema ospite). Ogni macchina virtuale viene detta macchina guest Francesco Iannone Z62/000014 Pagina 22 di 53 3 Il Progetto GaaS L’idea di sviluppare GaaS (Grid as a Service) [6] , nasce da esigenze pratiche: trovare una soluzione per rendere l’ambiente di calcolo distribuito, basato sul modello Grid, più elastico e più sostenibile, sfruttando le caratteristiche del modello Cloud senza al contempo perdere il modello di accesso Grid alle risorse che risulta familiare alle diverse comunità di utenti che già utilizzano la griglia computazionale. Il modello Grid, infatti, è tipicamente statico e gli utenti non possono: • definire nuovi siti Grid • aggiungere risorse a quelle esistenti • modificare lo schema di aggregazione delle risorse in base alle proprie necessità • modificare dinamicamente il numero di risorse sulla base del reale carico di lavoro (sprecando in tal modo energia e non realizzando un ambiente sostenibile ed efficiente). La piattaforma GaaS può essere definita come un’infrastruttura di calcolo Grid flessibile che fa uso di risorse Cloud locali o remote (fisiche o virtuali), allo scopo di adattare un ambiente Grid di produzione alle reali esigenze dell’utenza in nome di un utilizzo più efficiente e consapevole delle infrastrutture di calcolo stessa . Si delinea in tal modo un'infrastruttura che supera le limitazioni dei paradigmi Grid, fornendo un modello d’uso che risulta già familiare alle utenze della Grid, ed al contempo traendo vantaggi in termini di miglioramento della flessibilità dell’infrastruttura ed in termini di una più facile integrazione delle risorse. Dato che modello di accesso di GaaS è di tipo Grid, ma consente di modificare dinamicamente sulla base dei bisogni degli utenti, un'infrastruttura Grid preesistente Francesco Iannone Z62/000014 Pagina 23 di 53 in tutte le sue parti dai sistemi allo strato software su di essi disponibile, il modello può essere classificato come un sistema Grid-as-a-Service (GaaS). GaaS attualmente consta nei seguenti quattro servizi: 1. Aggiunta di nuove risorse di calcolo (Worker Node Service: GaaS WNS); 2. Aggregazione di risorse di calcolo esistenti in una nuova coda (Queue Service: GaaS QS); 3. Aggiunta di un nuovo sito Grid per una VO esistente (Grid Site Service: GaaS GSS); 4. Creazione di un ambiente di esecuzione adatto per un set di applicazioni su risorse di calcolo nuove o esistenti (Application Environment Service: GaaS AES). Il servizio GaaS_WNS gestisce l’integrazione di nuovi WNs su code di esecuzione già esitenti sui Computing Element. Il Sistema acquisisce le risorse cloud (pubbliche o private ), configura tali risorse come WN della grid, seleziona la coda dove il WN deve essere inserito e viene avviata una procedura che riconfigura il CE per rendere accessibile tali risorse con il ruolo di WN Tale servizio è utile in un tale scenario: ampliare on-demand l’insieme di nodi di calcolo, per realizzare datacenter efficienti in termini di utilizzo delle risorse accendendo o spegnendo risorse sulla base delle reali esigenze dell'utenza. Il servizio Queue Service: GaaS_QS gestisce l’aggiunta di una nuova coda. L'utente ha la possibilità di modificare lo schema logico di aggregazione delle risorse di calcolo, In questo caso il sistema richiede una riconfigurazione del CE, specificando il set dei WN sottostanti e le policies della coda. Francesco Iannone Z62/000014 Pagina 24 di 53 Un possibile caso d’uso per questo servizio è una community che necessita di una particolare policy su una parte dei nodi di calcolo, anche per tale servizio sarà possibile modificare on-demand tali policy (ad esempio possono essere aumentati i tempi d'accesso e di utilizzo delle risorse o possono essere modificate le priorità dello LRMS). Il servizio GaaS_GSS gestisce l’integrazione in un'infrastruttura Grid, di un nuovo sito (CE e WN, SiteBDII) usufruibile da una VO esistente. Il sistema acquisisce le risorse cloud (pubbliche o private), fa richiesta dei servizi GaaS_WNS e GaaS_QS, configura un Information System e seleziona l’infrastruttura grid dove il nuovo sito deve essere inserito. Un possibile caso d’uso per questo servizio è quello relativo ad una community che deve condividere risorse durante il ciclo di vita di un progetto. Un altro scenario ideale si riferisce alla necessità di costruire on the scratch (da zero), e per un breve periodo di tempo, un ambiente di test su misura. Il servizio GaaS_AES si occupa del servizio Application Enviroment Service (Ambiente applicativo). Il sistema fornisce sulle risorse allocate, mediante un’appropriata combinazione dei servizi GaaS_WNS, GaaS_QS e GaaS_GSS, tutto lo strato software configurato in accordo con le richieste della comunità di utenti e costruito sulla base di un portfolio software messo a disposizione. Un possibile caso d’uso per tale servizio può riferisi ad una comunità che desidera aggiungere ai benefici apportati dai servizi precedentemente elencati anche la possibilità di un proprio “middleware applicativo”. La piattaforma GaaS è basata sul middleware grid EMI e sul sistema di gestione Cloud OpenStack, entrambi descritti nei paragrafi precedenti. Tutti iservizi GaaS sono stati sviluppati ed integrati nel contesto del Datacenter S.Co.P.E. Francesco Iannone Z62/000014 Pagina 25 di 53 dell’università Federico II di Napoli. Il datacenter S.Co.P.E. consta di 2000 cores computazionali. Le risorse computazionali sono inserite in un contesti grid sia locale che non locale (grid nazionali - IGI - ed internazionali – EGI). Un sottoinsieme dei worker node di S.Co.P.E sono assegnati all'insieme di risorse gestite da OpenStack. 4 Grid Site Service: GaaS_GSS Il servizio GaaS_GSS come già accennato nel paragrafo precedente permette l'aggiunta di un nuovo sito grid da parte di un utente che ne faccia richiesta e che abbia le credenzialità necessarie. Tale servizio on demand, acquisisce le risorse Cloud, istanzia i servizi GaaS_WNS e GaaS_QS, configura e mette in relazione gli elementi della grid quali il Computing Element (coi i relativi Worker Nodes) ed il Site Bdii (l'elemento dell'Information Sistem a livello di sito). Un sito grid deve offrire la possibilità di fornire, tra le altre, anche le risorse di storage. A tal fine, durante tale lavoro di tesi, si è provveduto a progettare ed implementare le funzionalità del servizio GaaS_GSS che lo rendessero in grado di creare ed aggiornare l'insieme di risorse di storage nella disponibilità del sito, sia in fase di creazione del sito stesso, sia in un secondo momento aggiungendo cioè il servizio di storage ad un sito preesistente. Francesco Iannone Z62/000014 Pagina 26 di 53 Illustrazione 4: modello concettuale del servizio GaaS_GSS La figura 4 rappresenta come il servizio GaaS_GSS permetta l'inserimento in una infrastruttura di griglia computazionale esistente, di un sito grid completo costituito da risorse cloud senza che tale infrastruttura debba essere a conoscenza a priori né del numero né del tipo di risorse che vengono richieste on demand dalle utenze grid. Inoltre un sito configurato dalla piattaforma GaaS ben si integra nel contesto più globale della Grid, più precisamente esso viene visto dagli altri elementi che effettuano richieste, discovery e retreiving delle risorse (UI, WMS ...), come un normale sito appartenente alla griglia e messo a disposizione della comunità. Francesco Iannone Z62/000014 Pagina 27 di 53 4.1 Il GaaS Cloud Management Controller: l'architettura generale L'approccio utilizzato nella realizzazione della piattaforma GaaS segue il paradigma dell'architettura modulare. Il GaaS Cloud Management Controller (GaaS-CMC) ha l'obiettivo di integrare, in una struttura modulare, tutti i meccanismi necessari al sistema di controllo del servizio GaaS_GSS di GaaS. GaaS-CMC si compone di moduli che raggruppano una o uno specifico insieme di funzionalità per la fornitura di uno o più servizi. L'infrastruttura, realizzata in tal modo, risulta altamente scalabile, flessibile e di facile manutenzione in quanto garantisce una certa indipendenza dell'intera piattaforma dalle scelte implementative adottate. Francesco Iannone Z62/000014 Pagina 28 di 53 La figura 5 descrive l'architettura ad un livello più alto di astrazione. Essa racchiude tutti i moduli nell'unica componente logica:GaaS_CMC. Quest'ultima può essere suddivisa in due sezioni di cui la prima raccoglie i moduli per l'interfacciamento con l'esterno della componente CMC (GaaS_Interface) delegando l'altra (GaaS_Engine) alla gestione dei servizi GaaS. Di seguito sono descritte le caratteristiche delle sezioni: GaaS_Interface: • Interfacce Utenti: si occupano di far interagire la piattaforma GaaS con gli applicativi di front-end ultimi (web o mobile) accogliendo le richieste da parte delle utenze della comunità; • Interfacce Grid: si preoccupano di far interagire la piattaforma GaaS con le Griglie computazionali; • Interfacce Cloud: si preoccupano di far interagire la piattaforma GaaS con i CMS (Cloud Management System). GaaS_Engine: • Moduli GaaS: insieme delle procedure che implementano “l'intelligenza” del Controller GaaS; • Gestore Risorse: strumenti per la memorizzazione e gestione dei dati relativi allo stato dell'infrastruttura gestita da GaaS.. La struttura modulare dell'architettura permette di considerare i vari moduli come delle black-box in quanto si considerano, in tale contesto, i servizi che sono offerti prescindendo dalla loro implementazione. Infatti nulla vieta di sostituire un'implementazione di un modulo con un'altra purché esso offra lo stesso servizio con le stesse interfacce di input ed output. Ad esempio, per la gestione dati, può essere utilizzato in un primo momento un DBMS Mysql e decidere poi di passare ad un ulteriore DBMS come Oracle, Pgsql, etc. Francesco Iannone Z62/000014 Pagina 29 di 53 Inoltre, un altro significativo esempio è quello che prevede la possibilità di interfacciare GaaS con altri e diversi CMS semplicemente aggiungendo o sostituendo il modulo di interfacce Cloud. 4.2 Architettura di Riferimento Vengono descritte, ora, le scelte implementative adottate per i moduli elencati in precedenza. La scelta di utilizzare interfacce standard ha naturalmente indirizzato verso tecnologie open e ampiamente diffuse per l'implementazione dei servizi di GaaS. Francesco Iannone Z62/000014 Pagina 30 di 53 La figura 6 particolarizza la figura 5 associando i suoi moduli con le relative scelte implementative, che sono riassunte nella tabella che segue. Moduli Scelta Implemetativa Interfaccia Utenti Tomcat Interfaccia Cloud Client OpenStack Interfaccia Grid Strumenti EMI Gestore delle Risorse DBMS MySql Moduli GaaS Procedure implementate usando linguaggi quali il python e il bash scripting 4.3 Il GaaS CMC inserito in una architettura multilivello Il componente GaaS_CMC si inserisce nell'architettura del sistema GaaS realizzando un modello strutturato secondo un' architettura client-server multilivello: Ad un livello più basso ritroviamo la piattaforma Openstack la quale si compone a sua volta di: • Un Controller Node sul quale sono installati i moduli atti a fornire i servizi di autenticazione, gestione della rete, dell'avvio delle istanze etc. Descritti nel paragrafo 2.4. • Due Compute Nodes, i quali ospitano le macchine virtuali ed il relativo hypervisor (kvm) che si occupa della gestione di quest'ultime. Ad un livello superiore ritroviamo il GaaS_CMC che ha lo scopo di fornire: Francesco Iannone Z62/000014 Pagina 31 di 53 • Servizi di monitoraggio e gestione delle risorse: tali servizi sono implementati mediante i moduli di GaaS contenuti nel Gaas_Engine, che affiancano quelli già previsti dalla piattaforma cloud utilizzata, ma necessari ad ottimizzare il processo di schedulazione delle richieste, concorrenti ed eterogenee, effettuate dagli utilizzatori dei servizi di GaaS. • Un DBMS7 MySql, per poter gestire una base di dati relazionale, chiamata gaasDB volta ad immagazzinare i dati relativi a: ◦ stato delle risorse: disponibili, occupate, in fase di instanziazione, etc ◦ stato delle richieste: in attesa di essere servite, processate ... ◦ le utenze: il ruolo assunto nel contesto della piattaforma GaaS (utente o amministratore), i siti ai quali afferiscono ... Diversi sono i moduli che si relazionano alla base dati gaasDB, il quale sarà più approfonditamente descritto nel prossimo paragrafo: ◦ I moduli GaaS attraverso API MySQLdb8 , per per la gestione e/o il monitaraggio delle risorse ◦ La java Servlet mediante API JDBC9, per sottomettere le richieste di creazione, modifica ed eliminazione di elementi di un sito o di una particolare utenza. 7 DBMS: “DataBase Management System”, si tratta di un particolare software che permette di creare e gestire un database e consente l''accesso e la manipolazione dei dati in modo semplice, concorrente, e discriminato (in base ai ruoli concessi ad un entità, persona fisica o sistema). 8 MysQLdb:modulo python che fornisce l'interfacciamento verso il DBMS MySql 9 JDBC: è un connettore per database che consente l'accesso alle basi di dati da qualsiasi programma scritto con il linguaggio di programmazione Java Francesco Iannone Z62/000014 Pagina 32 di 53 • Sicurezza: l'aggiunta di tale ulteriore livello architetturale limita l'esposizione dell'infrastruttura Cloud ad attacchi dall'esterno. • Funzionalità di interfacciamento: ◦ Verso la piattaforma OpenStack: A tale scopo sono installati i pacchetti: python-keystoneclient che abilita i comandi per l'interazione con l'Identity-service di OpenStack; python-novaclient che abilita i comandi per l'interazione con i servizi di calcolo e di management di OpenStack; python-neutronclient che abilita i comandi per l'interazione con il gestore della rete di OpenStack. ◦ Verso le applicazioni di front-end, web o mobile: è presente un server Tomcat che ospita una Servlet Java che assolve tale compito. Il GaaS_CMC quindi, da un lato sfrutta i servizi e le funzionalità della piattaforma openstack di più basso livello, dall'altro serve le richieste delle applicazioni che arrivano dall'esterno. Dunque può essere visto sia come un client (nel primo caso) sia come un server (nel secondo). Francesco Iannone Z62/000014 Pagina 33 di 53 4.4 Il database:gaasDB L'aggiunta di tale elemento strutturale come già descritto nel paragrafo precedente, è motivato • dalla necessità di tenere traccia delle informazioni sulle esecuzioni delle operazioni che avvengono sul sistema e conservare le informazioni sullo stato della piattaforma • dall'eterogeneità degli attori coinvolti nel sistema. Ciò è reso possibile grazie alla presenza del DBMS MySql che consente l''accesso e la gestione dei dati in modo semplice, concorrente, e sulla base di specifiche politiche di accesso. In figura 7 viene riportato il modello ER (Entità-Relazione) del database gaasDB. Si procederà alla descrizione di alcune delle entità coinvolte, raggruppandole in base ai moduli e i servizi che ne fanno uso. I moduli Gaas, per fornire servizi di gestione e di monitoraggio delle risorse in un ambiente multiutente e concorrente, accedono ed utilizzano i dati contenuti nelle seguenti tabelle: ESECUZIONI: contiene le informazioni relative al flusso di richieste dellerisorse. In particolareraccoglie: • l'identificativo dell'utente che ha effettuato la richiesta • il momento in cui tale richiesta è stata fatta • lo stato in cui versa la richiesta • il tipo della richiesta Usufruendo di tale tabella è possibile dunque gestire le richieste da parte degli utenti che si ricorda avvengono in modo concorrente. Francesco Iannone Z62/000014 Pagina 34 di 53 IP: le informazioni relative alla rete di connessione (indirizzi IP, hostname, etc.)assegnabili in fase di instanziazione degli elementi previsti dai servizi di GaaS Dal momento che un indirizzo di rete potrà essere utilizzato soltanto se non è stato già impiegato per l'implementazione di un altro elemento di un sito, ogni tupla di tale tabella conterrà un campo che descrive tale stato FLAVOR: le tuple di tale tabella indicano le caratteristiche in termini di CPU, RAM, numero di dischi...) che possono caratterizzare i vari elementi del sito grid richiesti on demand dalle utenze GaaS. RISORSE: tabella atta a contenere le risorse HW (i nodi compute) di macchine virtuali che implementano gli elementi previsti dai servizi di GaaS . Le restanti tabelle sono fortemente correlate tra di loro, (presentano molteplici vincoli di integrità) e forniscono tutto ciò che riguarda le risorse che sono state istanziate. Ritroviamo pertanto: SITI: contiene tutte le informazioni riguardanti i siti istanziati (ID,NOME, INFO, STATO), gli identificativi degli utenti che hanno fatto richiesta di instanziazione (USER) e gli elementi che caratterizzano ciascun sito (numero di WN massimo ed utilizzati, CE). ELEMENTI: detiene i dati strutturati in merito agli elementi dei siti grid, ciascuna tupla permette di ricavare informazioni in merito al tipo di elemento (CE, SE...), al Francesco Iannone Z62/000014 Pagina 35 di 53 sito e all'utente al quale afferisce e così via. USERS:contiene i dati dei diversi utenti della community grid che fanno uso delle risorse fornite tramite la piattaforma GaaS, SE: tabella atta a contenere i dati in merito alle istanze che forniscono i servizi di storage element. Le informazioni che si è scelto di immagazzinare riguardano essenzialmente:lo spazio occupato, disponibile e totale. Nel prossimo capitolo verrà introdotto un caso d'uso che descrive un possibile scenario collocando le operazioni svolte, ottenute mediante la fornitura dei servizi, sull'infrastruttura GaaS. Francesco Iannone Z62/000014 Pagina 36 di 53 Illustrazione 7: Schema Entità-Relazione che modella il database gaasDB Francesco Iannone Z62/000014 Pagina 37 di 53 4.5 Un caso d'uso: richiesta e creazione di un elemento grid Dopo aver fatto una panoramica sui servizi offerti dalla piattaforma GaaS, descritto l'architettura di coordinamento di tali servizi ed introdotto le possibili entità coinvolte, ci proponiamo di descrivere il flusso delle operazioni che si attivano allarichiesta, da parte di un utente di un elemento per un sitogrid attraverso un diagramma dei casi d'uso (vedi figura 8 ). Tale flusso è utile anche per meglio illustrare le modalità con le quali il GaaS_CMC provvede a coordinare tutte le sue componenti in risposta alla richiesta utente. Illustrazione 8: caso d'uso per la funzionalità di “creazione di un elemento grid” Al componente GaaS_CMC vengono sottoposte le richieste per la creazione di uno o più elementi della Grid. Tali richieste possono essere sottomesse, tramite apposite interfacce (Portali WEB, App per dispositivi mobile, etc.), da utenti abilitati Francesco Iannone Z62/000014 Pagina 38 di 53 all'utilizzo dei servizi di GaaS. La richiesta di creazione di un elemento Grid, viene gestita dal componente GaaS_CMC, che sfruttando i servizi presenti su quest'ultimo (keystone client e tabella USERS del gaasDB), identifica e autorizza la richiesta. Lo step successivo sarà servire tale richiesta, ciò viene fatto solo a seguito di una verifica di disponibilità delle risorse rispetto a quelle richieste. In caso di esito positivo, il GaaS_CMC provvede a definire l'apposito file di contestualizzazione10 utilizzato nella creazione dell'elemento richiesto sui compute nodes sfruttando i servizi del Cloud Manager. Una volta che l'istanza è stata avviata sul nodo compute questa avvia la procedura di configurazione dell'ambiente necessario al suo inserimento nel contesto Grid di riferimento. 5 Creazione di un Elemento per lo Storage (SE) La finalità dei paragrafi che seguiranno è quella di descrivere il flusso di esecuzione delle procedure richiamate per l'instanziazione e il suo inserimento in un sito Grid di un elemento di storage o Storage Element (SE). Si è scelto di descrivere il servizio di storage, ma le modalità e gli approcci utilizzati sono del tutto generali e sono utilizzabili per l'instanziazione di elementi di altro tipo (Computing Element, Site BDII, etc.). Si utilizzeranno diagrammi di flusso o flow chart nella cui descrizione si farà riferimento a tutte le procedure realizzate che si occupano dell'implementazione di servizi e delle funzionalità descritte nei paragrafi precedenti. 10 Con i termini di “file di contestualizzazione” si intende l'insieme dei parametri che definiscono la configurazione del ruolo da instanziare Francesco Iannone Z62/000014 Pagina 39 di 53 5.1 Verifica della disponibilità delle risorse Il diagramma di flusso rappresentato in figura 9 descrive una prima parte delle funzionalità assolte dalla procedura add-se eseguita per rispondere alla richiesta utente dell'aggiunta di Storage Element ad un sito Grid esistente. I parametri di input della procedura add-se sono: • User: è l'utente che effettua la richiesta di aggiunta SE. • Sito: l'id del sito di riferimente al quale lo storage element deve essere aggiunto. • Flavor: le caratteristiche in termine di dischi, memoria ram, numero di cpu che l'immagine virtuale, customizzata nel ruolo di storage element, dovrà avere. Una volta definita l'appartenenza, l'ubicazione (ovviamente logica) ed il profilo Hardware dell'SE, viene messa in coda una richiesta di controllo risorse. Ciò si traduce a più basso livello nell'inserimento nella tabella esecuzione del database gaasDB, della richiesta di controllo delle risorse. Per differenziare le diverse entry nella suddetta tabella e per una corretta schedulazione, vengono forniti in input oltre all'utente ed all'id del sito, anche la data in cui tale richiesta avviene. La procedura che si occupa di fare ciò è db_insert_into_esecuzione che una volta ricevuti i parametri di ingresso ed agito sul db, restituisce il valore del parametro di output esecuzione che coincide con l'identificativo dell'esecuzione stessa, di profonda utilità poiché adoperato nelle fasi successive. Il passo seguente infatti utilizza tale parametro per verificare che la coda di controllo sia vuota, o meglio che il sistema sia pronto a servire il controllo delle risorse sui nodi compute dell'architettura. In caso affermativo avviene poi l'effettivo check delle risorse. Francesco Iannone Z62/000014 Pagina 40 di 53 Il controllo sulla disponibilità delle risorse avviene mediante la procedura controllo_risorse-se la quale accetta in input il flavor desiderato relativo all'SE richiesto dall'utente. Nel caso in cui le risorse richieste non risultino disponibili, si richiama un'ulteriore procedura che aggiorna la tabella esecuzione inserendo un messaggio di errore (di tipo ERROR1) che rappresenta tale indisponibilità che sarà resa nota all'utente che ha fatto richiesta. In caso di disponibilità invece, vengono avviate una serie di azioni descritte nel diagramma di flusso in figura 10. Francesco Iannone Z62/000014 Pagina 41 di 53 Illustrazione 9: Diagramma di flusso che verifica la disponibilità delle risorse Francesco Iannone Z62/000014 Pagina 42 di 53 5.2 Schedulazione delle risorse Stabilita la disponibilità delle risorse, mediante la procedura db_update_esecuzione, viene effettuata una sottomissione alla coda esecuzioni, viene aggiornata la tabella esecuzioni con il valore WAIT per indicare all'utente che l'assegnazione delle risorse è in attesa di essere servita. La fase successiva effettua un controllo sulla disponibilità di IP da assegnare all'elemento grid richiesto. Tale controllo avviene con una procedura del tutto analoga a quella vista precedentemente (vedi paragrafo 5.1) con la differenza che adesso si va ad interrogare la tabella IP del database gaasDB e che, in caso di indisponibilità, il messaggio visualizzato sarà di tipo ERROR2. A questo punto si è pronti ad assegnare risorse sia fisiche che logiche, si procede allora con una fase di retrieving delle informazioni in merito all'SE e agli elementi ad esso correlati, ciò avviene grazie a query effettuate sul database attraverso la procedura db_select_sb. Concorrentemente viene aggiornata la tabella esecuzioni aggiornando il campo stato con il valore EXECUTING. Infine si procede con la creazione dello storage element, sfruttando i parametri ricavati nella fase precedente che vengono passati alla procedura create_se. Francesco Iannone Z62/000014 Pagina 43 di 53 Illustrazione 10: Diagramma di flusso della procedura che schedula la richiesta di risorse Viene inoltre aggiornato lo stato di esecuzione che da EXECUTING diventa Francesco Iannone Z62/000014 Pagina 44 di 53 DONE, indicando che il compito di aggiunta dello storage element è stato assolto. 5.3 Definizione e propagazione dei file di contestualizzazione La procedura create_se è utilizzata per inserire in modo opportuno un SE in un sito già esistente, con propri CE, WNs e SiteBDII. Nello specifico i parametri di ingresso vengono utilizzati per ricavarne altri (ad esempio dall'IP dello storage element ne si ricava l'hostname) che vengono impiegati per la definizione dei file di contestualizzazione, sulla base del template, in merito alla creazione dell'SE (mediante la procedura crea_scope_se) ed alla configurazione permanente delle reti (mediante le procedure hosts e scrivi_icfg). I files creati vengono poi archiviati, per essere “iniettati” nell'istanza della VM che si andrà a creare mediante la procedura SE.sh descritta nel prossimo paragrafo. Le informazioni relative all'SE e agli elementi ad esso correlati, ricavate nelle fasi precedenti, vengono poi immagazzinate nel database gaasDB. Tale procedura viene richiamata, con i dovuti parametri di ingresso, anche all'atto della creazione di un nuovo sito Grid, ad esempio in uno scenario in cui un gruppo di ricerca è già a conoscenza che per la realizzazione ed il successo di un proprio progetto, necessita oltre alle risorse di calcolo anche di servizi di storage. Francesco Iannone Z62/000014 Pagina 45 di 53 Illustrazione 11: Diagramma di flusso che sintetizza la fase di definizione dei file di contestualizzazione Francesco Iannone Z62/000014 Pagina 46 di 53 Illustrazione 12: Attività eseguite all'avvio dell'istanza della VM sulla quale èinstanziato il ruolo Francesco Iannone Z62/000014 Pagina 47 di 53 Tale script dunque, eseguito avvia alla partenza della VM la procedura Mio.sh (vedi paragrafo successivo) che: abilita lo Storage Element all'inoltro dei pacchetti, scompatta gli archivi iniettati in fase di creazione della VM, configura i file relativi ai servizi del middleware EMI ovvero site-info.def, emi_dpm_mysq e emibdii_site, aggiungendo e/o sostituendo variabili d'ambiente relative all'SE necessarie alla corretta configurazione di yaim. I files una volta contestualizzati, vengono copiati sugli altri elementi appartenenti al sito grid di riferimento ovvero il CE ed il Site BDII; la copia è resa necessaria affinchè nei loro files di configurazione risulti la presenza dello Storage Element, che si ricorda, può essere aggiunto in un secondo momento. La procedura prosegue l'esecuzione: 1. consolidando la configurazione dei parametri di rete. 2. configurando il firewall per consentire l'opportuno accesso ai servizi del middleware, come i protocolli SRM nelle sue diverse versioni, RFIO, GRIDFTP. 3. eseguendo quanto necessario a completare le fasi di configurazione del middleware mediante gli opportuni strumenti (comando yaim). Francesco Iannone Z62/000014 Pagina 48 di 53 5.4 Creazione istanza La creazione dell'istanza avviene mediante la procedura SE.sh che, interagendo con gli strumenti messi a disposizione dal Cloud Manager OpenStack,si occupa: • della creazione delle interfacce di rete virtuali mediante il comando neutron port-create • della crezione dello script da eseguire all'avvio della VM: Mio.sh (Main installer object) • del lancio della VM mediante il comando nova boot, i cui parametri specificano cosa fornire alla VM ovvero: chiave e certificato, la lista delle risorse hardware ed i files locati sul nodo client da iniettare. 5.5 Funzionalità a contorno 5.5.1 Update SE Tale procedura, eseguibile sul client node, riceve come parametro di ingresso l'hostname dello Storage Element, sfruttando tale parametro viene effettuato il collegamento tramite ssh allo stesso SE residente sul relativo nodo compute. Il collegamento avviene in maniera del tutto automatizzata mediante sshpass, che come già descritto nell'architettura del sistema GaaS, dovrà essere installato sul nodo client. Francesco Iannone Z62/000014 Pagina 49 di 53 A collegamento avvenuto vengono ricavate le informazioni sullo spazio diponibile, usato e totale. I dati così ottenuti vengonoutilizzati dalla procedura update_space per aggiornarela tabella SE in merito ai campi che si riferiscono allo stato dello spazio disponibile sullo storage element. Illustrazione 13: Diagramma di flusso in merito all'aggiornamento dello spazio disponibile sullo storage element Francesco Iannone Z62/000014 Pagina 50 di 53 5.5.2 Delete SE Tale procedura, eseguibile dal client node, riceve come parametro di ingresso l'hostname dello Storage Element, che viene utilizzato dai comandi nova per identificare e cancellare l'istanza stessa mediante il comando nova delete. La procedura richiama a sua volta la procedura db_delete_se che effettua l'eliminazione dei dati relativi allo SE nelle opportune tabelle del database gaasDB. La procedura provvede inoltre a notificare agli altri ruoli del sito che ospita lo SE da eliminare (CE e site BDII) l'avvenuta eliminazione e a richiedere loro la necessaria riconfigurazione Illustrazione 14: Flusso delle attività svolte in fase di eliminazione dello storage element Francesco Iannone Z62/000014 Pagina 51 di 53 Conclusioni e sviluppi futuri L'obiettivo di tale lavoro di tesi è stato quello di progettare ed implementare quanto necessario all'instanziazione di uno dei servizi previsti dalla piattaforma GaaS che si propone quale approccio possibile all'integrazione dei paradigmi di Grid e Cloud Computing. La prima parte della tesi ha descritto la piattaforma GaaS, dopo aver introdotto alcuni necessari ed utili concetti relativi ai paradigmi del Grid e del Cloud Computing. Di GaaS è stata offerta una panoramica delle motivazioni che hanno portato a realizzarla nonchè delle funzionalità che implementa ed dei servizi che offre. Nella seconda parte della tesi si è focalizzata l'attenzione sullo specifico obiettivo di tale lavoro: la progettazione e l'implementazione del GaaS Cloud Management Controller (GaaS-CMC) che ha l'obiettivo di integrare, in una struttura modulare, tutti i meccanismi necessari al sistema di controllo del servizio GaaS_GSS, con particolare riguardo a quanto necessario all'instanziazione di ruoli GRID per la memorizzazione e l'accesso dei dati. L'implementazione effettuata, che ha consentito la realizzazione di un prototipo di GaaS attualmente disponibile sulle risorse del Datacenter SCoPE, consente di instanziare elementi grid per lo storage di tipo DPM sia in siti grid esistenti che in nuovi siti da instanziarsi on demand. Parte dell'attività futura potrebbe essere dedicata sia al miglioramento del provisioning di ruoli DPM (vedi ad esempio ruoli DPM multidisco e distribuiti) sia al provisioning di ruoli per lo storage di altro tipo quali ad esempio dCache e Storm. Francesco Iannone Z62/000014 Pagina 52 di 53 Bibliografia 1: Ian Foster e Carl Kesselman, The Grid: Blueprint for a New Computing Infrastructure, 1998 2: EMI - European Middleware Initiative, http://www.eu-emi.eu/documentation 3: Peter Mell, Timothy Grance, The NIST Definition of CloudComputing, 4: F. Liu, J. Tong, J. Mao, R. Bohn, J. Messina, L. Badger and D. Leaf, NIST Cloud Computing Reference Architecture, 2011 5: OpenStack Foundation, OpenStack Cloud Software, 2013 6: V. Boccia, G.B. Barone, R.Bifulco, D. Bottalico, L. Carracciuolo, R. Canonico, GaaS: Customized Grids in the Clouds, Lecture Notes in Computer Science, Proceedings of EuroPar 2012: Parallel Processing Workshops, 7640 , 577-586, 2013, http://dx.doi.org/10.1007/978-3-642-36949-0_67 Francesco Iannone Z62/000014 Pagina 53 di 53