Analisi delle prestazioni di una piattaforma Open Source per Cloud Computing - Dessert

Pagina creata da Giacomo Marchese
 
CONTINUA A LEGGERE
Analisi delle prestazioni di una piattaforma Open Source per Cloud Computing - Dessert
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica

tesi di laurea specialistica

Analisi delle prestazioni di una
piattaforma Open Source per Cloud
Computing

Anno Accademico 2011-2012

Relatore:
Ch.mo Prof. Domenico Cotroneo

Correlatori:
Ch.mo Ing. Flavio Frattini
Ch.mo Ing. Vittorio Manetti

Candidato:
Danilo Maccariello
matr. 885/498
Analisi delle prestazioni di una piattaforma Open Source per Cloud Computing - Dessert
Analisi delle prestazioni di una piattaforma Open Source per Cloud Computing - Dessert
Indice

Introduzione                                                                   5

Capitolo 1. Cloud Computing                                                    8

   1.1         Cos’è il Cloud Computing                                        8
   1.2         Livelli del Cloud Computing                                     9
   1.2.1       Modelli di Servizio Cloud Computing                            11
   1.2.2       Software as a Service                                          11
   1.2.3       Platform as a Service                                          12
   1.2.4       Infrastructure as a Service                                    13
   1.3         Modelli di Deployment: Public, Private e Hybrid Clouds         14

Capitolo 2. CloudStack                                                        17

   2.1         Caratteristiche Generali                                       17
   2.2         Architettura di CloudStack                                     18
   2.3         Network Overview                                               19
   2.3.1       Basic Network                                                  20
   2.3.2       Advanced Network                                               21
   2.4         System VM                                                      23
   2.5         Hypervisor Kernel-Based Virtual Machine (KVM)                  24
   2.6         CloudStack API                                                 26
   2.6.1       Come usare le API CloudStack                                   26
   2.7         Installazione CloudStack                                       28

Capitolo 3. Design of Experiment                                              31

   3.1         Identificazione e formulazione del problema                    31
   3.2         Testbed                                                        32
   3.3         Scelta dei fattori e dei livelli                               33
   3.4         Scelta del Piano Sperimentale                                  34
   3.5         Esecuzione sperimentale                                        36
   3.6         Regressione lineare                                            38
   3.7         Allocazione della variazione                                   39
   3.8         ANOVA                                                          41
   3.9         Analisi dei risultati                                          43

                                                                        III
Analisi delle prestazioni di una piattaforma Open Source per Cloud Computing - Dessert
Conclusioni e sviluppi futuri                                        47

Appendice A. Dettagli installazione CloudStack                       49

    A.1        Requisiti di sistema                                  49
    A.2        Preparazione sistema operativo                        50
    A.3        Installazione Management Server                       51
    A.4        Installazione e configurazione del DataBase           52
    A.5        Preparazione NFS Shares                               54
    A.6        Installazione CloudStack Agent su un KVM Host         57
    A.7        Provisioning Infrastructure                           58

Appendice B. Derivazione partizione Sum of Square Total (SST)        62

Bibliografia                                                         64

                                                                IV
Analisi delle prestazioni di una piattaforma Open Source per Cloud Computing - Dessert
Introduzione

     Nonostante la diffusione che ha avuto il Cloud Computing negli ultimi anni, darne una
     definizione univoca è ancora difficile.
     Fonti autorevoli considerano il termine privo di significato e sono stati fortemente contrari
     al suo utilizzo [2]. Tuttavia, la mancanza di un preciso significato dell’espressione “Cloud
     Computing” è significativa e ne costituisce un punto di forza, consentendo di includere in
     essa sia gli aspetti tecnico-implementativi che di utilizzo.
     Il Cloud Computing ha il potenziale per trasformare una grande parte del settore IT.
     Infatti, si eliminano tutti i problemi delle aziende tradizionali le cui applicazioni sono da
     sempre molto complicate e costose ed è necessario un intero team di esperti per installarle,
     configurarle, testarle, eseguirle, proteggerle e aggiornarle. Con il Cloud Computing non si
     richiede al cliente di gestire hardware e software, ma ad occuparsene è un fornitore
     esperto. L'infrastruttura condivisa offre un funzionamento simile a quello dei servizi
     pubblici: l'utente paga solo le funzionalità necessarie, gli aggiornamenti sono automatici e
     la scalabilità verso l'alto o verso il basso è semplice.
     Il calcolo scientifico richiede un numero sempre crescente di risorse per ottenere risultati
     in un arco di tempo ragionevole. Negli ultimi dieci anni solo i più grandi progetti di
     ricerca sono stati in grado di permettersi costosi supercomputer mentre altri progetti sono
     stati costretti a optare per più economiche risorse. A tale scopo il Cloud Computing
     propone un'alternativa in cui le risorse non sono più ospitate dalle strutture di calcolo del
     ricercatore, ma in leasing da grandi centri dati solo quando necessario.
     Il Cloud Computing si basa sui risultati di vari settori di ricerca, come la Service-Oriented-
     Architecture (SOA), Grid Computing e la tecnologia di virtualizzazione. La
     virtualizzazione delle risorse è al centro della maggior parte delle architetture Cloud e

                                                                                                  5
Analisi delle prestazioni di una piattaforma Open Source per Cloud Computing - Dessert
consente un’astrazione delle risorse fisiche, costituite da server, Data Stores e network.
Ad esempio è possibile generare dinamicamente una determinata piattaforma per una
specifica applicazione solo quando è necessario.
Le applicazioni basate sul Cloud sono operative in pochi giorni e sono accessibili da un
qualsiasi browser. Ecco perché Big Vendors e Users sono sempre più interessati alla
tecnologia del Cloud Computing e, quindi, diventa cruciale la valutazione delle prestazioni
e l’identificazione dei principali problemi di performance durante l’utilizzo di questa
tecnologia.
L’obiettivo di questo lavoro di tesi è la valutazione delle prestazioni di una piattaforma
open source per il Cloud Computing di tipo Infrastructure as a Service (si veda paragrafo
1.2.4). L’installazione della piattaforma è stata eseguita presso il SESM a Giugliano, un
centro di ricerca e sviluppo precompetitivo di aziende Finmeccanica SELEX Sistemi
Integrati e SELEX Galileo, attivo nel campo della difesa, gestione del traffico aereo e
logistica di grandi apparati. La sperimentazione è avvenuta sulla piattaforma Open Source
CloudStack utilizzata da un gran numero di Service Providers e da molte aziende dato che
offre servizi di Cloud Public, servizi di Cloud Privato e Ibrido. Le istanze di CloudStack
girano su una Infrastruttura fisica utilizzando il software Open Source di virtualizzazione
KVM (si veda paragrafo 2.5).
In questo elaborato focalizzeremo la valutazione delle prestazioni sui tempi necessari per
l’acquisizione delle risorse fisiche per ottenere il deploy di una Virtual Machine.
Effettueremo la rilevazione dei tempi          attraverso un software scritto in JAVA,
prepareremo attraverso un Piano Fattoriale Completo con Replicazione dei dati consistenti
sui quali eseguiremo un’analisi statistica che ci permetterà di determinare se un fattore ha
un effetto significativo o se la differenza osservata è semplicemente dovuta a variazioni
causali causate da errori di misura e parametri che non sono stati controllati.

                                                                                           6
Inserire il titolo della tesi di laurea come intestazione

                                                      7
Capitolo 1
Cloud Computing

       In questo capitolo viene introdotto il paradigma del Cloud Computing (paragrafo 1.1) e
       illustrate le classificazioni dei servizi di Cloud in base al servizio offerto (paragrafo 1.2) e
       dalla prospettiva amministrativa/organizzativa (paragrafo 1.3). La prima classificazione è
       orientata verso le caratteristiche funzionali, mentre la prospettiva organizzativa opera una
       distinzione in base al grado di separazione tra utenti e fornitori dei servizi.

1.1 Cos’è il Cloud Computing

       Anche se non c'è una definizione standard di Cloud Computing, i suoi concetti di base così
       come i suoi obiettivi generali sono indiscussi: il Cloud Computing utilizza la
       virtualizzazione e il Web moderno per fornire dinamicamente le risorse e servizi di vario
       genere. Questi servizi dovrebbero essere disponibili in modo affidabile e scalabile in modo
       che i consumatori possano utilizzarli esplicitamente su richiesta o semplicemente come e
       quando richiesto. Dal punto di vista del Provider Cloud, ciò implica di solito un multi-
       tenant e un uso basato su modello di fatturazione. Quindi, possiamo asserire che il Cloud
       Computing utilizza risorse virtualizzate di calcolo, di Storage e tecnologie web moderne,
       inoltre offre network-centric, infrastrutture IT, piattaforme e applicazioni come servizi on-
       demand. Questi servizi sono fatturati su base utilizzo e questa definizione non specifica se
       i servizi sono forniti da un sistema distribuito o un singolo server ad alte prestazioni, ad
       esempio un mainframe. Questo è in contrasto con il Grid Computing che utilizza sempre
       un sistema distribuito.
       Di solito, i servizi Cloud possono anche contare su una infrastruttura distribuita, ma la loro

                                                                                                      8
gestione è tipicamente determinata in una zona centrale (e di proprietà).
       Questa è un'altra differenza tra Cloud Computing e Grid Computing in cui i nodi sono di
       solito distribuiti e autonomi.
       Un altro fattore determinante per il Cloud Computing è il suo impatto economico. Grazie
       al suo stretto orientamento ai servizi e all'utilizzo di standard Web e Internet, il Cloud
       Computing è ben posizionato per vari tipi di applicazioni.
       Una definizione spesso citata del Cloud Computing è stata data dal National Institute of
       Standards and Technology (NIST) negli Stati Uniti. Si specificano cinque caratteristiche
       essenziali, tre modelli di servizio differenti, e quattro modelli di deployment diversi. Le
       caratteristiche essenziali sono:

           • On-demand self-service: i servizi possono essere forniti unilateralmente e su
              richiesta per i consumatori senza richiedere l'interazione umana.
           • Broad Network Access: i servizi sono disponibili in rete in tempo reale attraverso
              meccanismi standard.
           • Messa in comune delle risorse: le risorse sono messe in comune per consentire la
              messa a disposizione di servizi a più utenti (modello multi-tenant).
           • Elasticità: per il consumatore, le risorse sembrano essere illimitate.
           • Servizio di misura: i servizi sfruttano una capacità di misurazione quantitativa e
              qualitativa in modo che la fatturazione in base all'utilizzo e validazione della
              qualità del servizio sia possibile.

1.2 Livelli del Cloud Computing

       Nella descrizione di sistemi di calcolo locali (PS, workstation, server) si è soliti utilizzare
       una rappresentazione a tre livelli. Più in basso, c’è il livello hardware “fisico” con i suoi
       processori, chip di memoria, unità di disco, schede di rete ed altri components che
       prendono il nome di Infrastruttura. In secondo luogo, nello strato intermedio, si dispone di
       un sistema operativo (ad esempio Microsoft Windows) che interagisce con l'hardware e
       fornisce un ambiente coerente per il software in esecuzione e in via di sviluppo
       (utilizzando Visual Basic o Microsoft Access, per esempio), se lo si desidera possiamo
       chiamare questo strato piattaforma. E, infine, in alto, ci sono applicazioni di terze parti che
       è possibile utilizzare nel nostro lavoro e che possiamo chiamare software.

                                                                                                     9
Figura 1.1 – Un semplice modello di piramide a tre livelli.[2]

Questo modello a tre livelli può essere applicato anche al Cloud Computing, ma ci sono
alcune differenze fondamentali:
   •   Le applicazioni software non sono applicazioni desktop sono web-based in modo
       che possano essere utilizzate in qualsiasi browser web e su qualsiasi sistema
       operativo.
   •   Le piattaforme sono costruite appositamente su ambienti di sviluppo software che
       sono ospitati su Internet piuttosto che sul vostro computer desktop in modo che per
       creare, testare e distribuire applicazioni web tutto ciò che serve è un browser web.
   •   Elementi di infrastruttura (server, Storage, larghezza di banda, la potenza di
       elaborazione, ecc.) sono forniti da un terzo, ma è possibile accedere e utilizzare
       queste risorse di calcolo come se fossero installati sulla propria rete aziendale.

                                                                                            10
1.2.1 Modelli di Servizio Cloud Computing

       Diversi tipi di Cloud Computing vengono forniti “come un servizio” (dall’inglese as a
       Service) per i consumatori, e la maggior parte di essi rientrano in una o più delle tre
       categorie: Software as a Service, Platform as a Service e Infrastructure as a Service.
       Capacità di calcolo sono in affitto e le risorse hardware o software non sono acquistate a
       titolo definitivo da parte del consumatore.

1.2.2 Software as a Service

       Applicazioni software che rispondono direttamente all'utente finale appartengono al livello
       della SaaS. Questo modello consente di liberare i clienti dalla necessità di installare il
       software in locale e quindi di fornire le risorse necessarie agli stessi. Vista dal punto di
       vista dell'architettura Cloud, l'offerta SaaS può essere sviluppata e gestita dal fornitore
       sulla base di un PaaS o IaaS che offre.

        Organizzazione           Servizi Cloud             Descrizione

        Adobe                    Photoshop Express         Online image processing

        Google                   Google Docs               OnLine office application

        Google                   Google Maps API           Servizio per l’integrazione di mappe
                                                           e geo-information

        Google                   OpenSocial                Interfaccia di programmazione
                                                           generica per l'integrazione dei social
                                                           network nelle applicazioni

        OpenIDFoundation         OpenID                    Sistema distribuito per la gestione
                                                           dell’user identity

        Microsoft                Windows Live              Online office applications

        Salesforce               Salesforce.com            Extensible CRM system

                           Tabella 1.1 – Software as a Service : offerte e tools

                                                                                                    11
Tra le offerte SaaS, si possono distinguere i servizi applicativi, le cui funzionalità si
       basano principalmente su un unica, semplice applicazione, e vere e proprie, applicazioni
       complesse. Gli utenti finali possono accedere direttamente ad alcuni dei servizi applicativi,
       come ad esempio Google Maps.
       Altri servizi sono forniti come componenti, per esempio, OpenID per l’user management o
       OpenSocial per l’integrazione dei social network nelle applicazioni. Altre SaaS offerte e
       tools in Tabella 1.1.

1.2.3 Platform as a Service

       I servizi Cloud forniti sullo strato PaaS di solito non sono destinati ai semplici utenti, ma
       piuttosto agli sviluppatori. Si tratta di ambienti di programmazione e di ambienti di
       esecuzione in cui il software proprietario scritto in un linguaggio di programmazione
       specifico può essere eseguito.
       Esempi tipici di questi ambienti di programmazione sono Django Framework o Sun
       Caroline. Si estendono linguaggi di programmazione esistenti, ad esempio, con l'aggiunta
       di librerie e di classi. Ben noti esempi di ambienti di esecuzione cloud-based sono Google
       App Engine, Azure di Microsoft o Smart Joyent. Google App Engine supporta la
       creazione e l'esecuzione di applicazioni Web scritte in Python o Java.
       Un esempio di come i servizi provenienti da diversi strati architetturali interagiscono o
       sono costruiti uno sopra l'altro, è l’ambiente di programmazione AppScale, una re-
       implementazione open source di Google App Engine. AppScale implementa le
       funzionalità utilizzando il servizio di infrastruttura di Eucalypto.
       L'intercambiabilità delle parti della pila sopra descritta, che è dovuta alla re-
       implementazione in progetti open source, non solo favorisce alternative tecniche, ma
       potrebbe, in alcuni casi, impedire agli utenti di diventare troppo dipendenti da un
       particolare fornitore. Tabella 1.2 mostra e descrive ulteriori offerte e tools PaaS.

                                                                                                 12
Organizzazione              Servizi Cloud           Descrizione

        Google                      App Engine              Ambiente d’esecuzione scalabile
                                                            per le Web applications

        Microsoft                   Azure                   Ambiente per Programmare e
                                                            Eseguire applicazioni Windows

        Microsoft                   Windows SkyDrive        Piattaforma per la sincronizzazione
                                                            dei dati tra terminali eterogenei

        NetSuite                    SuiteFlex               Business Process Development
                                                            Tool di NetSuite

        Salesforce                  Force.com               Sviluppo e gestione di Salesforce
                                                            “CRM extensions”

        Sun                         Project Caroline        Sviluppo e gestione di applicazioni
                                                            Web Distribuite

        Zoho                        Zoho Creator            Sviluppo e gestione di applicazioni
                                                            Web Database-Based

        Facebook                    Facebook Platform       Ambiente per applicazioni di
                                                            Facebook Social Network

                           Tabella 1.2 – Platform as a Service : offerte e tools.

1.2.4 Infrastructure as a Service

       Lo strato IaaS offre agli utenti una visione astratta dell'hardware cioè computer, sistemi di
       memoria di massa, reti, ecc. Questo è ottenuto fornendo un'interfaccia utente per la
       gestione di un numero di risorse con il resource sun-layer (RS ). Esso consente agli utenti
       di assegnare un sottoinsieme di risorse per il loro uso. Funzioni tipiche disponibili
       dall'interfaccia utente includono la creazione o la rimozione di immagini del sistema
       operativo, scalando capacità richieste, o definire le topologie di rete. Inoltre, l'interfaccia

                                                                                                   13
fornisce le funzionalità necessarie per le operazioni, quali l'avvio e l'arresto di istanze del
       sistema operativo.
       I sistemi IaaS includono tipicamente alcune o tutte le seguenti caratteristiche:
           •   una scelta di macchine virtuali già pronte con preinstallati i sistemi operativi, tra
               cui numerose versioni di Windows, Linux e Solaris;
           •   una scelta di Appliance virtuali - macchine virtuali con gruppi specifici di software
               preinstallato;
           •   possibilità di memorizzare copie di dati particolari in luoghi diversi in tutto il
               mondo per effettuare il download dei dati il più velocemente possibile;
           •   strumenti software per eseguire calcoli complessi con grandi array di server
               virtuali che lavorano in parallelo sullo stesso problema;
           •   capacità di aumentare o diminuire manualmente le risorse di calcolo assegnate
               mediante un browser Web con le nuove esigenze;
           •   la capacità di scalare automaticamente le risorse di calcolo in risposta ad aumenti e
               diminuzioni di utilizzo delle applicazioni.

       La capacità elastica di sistemi IaaS rende possibile il Computing on-demand, ma sono i
       bassi costi e il modello pay-per-use che li rendono attraenti per le imprese. La Tabella 1.3
       mostra e descrive ulteriori offerte e tools IaaS.

1.3 Modelli di Deployment: Public, Private e Hybrid Clouds

        Un Public Cloud (chiamato anche “Cloud esterno”) comprende tutte le offerte di Cloud in
       cui i Providers e i potenziali utenti non fanno parte della stessa unità organizzativa. I
       fornitori rendono la loro nuvola accessibile al pubblico e di solito offrono un portale Web
       self-service in cui gli utenti possono specificare la portata desiderata dei servizi. I servizi
       sono fatturati sulla base delle risorse effettivamente utilizzate nel periodo corrispondente.
       In contrasto con questo modello, i Providers e gli utilizzatori di un cosiddetto Private
       Cloud (indicato anche come “Cloud interno” o “IntraCloud”) appartengono alla stessa
       unità organizzativa.
       La ragione principale per cui un Private Cloud sarebbe preferibile ad un Public Cloud di
       solito è la sicurezza infatti trattano informazioni sensibili, come ad esempio i piani di
       progettazione o i dati di produzione, che si suppone, essere meglio protetti e le misure di

                                                                                                   14
regolamentazione, ad esempio per quanto riguarda i dati personali sulla salute, che in
questo modo possono essere meglio rispettate.
Quindi i servizi in un Private Cloud operano sulle risorse appartenenti all'organizzazione,
alcuni sviluppatori cercano di realizzare le interfacce utilizzando la stessa tecnologia del
Public Cloud.

       Organizzazione               Servizi Cloud                 Descrizione

       Amazon                       Elastic Compute Cloud (EC2)   Virtual servers

       Cloud.com                    CloudStack                    Open source IaaS

       University of Chicago        Nimbus                        Open source IaaS

       Openflow                     OpenFlow                      Local network simulation

       OpenNebula Project           OpenNebula                    Open source IaaS

       Eucalyptus Systems           Eucalyptus                    Open source IaaS

       The Openstack Cloud          OpenStack                     Open Source IaaS
       Software

       Joyent                       BingoDisk                     Mass storage

       Amazon                       Simple Storage Service (S3)   Mass storage

                   Tabella 1.3 – Infrastructure as a Service: offerte e tools.

L'obiettivo è assicurarsi che gli strumenti che sono disponibili nel Public Cloud possano
essere utilizzati anche nel Private Cloud, e inoltre mantenere la porta aperta per poter
scalare le applicazioni che sono state sviluppate per il Private Cloud per un uso successivo
nel Public Cloud.
Scenari in cui ci sono sia servizi del Public Cloud e sia servizi del Private Cloud, sono

                                                                                             15
indicati come Hybrid Cloud. Con un Hybrid Cloud, alcune funzionalità sono di solito
trasferite al Public Cloud, mentre il normale funzionamento si basa su risorse private
dell'organizzazione. Secondo le considerazioni di sicurezza di cui sopra, i cambiamenti
devono essere tali che soltanto funzioni o dati non critici vengono trasferiti.
La Figura 1.2 mostra come i tre tipi, cioè Public Cloud, Private Cloud e Hybrid Cloud
sono posizionati l'uno rispetto all'altro.
Infine con il Community Cloud abbiamo un’infrastruttura per l'uso esclusivo da parte di
una determinata comunità di consumatori, da parte delle organizzazioni che hanno
condiviso ad esempio la missione, i requisiti di sicurezza, la politica e le misure di
regolamentazione. Esso può essere di proprietà, gestito da una o più delle organizzazioni
della comunità, da un terzo o da una combinazione di essi.

                 Figura 1.2 – Public Cloud, Private Cloud e Hybrid Cloud

                                                                                       16
Capitolo 2
CloudStack

       In questo capitolo descriveremo la piattaforma di Cloud Computing Open Source
       CloudStack. Le caratteristiche generali della piattaforma sono descritte al paragrafo 2.1 e
       l’architettura al 2.2. Sono quindi illustrati i tipi di rete che è possibile creare (Basic e
       Advanced), che CloudStack mette a disposizione e descriveremo le Virtual Machine di
       sistema che CloudStack utilizza per il Management interno.
       Inoltre essendo una Piattaforma di tipo Cloud Computing utilizzerà un Hypervisor, quindi
       alla fine del capitolo descriveremo KVM (Kernel-Based Virtual Machine) uno degli
       Hypervisor supportati da CloudStack.

2.1 Caratteristiche Generali

       CloudStack è una piattaforma software Open Source di tipo IaaS in gradi di creare
       infrastrutture pubbliche, private e ibride. CloudStack gestisce la rete, lo Storage e i nodi di
       calcolo che costituiscono un’infrastruttura Cloud.
       Gli utenti tipici sono fornitori di servizi e le imprese.
       Con CloudStack è possibile:
           •   configurare un servizio on-demand. I fornitori di servizi possono vendere istanze di
               macchine virtuali, volumi di archiviazione e configurazioni di rete.
           •   creare un Cloud privato per l’utilizzo da parte dei dipendenti e la gestione delle
               macchine virtuali come se fossero macchine fisiche.

                                                                                                   17
CloudStack lavora con una varietà di Hypervisor (KVM, VMware, vSphere e Citrix
       XenServer) ed è in grado di gestire decine di migliaia di server installati in più data center
       geograficamente distribuiti. CloudStack configura automaticamente la messa in rete di
       ogni macchina virtuale Guest e le impostazioni di archiviazione, gestisce internamente un
       pool di Appliance virtuali per sostenere la stessa nuvola e che offrono servizi come
       firewall, Routing, DHCP, accesso VPN, desktop remoto e Storage. L'ampio uso di
       Appliance virtuali semplifica notevolmente l'installazione, la configurazione e la gestione
       continua di una distribuzione Cloud.
       Offre un Administrator WEB-interface utilizzata per il Provisioning e la gestione del
       Cloud e una User WEB-interface è utilizzata per l’esecuzione di macchine virtuali e
       gestione dei Templates. La User WEB-interface può essere personalizzata in modo da
       riflettere il fornitore del servizio.
       Inoltre fornisce API che consentono l’accesso a tutte le funzionalità di gestione
       disponibili.

2.2 Architettura di CloudStack

       Un’installazione di CloudStack si compone di due parti il Management Server e la Cloud
       Infrastructure che viene gestita. Un’installazione base consiste di una macchina dove
       verrà installato il Management Server e una macchina dove verrà installato l’Agent e
       l’Hypervisor.

                                     Figura 2.1 – Installazione base CloudStack.

                                                                                                  18
Quando si imposta e gestisce un Cloud sono messe a disposizione delle risorse, come
Host, dispositivi di Storage, ed indirizzi IP. Il Management Server si occupa del
management di tali risorse.
Il Management Server:
   •   Fornisce le WEB-interface per l'amministratore e gli utenti finali.
   •   Fornisce le API per la piattaforma CloudStack.
   •   Gestisce l'assegnazione di indirizzi IP pubblici e privati.
   •   Gestisce Snapshot, Templates e immagini ISO, possibilmente replicandole sui
       Data Center.
   •   Fornisce un unico punto di configurazione per il Cloud.
Come suggerisce il nome, il Management Server è lì per gestire qualcosa - una o più zone
(tipicamente, Data Center), contenenti i computer Host in cui macchine virtuali Guest
verranno eseguite. L'infrastruttura Cloud è organizzata come segue:
   •   Zona: In genere, una Zona è equivalente a un Data Center unico. Una Zona è
       costituita da uno o più Pods e Storage secondario.
   •   Pod: un Pod di solito include un layer-2 switch e uno o più Cluster.
   •   Cluster: Un Cluster è costituito da uno o più Host e Storage Primario.
   •   Host: un singolo nodo di calcolo all'interno di un Cluster.
   •    Primary Storage: è associato ad un Cluster, e memorizza i volumi del disco per
       tutte le macchine virtuali in esecuzione su Host nello stesso Cluster.
   •   Secondary Storage: è associato ad una Zona, memorizza i Templates, le immagini
       ISO, e gli Snapshots del volume del disco.

                          Figura 2.2 – Organizzazione CloudStack. [4]

                                                                                      19
2.3 Network Overview

       CloudStack offre due tipi di Network: Basic e Advanced. Basic Network prevede una rete
       unica condivisa. L’isolamento è garantito attraverso i Security-Group (filtraggio indirizzi
       IP). Tutti i Guests assegnati ad una zona condividono una singola rete.
       L’Advanced Network offre invece la massima flessibilità ma richiede più passaggi di
       configurazione.
       Ciascuna Zona può essere Basic o Advanced, una volta che si effettua la scelta per una
       zona questa resterà tale per l’intero ciclo di vita.

2.3.1 Basic Network

       Quando la Basic Network viene utilizzata, ci può essere una sola rete fisica nella zona.
       Tale rete fisica svolge tre tipi di traffico:
         •       Guest: quando gli utenti finali eseguono VMs, queste generano traffico guest. Ogni
                 Pod in una Zona di tipo Basic è un Broadcast Domain, e quindi ogni Pod ha un
                 diverso intervallo di indirizzi IP per la rete Guest. L’amministratore deve
                 configurare l’intervallo di indirizzi IP per ogni Pod.
         •       Management: quando le risorse interne di CloudStack comunicano tra loro, generano
                 Management Traffic. Ciò include la comunicazione tra Host, macchine virtuali (VM
                 di sistema utilizzate da CloudStack per diverse attività), e qualsiasi altro componente
                 che comunica direttamente con il Management Server di CloudStack. È necessario
                 configurare l'intervallo di indirizzi IP per le macchine virtuali di sistema.
             •    Storage: il traffico tra i server di Primary e Secondary Storage.

       In una Basic Network, la configurazione della rete fisica è abbastanza semplice. Avremo
       solo bisogno di configurare una rete ospite per trasportare il traffico generato da macchine
       virtuali guest. Quando la Basic Network viene utilizzata, CloudStack assegnerà gli
       indirizzi IP prendendoli dal CIDR del Pod. L’amministratore deve aggiungere un
       intervallo di indirizzi IP nel Pod per tale scopo.

                                                                                                     20
Figura 2.3 – Basic Network.

2.3.2 Advanced Network

      Quando viene utilizzata l’ Advanced Network, ci possono essere più reti fisiche nella
      Zona. Ogni rete fisica può portare uno o più tipi di traffico. I tipi di traffico in una
      Advanced Network sono:
         •   Guest: quando gli utenti eseguono macchine virtuali, generano traffico ospite. Le
             Guest VM comunicano tra loro attraverso una rete che può essere definita come
             guest network. Questa rete può essere isolata o condivisa. In una guest network
             isolata, l'amministratore deve prenotare un range di VLAN per fornire l'isolamento
             per la rete. In una guest network condivisa, tutte le macchine virtuali guest
             condividono una singola rete. In questo caso, è possibile fornire l'isolamento
             utilizzando tecniche di isolamento di tipo Layer-3, come ad esempio i Security
             Group.
         •   Management: quando le risorse interne comunicano tra loro generano traffico di
             tipo Management. Ciò include la comunicazione tra Host, macchine virtuali (VM
             di sistema utilizzate da CloudStack per diverse attività nel Cloud), e qualsiasi altro
             componente che comunica direttamente con il Management Server di CloudStack.
             È necessario configurare l'intervallo di indirizzi IP per le macchine virtuali di
             sistema da utilizzare.
         •   Public: Traffico pubblico viene generato quando le macchine virtuali nel Cloud
             accedono a Internet. IPs accessibili al pubblico devono essere assegnati per questo

                                                                                                21
scopo. Gli utenti finali possono utilizzare l'interfaccia utente CloudStack per
        acquisire questi IP e per implementare NAT tra la rete ospite e la rete pubblica.
   •    Storage: Il traffico tra i server di Primary e Secondary Storage.

Quando viene utilizzata un’Advanced Network l'amministratore può creare reti aggiuntive
per l'utilizzo da parte degli ospiti. Queste reti possono estendersi nella zona e essere a
disposizione di tutti gli account, oppure possono essere definite nell'ambito di un unico
account, nel qual caso solo l'account denominato può creare gli ospiti che si attaccano a
queste reti.
CloudStack mette a disposizione un indirizzo IP pubblico per ogni account da utilizzare
come indirizzo IP sorgente NAT. Gli utenti possono richiedere ulteriori indirizzi IP
pubblici. L’amministratore deve configurare uno o più intervalli di indirizzi IP Pubblici
per tale scopo.

                         Figura 2.4 – Advanced Network.

                                                                                            22
2.4 System VM

      CloudStack utilizza diversi tipi di macchine virtuali di sistema per eseguire le attività nel
      Cloud. Tuttavia, l'amministratore dovrebbe essere a conoscenza di queste e del loro ruolo
      per contribuire a problemi di debug. Le System VM sono:

        Ø Console Proxy VM: è un tipo di macchina virtuale di sistema che ha il ruolo di
            presentare tramite interfaccia utente web il Desktop remoto di una Guest VM.
            Dall’User Interface cliccando sull'icona di una console viene visualizzata una nuova
            finestra. Il codice AJAX viene scaricato da quella finestra dall'indirizzo IP pubblico
            della Console Proxy VM. Infatti c'è esattamente un indirizzo IP pubblico assegnato
            alla Console Proxy VM e quindi la Console Proxy si connette alla porta VNC della
            VM richiesta. Quindi non c’è alcuna necessità di abilitare VNC all’interno di una
            Guest VM.

        Ø Virtual Router: è uno dei fornitori di servizi di uso più frequente in CloudStack.
            L'utente finale non ha accesso diretto al router virtuale. Gli utenti possono eseguire
            il ping del router virtuale e intraprendere azioni che incidono su di esso (ad esempio
            impostando il Port Forwarding), ma gli utenti non hanno un accesso di tipo SSH.
            Non esiste un meccanismo per l'amministratore per accedere al router virtuale, ma
            possono essere riavviati dagli amministratori, questo interromperà l'accesso del
            pubblico alla rete e ad altri servizi.
            Un test fondamentale per il debug dei problemi di rete è quello di tentare di eseguire
            il ping verso il router virtuale da una macchina virtuale Guest.

        Ø Secondary Storage VM: fornisce un processo in Background che si occupa di una
            serie di attività di archiviazione secondarie: il download di un nuovo template per
            una Zona, la copia di template tra le zone, e lo snapshot backup.
            L'amministratore può accedere alla Secondary Storage VM, se necessario.

                                                                                                23
2.5 Hypervisor Kernel-Based Virtual Machine (KVM)

       Prima di aggiungere un Host alla configurazione CloudStack, è necessario installare un
       Hypervisor sull'Host. CloudStack è in grado di gestire gli Host che eseguono macchine
       virtuali su una varietà di Hypervisor tra cui KVM.
       La virtualizzazione ha fatto molti progressi negli ultimi dieci anni, soprattutto a causa
       dello sviluppo di una miriade di Open-Source Hypervisor. Questo progresso ha quasi
       eliminato le barriere tra sistemi operativi e ha aumentato notevolmente l'utilizzo di server
       potenti, portando un beneficio immediato alle aziende. Due degli approcci più comuni per
       software di virtualizzazione sono Full Virtualization e Paravirtualization.
       In Full-Virtualization, un livello, comunemente chiamato Hypervisor o Monitor della
       macchina virtuale, esiste tra i sistemi operativi virtualizzati e l'Hardware. Questo strato fa
       un Multiplexing delle risorse di sistema tra le concorrenti istanze del sistema operativo.
       La Paravirtualization è diversa in quanto l'Hypervisor funziona in modo più cooperativo,
       perché ogni sistema operativo Guest è consapevole del fatto che è in esecuzione in un
       ambiente virtualizzato.
       Entrambi gli approcci hanno vantaggi e svantaggi. Il vantaggio principale del metodo di
       Paravirtualization è che permette la virtualizzazione più veloce possibile ed è basata su
       Software, a costo di non supportare sistemi operativi proprietari. Approcci di Full-
       Virtualization, ovviamente, non hanno questa limitazione, tuttavia, sistemi di Full-
       Virtualization sono pezzi molto complessi di software.
       VMware, una soluzione di virtualizzazione commerciale, è un esempio di Full-
       Virtualization. La Paravirtualization è fornita da Xen, User-Mode Linux (UML) e altri.
       Con l'introduzione di virtualizzazione basata su Hardware, queste linee sono sfocate. Con
       l'avvento di Intel VT e AMD SVM, la scrittura di un Hypervisor è diventata molto più
       facile, ed è ora possibile godere dei vantaggi della Full-Virtualization, mantenendo la
       complessità dell'Hypervisor al minimo.
       KVM è un relativamente nuovo e semplice, ma potente, Virtualization Engine, che ha
       trovato la sua strada nel Kernel di Linux. Poiché utilizza la virtualizzazione basata su
       Hardware non richiede modifiche ai sistemi operativi Guest, e, quindi, è in grado di
       supportare qualsiasi piattaforma, dato che viene distribuito su un processore supportato.
       Gli sviluppatori KVM hanno messo a punto un metodo che ha trasformato il Kernel di
       Linux in un Hypervisor. Ciò è stato possibile attraverso un metodo minimamente invasivo
                                                                                                    24
attraverso lo sviluppo di KVM come modulo del Kernel. L'integrazione della funzionalità
       di Hypervisor in un Linux Kernel come modulo caricabile è in grado di semplificare la
       gestione e migliorare le prestazioni di ambienti virtualizzati.
       Secondo questo modello, ogni macchina virtuale è un processo regolare Linux.
       Tradizionalmente, un normale processo di Linux ha due modalità di esecuzione: Kernel e
       utente. La modalità utente è la modalità di default per le applicazioni, e un'applicazione va
       in modalità Kernel quando si richiede un servizio dal Kernel, come la scrittura sul disco
       rigido. KVM aggiunge una terza modalità, la modalità Guest. Processi in modalità Guest
       sono processi che vengono eseguiti all'interno della macchina virtuale. La modalità Guest,
       proprio come la modalità normale (non virtualizzata), ha il suo Kernel e il suo spazio
       utente.
       KVM fa uso di virtualizzazione Hardware per virtualizzare gli stati del processore, e la
       gestione della memoria per la macchina virtuale viene gestita all'interno del Kernel.
       L’I/O nella versione corrente viene gestito nello spazio utente, principalmente attraverso
       QEMU.

2.6 CloudStack API

       Le API CloudStack sono API di basso livello che sono state utilizzate per implementare
       l’interfaccia utente.
       La maggior parte delle chiamate API CloudStack sono asincrone e la chiamata ritornerà
       immediatamente un identificativo del processo (ID). Questo ID può essere utilizzato per
       determinare in seguito lo stato del lavoro.
       Le API sono basate su architettura REST e consentono agli sviluppatori di creare soluzioni
       per la gestione e integrazioni di sistemi. Supportano Post/Get e restituiscono risposte sia in
       XML che in JSON.
       Le API di CloudStack supportano tre tipi di accesso:
           • Root Admin. L’accesso a tutte le funzionalità del Cloud tra cui sia la gestione delle
                 risorse virtuali che fisiche.
           • Domain Admin. L’accesso alle sole risorse virtuali del Cloud che appartengono al
                 dominio dell’amministratore.
           • User. L’accesso alle sole funzioni che consentono la gestione di istanze virtuali
                 dell’utente come Storage e Network.

                                                                                                  25
2.6.1 Come usare le API CloudStack

       Descriveremo come usare le API di CloudStack con riferimento particolare all’API
       deployVirtualMachine che crea e automaticamente avvia una Virtual Machine con un
       Service Offering, un Disk Offering ed un Template.
       La richiesta risulterà composta dai seguenti campi:

          Ø CloudPlatform API URL: entry point del servizio WEB API.

          Ø Command: Il comando del servizio Web che tu vuoi eseguire.

          Ø Parameters: Si specificano i parametri per il comando.

       Nel nostro caso avremo una GETRequest del tipo:

          1. http://ManagementSeverIP:8080/client/api
          2. ?command=deployVirtualMachine
          3. &serviceOfferingId=1
          4. &diskOfferingId=1
          5. &templateId=2
          6. &zoneId=4
          7. &hostId=5
          8. &apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxX
             cgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ

          9. &signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D

       La prima riga è la CloudPlatform API URL. La seconda fa riferimento al Command che si
       vuole eseguire, nel nostro caso stiamo lanciando un Deploy di una Virtual Machine,
       preceduto da un (?) che serve a separarlo dalla CloudPlatform API URL. Le righe 3-7
       rappresentano i Parameters per il dato Command. Ogni singolo Parameter è formato dalla
       coppia (campo=valore) ed è preceduto da una (&). Alla riga 8 abbiamo la user API Key
       che identifica univocamente l’account mentre alla riga 9 la signature che serve ad
       autenticare l’user account per l’utilizzo delle API.

                                                                                           26
Per ottenere la Signature occorre avere una API Key e una Secret Key fornita
dall’amministratore della CloudPlatform. Per capire meglio come otteniamo la Signature
dividiamo la nostra richiesta in:

    •    Base URL: URL del Management Server.

        http://ManagementServerIP:8080

    •    API Path: Path all’API Servlet che processa la richiesta.
        /client/api?

    •    Command String: comprende i Parameters e la API Key che identifica l’account.

La signature si ottiene:
  1. Per ogni coppia campo-valore nel Command String effettuare una URL encode dato
        che faranno parte di una GETRequest-HTTP.
  2. Rendere minuscolo ciascun carattere della Command String e ordinare
        alfabeticamente i campi in essa contenuti.
  3. Con la Command String ottenuta eseguire HMAC SHA-1 hashing algorithm con la
        Secret Key associata all’account e fornita dall’amministratore di CloudStack ed
        effettuare sulla stringa ottenuta un Base 64 encoding.

Inviata la GetRequest, si ottiene una risposta in formato XML che salveremo in un file e
da cui tramite un parser otterremo il valore del tag JobId che identifica univocamente il
processo di deploy VM.
Con JobId, è possibile controllare periodicamente lo stato del processo di deploy
chiamando l’API queryAsyncJobResult. L’API restituirà nel tag JobStatus tre possibili
valori interi:

    Ø 0 - Processo in corso. Quindi continueremo a interrogare periodicamente per
         eventuali cambi di stato.
    Ø 1 - Processo completato con successo.
    Ø 2 – Processo non completato con successo e avremo un tag con il codice di errore.

                                                                                       27
2.7 Installazione CloudStack

       L’installazione è stata eseguita presso il SESM a Giugliano, un centro di ricerca e sviluppo
       precompetitivo di aziende Finmeccanica SELEX Sistemi Integrati e SELEX Galileo,
       attivo nel campo della difesa, gestione del traffico aereo e logistica di grandi apparati.
       La macchina su cui verrà eseguito il Management Server sarà utilizzata anche per fornire
       Storage primario e secondario tramite NFS. Ciascun Host deve soddisfare determinati
       requisiti di sistema (Appendice A.1). Il Sistema Operativo scelto è CentOS 6, ed è stato
       opportunamente preparato ad ospitare il Management Server (Appandice A.2).
       Effettueremo la procedura per l’installazione del Management Server e di MySQL sulla
       stesso server, dopo aver scarico il Management Server di CloudStack sull’Host in cui
       verrà eseguito (dettagli Appendice A.3).
       CloudStack ha bisogno di un posto per ospitare Storage primario e secondario. Entrambi
       possono essere NFS Shares, quindi imposteremo le NFS Shares prima di aggiungere
       l'archiviazione di CloudStack. In genere si utilizza un server separato per NFS Shares, ma
       è possibile utilizzare il nodo di Management Server anche come server NFS (Appendice
       A.5).
       Salveremo nel Secondary Storage un Template che viene utilizzato per le System VM di
       CloudStack. Tenendo presente che il mio Hypervisor è KVM, quindi sul Management
       Server lanceremo:

       # /usr/lib64/cloud/agent/scripts/storage/secondary/cloud-install-sys-tmplt -m
       /export/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-
       02062012.qcow2.bz2 -h kvm -F

       Prima di poter aggiungere un host al Cloud, è necessario installare un software
       Hypervisor. KVM è incluso con una varietà di sistemi operativi basati su Linux compreso
       CentOS da noi scelto. All'interno di un cluster, tutti gli host KVM devono avere in
       esecuzione lo stesso sistema operativo. Ogni host KVM deve avere il CloudStack Agent
       installato su di esso.
       Di default, CloudStack utilizzerà il dispositivo che viene utilizzato per la route predefinita.
       Questo dispositivo viene collegato ad un Bridge creato da CloudStack. Visto che il nostro

                                                                                                    28
sistema dispone di più schede di rete creeremo un bridge e collegheremo la scheda di rete
prescelta al bridge.
L'Host Agent deve essere impostato per l'utilizzo di NTP. Tutti gli Host nello stesso Pod
devono avere lo stesso tempo. Per la configurazione di NTP seguiremo la stessa procedura
eseguita sul Management Server (Appendice A.2).
Dopo che il Management Server è installato e in esecuzione, è necessario aggiungere le
risorse di calcolo. Per fare questo bisogna accedere all’interfaccia utente di CloudStack e
eseguire una procedura per il Provisioning dell’infrastruttura.
Alla fine della procedura avremo la struttura in Figura 2.5. Abbiamo Scelto l’Advanced
Zone Configuration (Figura 2.6) quindi dopo aver effettuato il login sulla UI di
CloudStack e aver scelto Advanced nella sezione Add Zone eseguiremo tutti             passi
descritti in Appendice A.7.

                  Figura 2.5 – Conceptual View of My Structure

                                                                                        29
Figura 2.6 – Configurazione Advanced

                                       30
Capitolo 3
Design of Experiment

       L’obiettivo di questo lavoro di tesi è la valutazione di una piattaforma di Cloud dal punto
       di vista dei tempi necessari per eseguire le operazioni volte a fornire il servizio.
       In altri termini, non ci preoccuperemo di analizzare i tempi per eseguire applicazioni
       utente (come fatto in altri lavori quali [8][9]), bensì del tempo che la piattaforma open
       source sotto esame impiega per elaborare una richiesta, individuare le risorse disponibili
       per soddisfare la richiesta e, quindi, per rendere disponibile la risorsa al richiedente.
       Tale studio è effettuato relativamente alla piattaforma CloudStack (Capitolo 2).
       Per effettuare tali valutazioni, gli esperimenti sono stati pianificati secondo l’approccio
       tipico del Design of Experiment (DoE) [7]. Il DoE è uno strumento estremamente potente
       e trasversale, copre vari campi di indagine tecnico-scientifica, e comprende tecniche di
       manipolazione dei risultati sperimentali nate per condurre ad un miglioramento del
       sistema. Con il DoE cercheremo di dare un approccio statistico per ricavare conclusioni
       sensate dai dati, dato che questi sono soggetti ad errori, quindi la metodologia statistica
       rappresenta nel nostro caso di studio l’unico approccio oggettivo all’analisi.

3.1 Identificazione e formulazione del problema

       Analizzeremo il Deployment Time di una Virtual Machine relativo alla piattaforma Open
       Source CloudStack.
       Il Deployment Time è il tempo che intercorre tra t0 e t3 (Figura 3.1), che indicano
       rispettivamente l’istante “Arrivo Richiesta Utente” e l’istante finale “Risorsa Disponibile

                                                                                                   31
all’Utente”. Il Deployment Time comprende oltre al tempo di provisioning (Provisioning
       Time, t3-t2) anche il tempo di scheduling (Scheduling Time, t2-t1) e il tempo di
       elaborazione (Elaboration Time, t1-t0).
       Il tempo di elaborazione è il tempo che impiega il Management Server per elaborare la
       richiesta ed intercorre tra l’istante t0 “Arrivo Richiesta Utente” e l’istante t1 “Inizio
       Scheduling”.
       Il tempo di scheduling è il tempo che impiega il Management Server per scegliere l’Agent
       con le risorse fisiche sufficienti a ospitare la VM Guest ed intercorre tra l’istante t1 “Inizio
       Scheduling” e l’istante t2 “Arrivo Richiesta Deploy all’Agent”.
       Mentre il tempo di provisioning è il tempo che intercorre tra l’istante t2 “Arrivo Richiesta
       Deploy all’Agent” e l’istante t3 “Risorsa Disponibile all’Utente”.

                                 Figura 3.1 – Deployment Time.

3.2 Testbed

       L’installazione è stata eseguita presso il SESM a Giugliano, un centro di ricerca e sviluppo
       precompetitivo di aziende Finmeccanica SELEX Sistemi Integrati e SELEX Galileo,
       attivo nel campo della difesa, gestione del traffico aereo e logistica di grandi apparati.
       La sperimentazione è avvenuta sulla piattaforma Open Source CloudStack installata su
       alcuni nodi del cluster del SESM. I nodi a nostra disposizione sono 6, quindi la nostra
       infrastruttura avrà un Management Server e cinque Agent.

          Ø Management Server: il nodo che ospiterà il Management Server ha una CPU Intel
              Core2 Duo 6300 1,86GHZ, 2GiB di RAM, un Hard Disk da 500GiB e come
              sistema operativo CentOS 6 64 bit.
          Ø Agent: i restanti cinque nodi hanno tutti 2 CPU QuadCore con una frequenza di
              2,5 GHz, 8GiB di RAM, un HD da 32 GiB, come sistema operativo CentOS 6 64
              bit e hypervisor KVM.

                                                                                                    32
Ø Primary Storage: che è associato ad un cluster e memorizza i volumi del disco per
                  tutte le macchine virtuali in esecuzione su host nello stesso cluster. Sarà
                  configurato sul Management Server.
             Ø Secondary Storage: è associato ad una Zona, memorizza i templates, le immagini
                  ISO, e gli snapshots del volume del disco. Sarà configurato sul Management
                  Server.

         Abbiamo effettuato un’installazione con un unico Management Server dato che abbiamo
         solo 5    Agent da gestire e come scenario di Networking l’Advanced per avere una
         maggiore flessibilità nella definizione delle reti Guest.

3.3 Scelta dei fattori e dei livelli

         La scelta dei fattori e dei livelli ad essi associati è uno step fondamentale del Design of
         Experiment. Nel nostro caso prenderemo in considerazione quattro fattori a ciascuno dei
         quali sono associati due livelli.

           Ø Service Offering – forniscono una scelta della CPU, numero di CPU, dimensione
                della RAM e altre scelte. CloudStack mette a disposizione due Service Offering di
                default Small Service Offering (CPU da 500MHz e 512Mb di RAM) e Medium
                Service Offering (CPU da 1GHz e 1Gb di RAM) che noi prenderemo come livelli da
                associare a questo fattore.

           Ø Data Storage – in CloudStack abbiamo un Primary Storage che è associato con un
                cluster e memorizza i Data Storage per tutte le macchine virtuali in esecuzione su
                host del cluster. I due livelli associati a questo fattore saranno la presenza o meno
                del Data Storage.

           Ø   VMs – molto importante e sicuramente da prendere in considerazione è anche il
                numero di VM che sono già in esecuzione sull’Agent scelto per il deployment della
                VM. I due livelli associati a questo fattore saranno agent senza VM in esecuzione (0
                VM) e agent con 5 VM in esecuzione (5 VMs).	
  

                                                                                                   33
Ø   Scheduling     –	
     con questo fattore si prende in considerazione lo Scheduling

              dell’Agent sul quale fare il deploy della VM. I due livelli associati a questo fattore
              saranno la presenza o meno dello Scheduling.	
  

                  Fattori                                             Livelli
          Service Offering                            Small                        Medium
              Data Storage                              No                             Si
                   VMs                                0 VM                           5 VM
              Scheduling                                No                             Si

                                          Tabella 3.1 – Fattori e Livelli.

3.4 Scelta del Piano Sperimentale

       Come piano sperimentale si è scelto il Piano Fattoriale Completo con Replicazione. Sono
       quindi considerate tutte le possibili combinazioni dei fattori a tutti i livelli, così da tenere
       conto delle interazioni tra essi. Ripetendo ciascun esperimento r volte otterremo 2 4 r
       osservazioni. Questa scelta è motivata dal fatto che tramite il Piano Fattoriale Completo
       non è possibile quantificare l’errore dell’esperimento (errore associato alla combinazione
       fattore-livello), cosa invece possibile replicando l’esperimento.
       Introduciamo quattro variabili per indicare fattori e livelli: x A , xB , xC e xD :

       Indicate con yij le riposte degli esperimenti, si ottiene il seguente modello di regressione

       lineare:

                                                                                                    34
yij = q0 + qA x A + qB x B + qC xC + qD x D +
                                 qAB x A x B + qAC x A xC + qAD x A x D + qBC x B xC + qBD x B x D + qCD xC x D +
                                 qABC x A x B xC + qACD x A xC x D + qABD x A x B x D + qBCD x B xC x D +
                                                                                                                         [3.1]
                                 qABCD x A x B xC x D +
                                 eij

                    La corrispondenza tra fattori, livelli e risposte è mostrata in Tabella 3.1. Inoltre la [3.1] ci
                    mostra che il parametro q non è altro che la combinazione lineare delle risposte, questi
                    parametri sono detti contrasti, dividendo le q per 16 ottengo gli effetti di ciascun fattore e
                    delle interazioni tra essi.
                    La e rappresenta l’errore ed è dato dalla differenza tra la risposta media e il valore
                    misurato nell’esperimento i-esimo alla j-esima replicazione ( yij ). La somma degli errori

                    deve essere zero. Questo modello assume che gli effetti dei fattori, le loro interazioni e gli
                    errori sono additivi.

Num   I   Service      Data        VMs    Scheduling      AB   AC   AD    BC    BD    CD     ABC    ACD     ABD     BCD          ABCD
          Offering     Storage     (C)    (D)
          (A)          (B)

1     1   -1           -1          -1     -1              1    1    1     1     1     1      -1     -1      -1      -1           1

2     1   1            -1          -1     -1              -1   -1   -1    1     1     1      1      1       1       -1           -1

3     1   -1           1           -1     -1              -1   1    1     -1    -1    1      1      -1      1       1            -1

4     1   1            1           -1     -1              1    -1   -1    -1    -1    1      -1     1       -1      1            1

5     1   -1           -1          1      -1              1    -1   1     1     1     -1     1      1       -1      1            -1

6     1   1            -1          1      -1              -1   1    -1    1     1     -1     -1     -1      1       1            1

7     1   -1           1           1      -1              -1   -1   1     -1    -1    -1     -1     1       1       -1           1

8     1   1            1           1      -1              1    1    -1    -1    -1    -1     1      -1      -1      -1           -1

9     1   -1           -1          -1     1               1    1    -1    -1    -1    -1     -1     1       1       1            -1

10    1   1            -1          -1     1               -1   -1   1     -1    -1    -1     1      -1      -1      1            1

11    1   -1           1           -1     1               -1   1    -1    1     1     -1     1      1       -1      -1           1

12    1   1            1           -1     1               1    -1   1     1     1     -1     -1     -1      1       -1           -1

13    1   -1           -1          1      1               1    -1   -1    -1    -1    1      1      -1      1       -1           1

14    1   1            -1          1      1               -1   1    1     -1    -1    1      -1     1       -1      -1           -1

15    1   -1           1           1      1               -1   -1   -1    1     1     1      -1     -1      -1      1            -1

                                         Tabella 3.2 – Piano Fattoriale Completo con Replicazione

                                                                                                                                      35
Per un Piano Fattoriale Completo con Replicazione 24 r abbiamo la tabella segno Tabella
       3.2. La prima colonna della Tabella 3.2 viene etichettata “I” e consiste di tutti 1. Le
       colonne successive A, B, C, D contengono tutte le combinazioni possibili di -1 e 1.
       La colonna AB è il prodotto delle colonne A e B e allo stesso modo otteniamo le restanti
       colonne (AC, AD,…,ABCD).
       La Tabella 3.2 sarà completata con la colonna Media (Y) (Tabella 3.4), dove elenchiamo
       le medie aritmetiche (essendo un Piano Fattoriale Completo con Replicazione) delle
       replicazioni per ciascuna osservazione e la colonna Var (Varianza) che fornisce una
       misura di quando siano vari i valori delle acquisizioni dei tempi.

3.5 Esecuzione sperimentale

       Per la rilevazione dei tempi sfrutteremo le API di CloudStack in particolare l’API
       deployVirtualMachine (vedi Paragrafo 2.6.1), scrivendo un’applicazione in Java che
       sottometterà una richiesta GET-http con un associato Command e determinati Parameters
       e attenderà una risposta in XML.
       Avviando un timer nel momento in cui la GetRequest all’API deployVirtualMachine sarà
       inviata e stoppandolo quando il tag jobStatus (vedi paragrafo 2.6.1) ci informerà che il
       processo è completato otterremo il Deployment Time.
       Il Provisionig Time verrà isolato aggiungendo opportuni parametri alla richiesta in modo
       da rendere insignificante il tempo di elaborazione e specificando o meno hostid (agent di
       destinazione per il deploy della VM) in modo da considerare o meno il tempo di
       scheduling.
       In Tabella 3.3 abbiamo la corrispondenza tra fattori-livelli del DoE e campo-valore dei
       Parameters della GetRequest-http.
       I tempi sono stati valutati seguendo il Piano Fattoriale Completo con Replicazioni e i
       risultati degli esperimenti sono visibili in Tabella 3.4 nelle colonne Media e Var che
       indicano rispettivamente la media aritmetica e la varianza che fornisce una misura di
       quando siano vari i valori delle acquisizioni dei tempi.

                                                                                              36
Fattori/Campi                                            Livelli/Valori
               Service Offering/ serviceOfferinId                      Small/ID Small                Medium/ID Medium
                    Data Storage/ diskOfferingId                     No/Non specifico ID             Si/Specifico ID Disk
                                                                        Disk Offering                      Offering
                                       VMs                                  0 VMs                              5 VMs
                            Scheduling / hostId                     No/Specifico ID Host        Si/Non specifico ID Host

                                Tabella 3.3 – Corrispondenza Fattori-Livelli/Campi-Valori

#    I   Service      Data       VMs     Scheduling   A    A    A      B    B    C    A    A    A     B    A     Media      Var
         Offering     Storage    (C)     (D)          B    C    D      C    D    D    B    C    B     C    B
         (A)          (B)                                                             C    D    D     D    C     (Y)
                                                                                                           D

1    1   -1           -1         -1      -1           1    1    1      1    1    1    -1   -1   -1    -1   1     107,9441   0,1068

2    1   1            -1         -1      -1           -1   -1   -1     1    1    1    1    1    1     -1   -1    108,2159   0,1142

3    1   -1           1          -1      -1           -1   1    1      -1   -1   1    1    -1   1     1    -1    109,5562   0,4384

4    1   1            1          -1      -1           1    -1   -1     -1   -1   1    -1   1    -1    1    1     1098694    0,3336

5    1   -1           -1         1       -1           1    -1   1      1    1    -1   1    1    -1    1    -1    16,8016    0,1328

6    1   1            -1         1       -1           -1   1    -1     1    1    -1   -1   -1   1     1    1     16,8870    0,1523

7    1   -1           1          1       -1           -1   -1   1      -1   -1   -1   -1   1    1     -1   1     17,3560    0,0911

8    1   1            1          1       -1           1    1    -1     -1   -1   -1   1    -1   -1    -1   -1    17,5356    0,0854

9    1   -1           -1         -1      1            1    1    -1     -1   -1   -1   -1   1    1     1    -1    108,9044   0,3451

10   1   1            -1         -1      1            -1   -1   1      -1   -1   -1   1    -1   -1    1    1     109,5033   0,2001

11   1   -1           1          -1      1            -1   1    -1     1    1    -1   1    1    -1    -1   1     109,9153   0,2740

12   1   1            1          -1      1            1    -1   1      1    1    -1   -1   -1   1     -1   -1    110,2613   0,3983

13   1   -1           -1         1       1            1    -1   -1     -1   -1   1    1    -1   1     -1   1     16,9264    0,1066

14   1   1            -1         1       1            -1   1    1      -1   -1   1    -1   1    -1    -1   -1    16,9895    0,0728

15   1   -1           1          1       1            -1   -1   -1     1    1    1    -1   -1   -1    1    -1    17,4061    0,1515

16   1   1            1          1       1            1    1    1      1    1    1    1    1    1     1    1     17,5714    0,1260

               Tabella 3.4 –Risultati (in secondi) del Piano Fattoriale Completo Con Replicazione

                                                                                                                               37
3.6 Regressione lineare

       Un piano sperimentale 2 4 r (r=10) è stato utilizzato perché abbiamo 4 fattori, 2 livelli e
       ciascuna delle 16 osservazioni è ripetuta r volte.
       Il modello di regressione lineare è dato dall’equazione [3.1], dove e è l’errore sperimentale
       e le q sono i contrasti. Per analizzare un piano sperimentale 2 4 r si utilizza la tabella segno
       illustrata in Tabella 3.4, alla quale sono stati aggiunti i risultati delle osservazioni. In
       Tabella 3.4 abbiamo le colonne segno l’elemento di ciascuna colonna è moltiplicato per il
       corrispondente Media (Y) e poi sommati come in [3.2], dividendo poi il risultato ottenuto
       per 16 otteniamo gli effetti.
       A titolo esemplificativo, la seguente equazione [3.2] mostra il calcolo di qA :

       q = −mediaY + mediaY − mediaY + mediaY − mediaY + mediaY − mediaY + mediaY −
        A         1        2        3        4        5         6       7        8
                                                                                           [3.2]
       mediaY + mediaY − mediaY + mediaY − mediaY + mediaY − mediaY + mediaY
             9        10       11        12        13        14        15       16

       Gli altri effetti si ottengono in modo analogo.
       La e in [3.1] rappresenta l’errore ed è dato dalla differenza tra la risposta media e il valore
       misurato nell’esperimento i-esimo alla j-esima replicazione ( yij ).

            eij = yij − mediaYi                                                            [3.3]

       La somma degli errori deve essere zero.
       La Somma dei Quadrati degli Errori (SSE), che può essere utilizzata per stimare la
       varianza degli errori, è data da:
                    24   r
            SSE = ∑∑ eij2 = 22.5604                                                        [3.4]
                   i=1 j=1

                                                                                                    38
3.7 Allocazione della variazione

       L’allocazione della variazione consente di determinare la percentuale di variazione
       espressa da ciascun fattore, cosa utile per decidere se un fattore ha un impatto significativo
       sulla risposta.
       La Variazione Totale o Somma Totale dei Quadrati è data dall’equazione [3.5]. La
        mediaYtot denota la media di tutte le repliche di tutti gli esperimenti.

       La SST può essere divisa in più parti [3.6] (derivazione equazione [3.6] in Appendice B)
       dove ogni SS (Somma dei Quadrati) sono le variazioni dei fattori e delle interazioni tra
       essi mentre SSE è la variazione attribuita agli errori.
       Nell’equazione [3.7] (derivazione Appendice B) la SS0 rappresenta la Somma dei
       Quadrati delle medie ed è ottenuta elevando al quadrato entrambi i termini dell'equazione
       [B.2] mentre SSY è la somma dei quadrati di tutte le risposte yij .

            SST = ∑ (yij − mediaYtot )2                                                  [3.5]
                    i, j

            SST = 2 4 rqA2 + 2 4 rqB + 2 4 rqC ... + ∑ eij2 = SSA + SSB + SSC... + SSE   [3.6]
                                                 i, j

            SSY = SS0 + SSA + SSB + SSC +...SSABCD + SSE                                 [3.7]

       Avendo 16 osservazioni e 10 replicazioni, le Somme dei Quadrati sono calcolate come
       segue:

            SS0 = 160 * q 20 = 160 * 63,22772 =639639.1691

            SSA = 160 * q 2A = 160 * 0.12652 =2.5594

            SSB = 160 * q 2B = 160 * 0.4562 2 =33.2980

            SSC = 160 * q C2 = 160 * (-46.0435)2 = 339201.0373

            SSD = 160 * 0.2070 2 = 6.8551
            SSAB = 160 * (-0.0009)2 = 0.0001

            SSAC = 160 * (-0.0648)2 = 0.6714

            SSAD = 160 * 0.0202 2 = 0.0653

                                                                                                  39
Puoi anche leggere