Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing...

32
Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Sistemi Operativi Scalabilità ed Elasticità in Infrastrutture di Cloud Computing Anno Accademico 2013/2014 Candidato: Riccardo De Vivo matr. N46000797

Transcript of Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing...

Page 1: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Sistemi Operativi

Scalabilità ed Elasticità in Infrastrutture di Cloud Computing

Anno Accademico 2013/2014 Candidato: Riccardo De Vivo matr. N46000797

Page 2: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

[Dedica]

Page 3: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

Indice

Indice .................................................................................................................................................. III Introduzione ......................................................................................................................................... 4 Capitolo 1: Cloud Computing .............................................................................................................. 5

1.1 Definizione ............................................................................................................................ 5

1.2 Elasticità e Scalabilità nel Cloud Computing ........................................................................ 5 1.3 Modelli di servizio................................................................................................................. 8 1.4 Modelli di distribuzione ........................................................................................................ 9 1.5 Virtualizzazione delle risorse .............................................................................................. 10

1.5.1 Hypervisor ....................................................................................................................... 10 Capitolo 2: Piattaforme di Cloud Computing .................................................................................... 13

2.1 OpenStack ........................................................................................................................... 13 2.1.1 Struttura ........................................................................................................................... 13 2.1.2 Elasticità .......................................................................................................................... 16 2.2 VMware vSphere e vCloud ................................................................................................. 17 2.2.1 Struttura ........................................................................................................................... 17

2.2.2 Elasticità .......................................................................................................................... 20 Capitolo 3: Cloud Providers ............................................................................................................... 22

3.1 Amazon Web Services ........................................................................................................ 22 3.1.1 Panoramica ...................................................................................................................... 22 3.1.2 Elasticità .......................................................................................................................... 24

3.2 Microsoft Azure .................................................................................................................. 27 3.2.1 Panoramica ...................................................................................................................... 27

3.2.2 Elasticità .......................................................................................................................... 28 Conclusioni ........................................................................................................................................ 30

Bibliografia ........................................................................................................................................ 32

Page 4: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

4

Introduzione

L’avvento di Internet, la sua crescente diffusione e l’evoluzione delle tecnologie di rete

hanno permesso l’estensione del concetto di servizio all’ambito dell’informatica e delle

relative risorse. La maggior parte dei servizi e le fonti energetiche che utilizziamo al

giorno d’oggi come l’acqua, il gas e l’elettricità, ormai indispensabili nella vita quotidiana,

sono accessibili in maniera semplice e diretta, senza suscitare in noi la preoccupazione di

come quella risorsa sia stata effettivamente prodotta o da dove essa provenga. L’idea di

virtualizzare le risorse di un sistema informatico, come la sua capacità di calcolo, di

memorizzazione o il software stesso, rendendole accessibili all’esterno sotto forma di

servizio offerto a terzi attraverso la rete Internet (IT-as-a-Service), ha suscitato da sempre

grande interesse, consentendo lo sviluppo progressivo del Cloud Computing. La maggior

parte delle aziende realizza da tempo processi di outsourcing, affidando una parte delle

proprie attività a terzi, imprese specializzate nella fornitura di quel particolare servizio.

Nell’era digitale l’outsourcing è stato esteso alle competenze informatiche, riducendo costi

di gestione, manutenzione e garantendo una minimizzazione dei rischi, quali perdite di

dati (data loss) e interruzioni causate da guasti hardware (hardware failure).

Nella prima parte dell’elaborato sarà effettuata una breve panoramica del paradigma del

Cloud Computing, evidenziandone uno dei maggiori benefici, l’elasticità dei servizi

offerti. La seconda e terza parte saranno dedicate ad alcune piattaforme cloud e alle

soluzioni flessibili proposte dai principali fornitori di servizi (cloud providers).

Page 5: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

5

Capitolo 1: Cloud Computing

1.1 Definizione

Il concetto di Cloud Computing abbraccia diversi aspetti, risulta pertanto complesso

offrire una definizione completa, che riesca a sintetizzarli tutti. Il National Institute of

Standards and Tecnology (NIST), agenzia del governo Americano, che si occupa della

definizione di standard e della gestione delle tecnologie nell’ambito dell’industria e del

commercio, ha redatto un documento ufficiale, in cui identifica il Cloud Computing come

un modello per garantire l’accesso tramite rete, su richiesta (on-demand) e da ogni luogo,

a un esteso bacino di risorse informatiche (e.g., reti, server, memoria, applicazioni e

servizi), che possono essere rapidamente fornite in base ai bisogni del consumatore. Tali

risorse devono essere facilmente accessibili e gestibili, al punto da comportare la minima

interazione con il fornitore del servizio. Il NIST delinea inoltre le componenti

fondamentali dell’architettura cloud, ovvero le caratteristiche essenziali, tre modelli di

servizio e quattro modelli di distribuzione [1].

1.2 Elasticità e Scalabilità nel Cloud Computing

Uno dei maggiori benefici derivanti dall’utilizzo di servizi di Cloud Computing è

l’estrema flessibilità che viene garantita al cliente, l’elasticità e la scalabilità sono i

principi cardine di questo paradigma ovvero le caratteristiche che hanno maggiormente

contribuito alla sua ampia diffusione.

Anche se talvolta i due termini vengono utilizzati in maniera interscambiabile, bisogna

Page 6: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

6

comunque operare una distinzione tra le due proprietà [3]:

Scalabilità: si configura come la capacità di un sistema di gestire carichi di lavoro

crescenti, aggiungendo risorse in maniera incrementale. In base alla modalità di

accrescimento di questa capacità suppletiva, è possibile distinguere due tipi di

scalabilità:

o Scalabilità orizzontale (scale out): consiste nell’aggiunta di nuovi

nodi di calcolo o istanze VMs (Virtual Machines1) per consentire,

con l’aiuto di un load balancer2, di smistare il carico di lavoro fra

più nodi, facendo in modo che lavorino in parallelo come un’unica

unità. Il concetto di scalabilità orizzontale è ampiamente diffuso in

ambito informatico e nella sua accezione generale può indicare sia

l’aggiunta di macchine fisiche che quella di istanze virtuali. Nel

caso specifico del cloud, un cloud provider può incrementare la

potenza di calcolo complessiva che può offrire ai clienti

aggiungendo altri cloud server al suo Data Center3 ma nella sua

accezione tipica indica l’aggiunta di altre istanze VMs a

un’infrastruttura cloud preesistente, al fine di aumentare le

performance del sistema.

o Scalabilità verticale (scale up): consiste nel potenziamento di nodi di

calcolo o istanze di VMs preesistenti, mediante l’aggiunta di altre

risorse hardware, ad esempio aggiunta di CPU o core per

aumentarne la potenza di calcolo, di RAM o di capacità di

memorizzazione. Inoltre esiste sempre un limite alla scalabilità

verticale, infatti, seppure si riuscisse ad acquistare una macchina

1 Virtual Machines: una macchina virtuale è un’entità software, che attraverso un processo di virtualizzazione,

emula il comportamento di una macchina fisica, grazie all’assegnazione di risorse hardware. 2 Load Balancer: un bilanciatore è un componente software o in alcuni casi hardware, che permette di

distribuire il carico di lavoro tra varie macchine virtuali o fisiche. 3 Data Center: un Centro di Elaborazione Dati Cloud è una server farm Cloud, ovvero un insieme di server

collocati in un unico ambiente, al fine di facilitarne la gestione, la manutenzione e la sicurezza e progettato per

offrire servizi Cloud.

Page 7: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

7

con dei componenti hardware di ultima generazione, oltre quello

non è possibile spingersi mentre invece è sempre possibile

aggiungere un altro nodo di calcolo alla nostra architettura.

Elasticità: si configura come la capacità di un sistema di adattare e ridimensionare

velocemente le risorse, spesso in maniera automatica, per far fronte a carichi

dinamici, sia crescenti sia decrescenti. Questa proprietà prevede, oltre alla

scalabilità e quindi l’acceso ad altre risorse quando il sistema è sovraccarico, anche

il rilascio delle stesse quando non sono più necessarie (scale down e scale in). Tale

caratteristica è essenziale in ambiente cloud, dove il cliente vuole pagare solo ciò

che effettivamente usa (pay-as-you-use), questo permette sia un risparmio in

termini di costi, sia l’ottimizzazione delle risorse messe in gioco dal provider.

L’elasticità è quindi una modalità di scalare un sistema sia verso il basso sia verso

l’alto ed è un’espressione utilizzata particolarmente nel Cloud Computing mentre il

concetto di scalabilità può avere diverse connotazioni e quindi ha una portata più

ampia.

È importante rilevare che l’aumento o la diminuzione delle risorse di un sistema, deve

comportare come conseguenza, rispettivamente, l’aumento e la diminuzione proporzionale

delle sue performance.

Figura 1 Scalabilità verticale e orizzontale https://otherplus.com/tech/

Page 8: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

8

1.3 Modelli di servizio

I servizi di Cloud Computing sono suddivisi in tre classi, a seconda del livello di

astrazione delle funzionalità fornite [1]:

IaaS (Infrastructure as a Service): questo modello di servizio è localizzato al livello

più basso di astrazione dei servizi cloud, le funzionalità offerte vanno dal

potenziamento di VMs preesistenti, aggiungendo ad esempio potenza di calcolo,

memoria, servizi di rete e altre risorse informatiche, alla creazione di intere

macchine virtuali personalizzate secondo i parametri scelti dall’utente o alla

disattivazione delle stesse quando non sono più necessarie.

Il cliente, a questo livello, non ha il controllo sull’intera infrastruttura cloud

sottostante, né conosce dove o come siano fisicamente collocate le risorse che sta

utilizzando, ma può decidere quali sistemi operativi e applicazioni adoperare sulle

sue istanze VMs o Cloud Server. Spesso il consumatore può valutare l’impiego di

meccanismi per la gestione del carico come un bilanciatore, scegliere che firewall

utilizzare a livello SO (Sistema Operativo) e configurarlo o anche se servirsi delle

funzioni di scalabilità automatica (autoscaling) offerte dal provider.

PaaS (Platform as a Service): questo modello di servizio si colloca sopra quello

infrastruttura, i fornitori mettono a disposizione una piattaforma cloud, ossia un

ambiente in cui gli sviluppatori possono creare, distribuire e testare applicazioni

utilizzando linguaggi di programmazione, librerie e strumenti supportati dal

provider. Il cliente in questo caso non avrà il controllo sul livello sottostante

ovvero sui cloud server che costituiscono la piattaforma, sui sistemi operativi

utilizzati, sulla gestione della memoria o sulle reti ma soltanto sulle applicazioni e

gli strumenti che sono forniti per svilupparle.

SaaS (Software as a Service): il livello di astrazione è ancora più alto rispetto a

quello PaaS, i servizi offerti al cliente consistono nell’utilizzo delle applicazioni

sviluppate dal provider ed eseguite sulla sua infrastruttura cloud. In questo caso il

Page 9: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

9

consumatore naturalmente non può sviluppare delle proprie applicazioni o

modificare quelle esistenti ma solo servirsene, oltre a configurarle modificandone

in maniera limitata alcune impostazioni. Questi software sono solitamente

accessibili da diversi dispositivi attraverso portali web, semplificandone

notevolmente l’uso per il cliente e lo sviluppo e il testing per i provider.

1.4 Modelli di distribuzione

I modelli di distribuzione indicano effettuano una classificazione dei servizi di cloud, in

base alla loro distribuzione, ossia, dove deve essere organizzato.

Il NIST distingue a questo proposito quattro possibili alternative [1]:

Private Cloud: l’infrastruttura cloud è appannaggio di una sola organizzazione, può

essere gestita o essere di proprietà dell’azienda stessa o di un fornitore esterno ma

chi usufruisce dei servizi è unicamente l’organizzazione e le sue diverse unità.

Community Cloud: in questo caso, l’infrastruttura di cloud computing viene fornita

a un gruppo ristretto di aziende o comunità di consumatori che condividono

Figura 2 La pila del cloud computing http://article.sapub.org/

Page 10: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

10

caratteristiche comuni, come obiettivi, requisiti di sicurezza o politiche aziendali.

Solitamente la gestione della struttura o la proprietà della stessa è prerogativa di

un’organizzazione appartenente alla comunità o di un insieme di queste.

Public Cloud: è il caso più diffuso, un fornitore di servizi cloud eroga le sue risorse

informatiche attraverso la rete Internet, rendendole accessibili al pubblico e

usufruibili a pagamento.

Hybrid Cloud: solitamente si parla di modello di distribuzione ibrido quando

un’infrastruttura cloud privata al fine di potenziare le sue risorse, acquista servizi

messi a disposizione da un’infrastruttura pubblica.

1.5 Virtualizzazione delle risorse

Uno dei principi cardine su cui si fonda il Cloud Computing, è quello riguardante la

virtualizzazione delle risorse hardware, questo meccanismo consente di eseguire diversi

sistemi operativi (guest OS) corredati dal relativo insieme di applicazioni su una stessa

macchina fisica (host).

1.5.1 Hypervisor

Il componente software o hardware che agisce da interfaccia tra la macchina fisica

sottostante o server fisico e le istanze di macchina virtuale installate su di esso è chiamato

VMM (Virtual Machine Monitor), meglio conosciuto col nome di hypervisor.

Come già individuato nell’articolo "Formal Requirements for Virtualizable Third

Generation Architectures" (Gerald J. Popek e Robert P. Goldber, Communications of the

ACM, Volume 17 Numero 7, 1974), possiamo operare una classificazione tra questi

componenti che contribuiscono alla gestione di una infrastruttura cloud [4]:

Hypervisor nativo (type-1 o bare-metal): un VMM di questo tipo è un sistema

eseguito direttamente sull’hardware del server fisico, permettendone il controllo

diretto e l’installazione dei sistemi operativi ospiti al livello superiore.

Page 11: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

11

Hypervisor hosted (type-2): in questo caso il VMM è in esecuzione sul sistema

operativo ospitante (host OS), collocato sopra lo strato hardware e prevede

funzionalità di supporto alla virtualizzazione e controllo delle VMs, ma si affida al

livello inferiore per la gestione della memoria, l’allocazione delle risorse, lo

scheduling e per altre operazioni.

I sistemi che utilizzano un hypervisor possono adottare diverse tecniche di

virtualizzazione [2]:

Virtualizzazione completa (full virtualization): la virtualizzazione dell’hardware da

parte dell’hypervisor è completa, il sistema operativo ospite non si accorge di

essere in un ambiente virtuale, per cui opera sulle risorse che gli vengono

assegnate come se fossero quelle di un’ipotetica macchina fisica sottostante e non

risorse emulate.

Virtualizzazione assistita dall’hardware (hardware assisted virtualization): la

virtualizzazione è supportata da soluzioni hardware apposite, ad esempio un

processore la cui architettura consente l’impiego di istruzioni speciali che

favoriscono questa funzionalità e consentono al sistema ospite di inoltrare

Figura 3 Struttura di un server virtualizzato http://sp.parallels.com/

Page 12: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

12

chiamate direttamente al livello fisico. Questo approccio consente di incrementare

notevolmente le prestazioni globali del sistema.

Paravirtualizzazione (paravirtualization): l’hypervisor non esegue una

virtualizzazione completa dell’hardware ma espone piuttosto un’interfaccia

modificata alle macchine virtuali, composta da API4 (Application Programming

Interface) appositamente progettate e accessibile in maniera diretta dalle stesse.

In sintesi la paravirtualizzazione non mira a creare un’emulazione dell’hardware di

un server fisico ma a regolare l’utilizzo delle sue risorse da parte delle VMs.

Tuttavia questo metodo può comportare una modifica del kernel5 del sistema

operativo ospite.

Esistono inoltre soluzioni per la virtualizzazione non basate sull’uso dell’hypervisor ma su

un sistema operativo ospitante condiviso, che permette di replicare le proprie funzionalità

direttamente sui sistemi operativi ospiti senza che essi debbano compiere chiamate che

coinvolgono più livelli. In questo caso il sistema operativo ospite è vincolato ad essere

dello stesso tipo di quello ospitante.

4 API: un Interfaccia di Programmazione di un’Applicazione consiste in un insieme di procedure disponibili al

programmatore che consentono l’interazione semplificata con l’applicazione. 5 Kernel: rappresenta il nucleo di un sistema operativo e ha il compito di fornire ai processi un accesso

controllato all’hardware sottostante.

Page 13: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

13

Capitolo 2: Piattaforme di Cloud Computing

2.1 OpenStack

OpenStack è un progetto open source nato nel 2010 dalla collaborazione tra la Nasa e

Rackspace Cloud, la sua rapida crescita è dovuta ai contributi provenienti dalla vasta

community, che comprende un gran numero di sviluppatori e importanti aziende dell’ICT.

Si tratta di un sistema operativo cloud, scritto in Python e rilasciato sotto licenza Apache

2.0, modulare, in grado di controllare un esteso bacino di risorse di calcolo,

memorizzazione e di rete secondo il modello IaaS. La sua potenza risiede soprattutto

nell’essere estremamente flessibile, offrendo supporto ad un gran numero di hypervisor e

fornendo numerose estensioni e API.

2.1.1 Struttura

La struttura di OpenStack è composta da diversi blocchi, che vengono inseriti in

successione con l’evoluzione del progetto. Il suo nucleo è costituito da tre moduli

fondamentali, Compute, Network e Storage, accessibili e gestibili mediante un pannello

raggiungibile da web browser, chiamato Dashboard.

Page 14: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

14

In particolare, per tracciare una panoramica del sistema, si descrive il ruolo che ha ogni

servizio all’interno dell’infrastruttura [7]:

Compute (Nova): è uno dei moduli senior dell’intera piattaforma e quello

predisposto a controllarla. Gestisce istanze di macchine virtuali, occupandosi della

loro allocazione sulle macchine fisiche (modulo nova-scheduler) e del loro ciclo di

vita, comunicando con l’hypervisor installato su queste ultime (modulo nova-

compute). In particolare, gli utenti che vogliono creare istanze di VMs chiamano

l’API di Nova attraverso l’API di OpenStack o tramite richieste API di Amazon

EC2, a questo punto i demoni Nova (worker daemons) scambiano informazioni

tramite una coda di messaggi e il database per esaudirle.

Storage (Swift): è l’altro modulo senior della piattaforma e quello predisposto alla

memorizzazione. Il ruolo di questo componente è di consentire un’archiviazione

di oggetti scalabile e ridondante, similmente al servizio di Amazon AWS S3. Per

assicurare queste due proprietà, Swift scrive repliche di ogni oggetto in server di

storage collocati in zone diverse, ossia raggruppamenti di server isolati gli uni

dagli altri per prevenire guasti e controllare il surriscaldamento. Il numero di

repliche per ogni oggetto e zone è configurabile.

Network (Neutron): è il modulo specializzato nelle comunicazioni di rete,

inizialmente molti dei suoi compiti erano svolti da Nova (nova-network), ma poi si

è deciso di raggruppare le sue funzionalità in un modulo a parte. Fornisce modelli

Figura 4 Struttura semplificata di OpenStack www.openstack.org

Page 15: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

15

di rete flessibili per soddisfare i bisogni delle più disparate applicazioni e gruppi di

utenti, occupandosi anche, attraverso l’installazione di apposite estensioni, della

sicurezza di rete e del load balancing.

Dashboard (Horizon): è l’interfaccia web con cui dialoga l’utente, anche se spesso,

molti cloud providers che utilizzano OpenStack, preferiscono implementarne una

propria, perché è la componente della piattaforma più esposta all’esterno e

direttamente visibile al cliente.

La struttura globale del progetto è visibile nella figura sottostante e prevede altre

funzionalità che sono state integrate nel tempo, la comunicazione tra esse avviene tramite

scambio di messaggi.

Gli altri servizi, collocati sotto il nucleo principale, com’è possibile distinguere dalla

figura 4, sono chiamati Open Stack Shared Services e sono:

Identity (Keystone): gestisce meccanismi per l’autenticazione, presentando, in

quest’ambito, un’ampia gamma di soluzioni.

Image (Glance): è il servizio di gestione delle immagini virtuali.

Block Storage (Cinder): è il modulo che si occupa del salvataggio dei dati su

volumi a blocchi, in precedenza era un servizio di Nova (nova-volume).

Figura 5 Struttura globale di OpenStack http://www.html.it

Page 16: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

16

2.1.2 Elasticità

OpenStack è progettato per garantire l’elasticità tramite scalabilità orizzontale, bilanciando

il carico tra gruppi di servizi funzionalmente identici, che comunicano tra loro tramite

scambio di messaggi, ad esempio nodi nova-compute o nova-api, che come suddetto sono

quelli che si occupano della creazione, eliminazione e controllo delle istanze VMs.

Le decisioni sulla scalabilità sono intraprese in base alla tipologia di macchina virtuale da

utilizzare, da questo punto di vista, OpenStack permette sia di definire dei modelli (flavor)

personalizzabili di VM scegliendo quindi la quantità di core virtuali, di RAM, di capacità

di memoria, sia di avvalersi dei flavor predefiniti.

OpenStack offre anche alcune funzionalità che consentono la scalabilità verticale, come

l’API Resize Server [5], che converte, su richiesta dell’utente, un’istanza di VM

preesistente a un flavor differente sia per potenziarla sia per eseguire l’operazione inversa.

La VM, su cui viene effettuato il ridimensionamento, viene salvata, affinché possa essere

ripristinata (rollback) in caso di malfunzionamento successivo alla trasformazione. Il

sistema non elimina la macchina virtuale, finché l’utente non conferma l’operazione di

conversione, cosa che avviene automaticamente se l’operazione non viene annullata e si

raggiunge un tempo limite, solitamente di ventiquattro ore.

Questo meccanismo però consente solo l’elasticità verticale ed è un’operazione che non si

presta a essere automatizzata, avviene infatti su richiesta e successiva conferma, purché

non siano utilizzati servizi esterni e script appositi.

Nella release Havana è stata studiata un’interessante funzionalità di scalabilità

automatica, che tuttavia richiedere ancora di essere ben sviluppata, grazie all’integrazione

tra due moduli aggiuntivi di OpenStack [5]:

Orchestration (Heat): implementa un motore di coordinamento per istanziare,

gestire e configurare gruppi di istanze VMs, rappresentate da modelli (templates) e

utilizzando i flavor esistenti, con un semplice comando.

Telemetry (Ceilometer): permette il monitoraggio delle risorse all’interno

dell’infrastruttura. Inizialmente alcune sue funzioni erano usate con lo scopo di

misurare i servizi utilizzati dal consumatore per stabilirne i costi. In seguito le sue

Page 17: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

17

funzionalità sono state ampliate, introducendo la possibilità di creare allarmi,

basati sui valori registrati e compiere quindi delle specifiche azioni.

La collaborazione tra questi due componenti permette di sviluppare logiche di autoscaling,

si utilizza ad esempio Ceilometer per registrare il carico di lavoro della CPU all’interno

dell’infrastruttura ed associare azioni quando si raggiunge una certa soglia, come

istanziare un gruppo di VMs o terminarlo con Heat.

Un’altra funzionalità introdotta di recente, anch’essa da perfezionare, riguarda l’utilizzo

delle cosiddette “cells” [5], che permettono di scalare l’infrastruttura cloud in maniera

ancora più semplice e distribuita.

In pratica, le macchine fisiche in un’infrastruttura cloud possono essere partizionate in

gruppi chiamati cells, la traduzione più vicina può essere cellule. La struttura di

quest’assembramento è fatta ad albero, la cell al vertice (API cell) è rappresentata da un

server fisico, che è l’unico a eseguire il servizio nova-api, ma non nova-compute. Le

cellule figlie eseguiranno tutti i servizi nova tipici, incluso compute e quelli riguardanti

code di messaggi e database, eccetto però nova-api. La comunicazione tra cellule figlie e

API cell avviene tramite il servizio nova-cells, presente indipendentemente dalla gerarchia,

che si occupa anche di coordinare lo scheduling tra le cellule e quello effettuato

normalmente dal nova-scheduler.

2.2 VMware vSphere e vCloud

VMware vSphere (vSphere 5), erede di VMware Infrastructure, è un sistema operativo per

il Cloud Computing, in altre parole una suite di strumenti software a pagamento, che

consente di trasformare un’infrastruttura informatica (IT infrastructure) in una piattaforma

cloud privata, con i suoi servizi tipici.

2.2.1 Struttura

L’architettura di vSphere comprende diversi componenti che collaborano tra loro per

garantire due tipologie di servizi [8]:

Page 18: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

18

Servizi per le applicazioni: un insieme di funzionalità fornite per assicurare la

continuità, la sicurezza, la scalabilità, la tolleranza agli errori di tutte le

applicazioni eseguite su vSphere, indipendentemente dalla tipologia di

applicazione e dal sistema operativo usato sulla VM.

Servizi per l’infrastruttura: l’insieme degli elementi che consentono la

virtualizzazione e la gestione ottimale delle risorse hardware e comprendono

servizi di calcolo, storage e rete.

I due pilastri di vSphere sono [8]:

vSphere vCenter Server: è il centro di controllo dell’intera infrastruttura virtuale.

Aggrega le risorse hardware dei vari server fisici sui quali è installato l’hypervisor

ESXi (ESXi host), presentando all’amministratore di sistema un’unica collezione di

Figura 6 Componenti di vSphere http://www.ki.agh.edu.pl/

Page 19: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

19

risorse dinamiche da assegnare alle VM nell’ambiente virtuale. Tra gli elementi

costitutivi di vCenter Server, si ha un meccanismo per il controllo degli accessi

utente (User Access Control) e dei relativi permessi, un set di servizi essenziali

(Core Services), che vanno dalla gestione e configurazione delle VM sugli host,

alla raccolta di statistiche sugli elementi dell’infrastruttura e l’impostazione di

allarmi, fino alla pianificazione di determinate azioni, periodiche e non. Gli utenti

si connettono al vCenter Server attraverso un’interfaccia chiamata vServer Client,

di cui è disponibile anche una versione accessibile da web browser vServer Web

Client.

vSphere ESXi: è un hypervisor di tipo bare-metal, installabile quindi direttamente

sull’hardware dei singoli server fisici (host) che compongono l’infrastruttura.

ESXi sostituisce la precedente versione dell’hypervisor ESX, un sistema operativo

vero e proprio basato su Linux Red Hat, che richiedeva frequenti aggiornamenti e

un notevole dispendio in termini di risorse. La nuova versione si configura

comunque come un hypervisor nativo ma è molto più leggera, priva della Service

Console, utilizza strumenti di gestione remota invece della linea di comando locale

e integra tutti gli agenti VMware direttamente nel kernel (VMkernel).

L’altro elemento che completa il quadro delle soluzioni cloud di VMware è vCloud

Director, uno strumento software progettato per raggruppare le risorse dell’infrastruttura

virtuale creata tramite vSphere in data center virtuali (vDC), le cui risorse sono offerte ai

consumatori in qualità di servizi catalogati. In pratica gli amministratori dell’infrastruttura

possono raggruppare i clienti in organizzazioni (organization), che rappresentano ad

esempio un gruppo con una determinata policy di accesso ai servizi, come unità aziendali,

divisioni o società sussidiarie. Ogni organizzazione ha le proprie risorse virtuali isolate

tramite il vDC (organization vDC), una propria autenticazione sicura, specifiche politiche

di controllo e cataloghi unici, facendo sì che si venga a creare un ambiente multi-tenant6,

dove più elementi condividono la stessa infrastruttura.

6 Multi-tenant: traducibile come co-proprietario, ossia un’architettura in cui un’applicazione software partiziona

virtualmente i suoi dati e la sua configurazione in modo che ogni client lavori con una sua istanza personalizzata.

Page 20: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

20

Il vDC fornitore (provider vDC) introduce nell’architettura vCloud un livello di astrazione

addizionale, che si interpone tra la strutturazione delle risorse al livello vSphere e quella

del vDC dell’organizzazione, permettendo di configurare quest’ultimo secondo diversi

modelli di allocazione delle risorse:

Pay-as-you-go model: il vDC viene mappato su un pool di risorse senza limitazioni

e queste sono assegnate solo quando viene eseguita un’applicazione nel vDC.

Allocation-pool model: solo una percentuale delle risorse allocate sono affidate al

vDC dell’organizzazione.

Reservation-pool model: tutte le risorse allocate sono affidate al vDC.

2.2.2 Elasticità

VMware utilizza diversi meccanismi per garantire l’elasticità all’interno dell’infrastruttura

cloud vSphere, quello principale è il DRS (Distributed Resource Scheduler) [6], che si

occupa di amministrare la capacità computazionale derivante da una collezione di risorse

informatiche, organizzate in raggruppamenti logici (resource pools), monitorandone

l’utilizzo e assegnando quelle disponibili alle VM, secondo una logica prioritaria e che

riflette i bisogni dell’attività aziendale.

I pool di risorse possono essere organizzati gerarchicamente, infatti l’amministratore della

struttura può stabilire come queste devono essere distribuite tra gruppi di VM, ad esempio

un ramo dell’azienda potrebbe aver bisogno di più capacità computazionale rispetto a un

altro, così il DRS garantisce che questa necessità sia soddisfatta. Tuttavia se quella

capacità non viene sfruttata, può essere resa comunque disponibile ad un altro pool

dell’host. Le VM possono essere aggiunte o rimosse da un pool di risorse, oppure è

possibile assegnare una VM preesistente a un nuovo raggruppamento, favorendo così la

scalabilità orizzontale e la dinamicità.

Oltre a raggruppare le risorse di un singolo host in pool, vSphere prevede un ulteriore

raggruppamento per migliorare le politiche di allocazione delle VM e di flessibilità in

generale: i VMware DRS cluster.

Un DRS cluster è una collezione di host su cui è installato l’hypervisor ESXi e delle

Page 21: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

21

relative VMs, con risorse condivise e un’interfaccia di gestione condivisa. Se il DRS è

abilitato sul cluster, allora esegue periodicamente il bilanciamento del carico all’interno

del raggruppamento, procedendo a una redistribuzione, automatica o manuale, delle VMs

tra gli host tramite migrazione (vMotion), in maniera veloce e garantendo la continuità del

servizio. E’ possibile aggiungere o rimuovere sia host, anche se appartenenti ad altri

vCenter Server, che VM al cluster, nel primo caso tutte le VMs e le risorse dell’host sono

aggiunti al cluster.

Quando il carico di una VM aumenta, il DRS valuta prima la sua priorità riguardo

l’allocazione di risorse secondo le policy stabilite e, se giustificato, procede all’aggiunta di

capacità secondo due modalità: migrando la VM sovraccaricata verso un altro host o

liberando spazio su quell’host, ossia predisponendo la migrazione delle altre VM verso

altri host.

Un'altra funzionalità che favorisce l’elasticità dell’infrastruttura è l’Hot Add [6], cioè

l’aggiunta o rimozione di risorse di calcolo, RAM o dischi alle VM “a caldo”, ossia senza

richiederne lo spegnimento, tuttavia questo comporta un aumento dell’overhead

complessivo e non è sempre supportata dal guest OS.

Per quanto riguarda vCloud, dalla versione vCloud Director 5.1 [9], sono stati introdotti

dei cambiamenti che migliorano la flessibilità del sistema, introducendo meccanismi che

consentono di espandere le risorse affidate ad un’organizzazione anche senza implicare la

creazione di nuovi vDC sia per il provider sia per l’organizzazione.

Innanzitutto VMware definisce elastici gli organization vDC, solo se possono attingere

alle risorse di tutti i cluster compresi nel provider vDC.

I vDC delle organizzazioni creati secondo il modello allocation-pool sono elastici di

default, nel senso che è possibile ampliarli utilizzando tutti i pool di risorse associate al

provider o eventualmente aggiungendone altri, inoltre le VM del vDC possono

condividere le risorse inutilizzate. Nel modello pay-as-you-go, invece, ogni VM è

un’entità a se stante, ovvero non può condividere le risorse di altre istanze e ha dei limiti

specifici. In questo caso il vDC dell’organizzazione può essere esteso aggiungendo

resource pool al provider, ciò consente la creazione di altre macchine virtuali.

Page 22: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

22

Capitolo 3: Cloud Providers

3.1 Amazon Web Services

AWS (Amazon Web Services) si identifica come un ampio set di servizi di calcolo,

memorizzazione, database, rete, applicativi, comprendenti sia funzionalità di tipo IaaS sia

PaaS, offerti e amministrati tramite un’interfaccia web comune, la AWS Management

Console. La piattaforma di servizi era utilizzata in precedenza solo da Amazon, per

supportare la propria attività, fino a quando, nel 2006, l’azienda non decise di estendere il

suo utilizzo all’esterno sotto forma di servizi a pagamento.

3.1.1 Panoramica

La rete di data center di Amazon è suddivisa in regioni e zone di disponibilità, le prime

sono vere e proprie aree geografiche, le seconde rappresentano i siti, isolati tra loro, in cui

sono collocati i data center all’interno di una stessa regione e servono per garantire,

attraverso la ridondanza, tolleranza ai guasti e continuità del servizio.

Amazon permette quindi di scegliere la regione in cui vogliamo acquistare i nostri servizi,

naturalmente più è vicina la regione e minore sarà la latenza e quindi il tempo di risposta

del server, inoltre i prezzi dei servizi variano anche in base alle regione.

Il numero di servizi che fanno parte di AWS cresce molto velocemente, è possibile

raggrupparli in [10]:

Compute: sono inclusi tutti i servizi legati alle risorse di calcolo, che consentono

quindi di istanziare e gestire server virtuali nell’infrastruttura cloud, il più

importante è Amazon EC2 (Amazon Elastic Compute Cloud).

Page 23: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

23

Storage & Content delivery: riguarda funzionalità per la memorizzazione di grandi

moli di dati, backup, file multimediali e collegamenti tra cloud e data center

aziendale.

Database: per la gestione di diverse tipologie di database.

Networking: ciò che riguarda le risorse di rete, come ad esempio la funzione DNS

per rendere accessibili le nostre istanze all’esterno in maniera semplice.

Administration & Security: include compiti di controllo degli accessi,

monitoraggio risorse e gestione di allarmi e azioni automatiche.

Deployment & Management: per l’esecuzione e lo sviluppo di applicazioni, la

creazione di template per la configurazione automatica di un certo ambiente

software.

Analytics: utilizzato per l’analisi di dati basata sulla distribuzione del carico del

lavoro e per la comunicazione di questi agli altri servizi AWS.

Application Services: comprende applicazioni specifiche già fornite senza la

necessità di dover acquistare istanze o storage.

Mobile Services: include servizi utilizzabili da applicazioni mobile per compiere

attività specifiche.

Enterprise Services: qui troviamo funzioni per la produttività e la virtualizzazione

di ambienti desktop.

Amazon fornisce soluzioni di pagamento per i propri servizi estremamente adattabili alle

esigenze del cliente, ad esempio per il servizio di calcolo EC2 si evidenziano diverse

opzioni di acquisto e un’ampia scelta di tipologie di istanza, come i flavor di OpenStack.

Il cliente può scegliere innanzitutto fra tre modelli di prezzo per servirsi di una istanza di

VM [12]:

Istanze On-Demand: il cliente può pagare l’istanza secondo una tariffa oraria,

senza impegni a lungo termine, questo permette di ottimizzare le risorse per il

fornitore e ridurre notevolmente i costi per progetti a breve termine del cliente.

Istanze Riservate: queste istanze sono utili per chi farà un utilizzo continuativo

della capacità elaborativa fornita, ad esempio per chi ha bisogno di server

Page 24: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

24

accessibili ventiquattro ore al giorno. In questo caso Amazon prevede la

possibilità di pagare una quota del costo totale in anticipo e poi il resto

mensilmente o di pagare tutto in anticipo, oppure pagare solamente a scadenza

mensile senza anticipo. Il prezziario sottolinea la percentuale di risparmio che si

ottiene utilizzando istanze riservate rispetto a quelle on-demand, quando se ne fa

un uso costante nel tempo.

Istanze Spot: il costo in questo caso varia periodicamente e in maniera direttamente

proporzionale alla richiesta di istanze di questo tipo. Il cliente può fare un’offerta

sul prezzo massimo che intende pagare per un’istanza o per un gruppo di queste,

specificando tutte le caratteristiche (e.g. zona di disponibilità, regione, numero di

istanze, tipo) e se questa è maggiore rispetto al prezzo Spot attuale, allora la

richiesta è soddisfatta.

I prezzi delle istanze sono legati anche al SO di cui è dotata l’istanza, le scelte variano da

Microsoft Windows con o senza SQL Server, a Linux e le versioni Red Hat Enterprise e

SUSE Enterprise Server. Le VMs messe a disposizione sono di diverso tipo, adatte a

molteplici contesti, casi d’uso e possono essere suddivise in due famiglie: a prestazione

fissa e variabile. Le prime sono usate in ambienti in cui è richiesta una capacità di calcolo

costante e alta, per le seconde invece è stato progettato un sistema a crediti CPU, che

vengono accumulati quando la macchina è sottoutilizzata e sfruttati quando ci sono picchi

di carico, determinando così l’incremento delle sue prestazioni. Oltre a questa

classificazione generale si hanno poi macchine specializzate nel calcolo, nella

memorizzazione, nelle risorse di rete o macchine adatte a più scopi.

3.1.2 Elasticità

Uno dei pilastri di AWS è il componente di calcolo Amazon EC2 (Amazon Elastic

Compute Cloud), la parola “elasticità” è parte integrante del suo nome, si identifica infatti

come un servizio web che fornisce capacità computazionale dinamica, ossia

ridimensionabile secondo le esigenze del cliente.

Oltre alle offerte analizzate nel paragrafo precedente, che garantiscono una certa

Page 25: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

25

flessibilità nelle funzionalità acquistabili dal cliente, Amazon offre un servizio di Auto

Scaling [11] gratuito, che è parte integrante di AWS.

Questo servizio permette di impostare una scalabilità, o meglio elasticità, orizzontale

automatica, ossia di aumentare o diminuire il numero di istanze EC2 all’interno

dell’architettura della nostra applicazione, utilizzando i cosiddetti gruppi di auto scaling

(Auto Scaling groups). Un gruppo non è altro che una collezione di istanze EC2 con una o

più politiche di scalabilità definite dall’utente (Auto Scaling Policies), che specificano

quando lanciare o terminare VMs. La funzionalità di scalabilità automatica si occupa

anche di individuare (health checks) e sostituire istanze EC2 mal funzionanti con altre

uguali in maniera autonoma (fault tolerant) ed è inoltre possibile far sì che siano utilizzate

dal servizio più zone di disponibilità e sottoreti, in modo che se una di queste diventasse

improvvisamente inutilizzabile, si sfrutterebbe immediatamente un’altra zona per garantire

la continuità del servizio (highly available).

Il servizio di Auto Scaling si integra con altri due servizi, uno per il bilanciamento del

carico (Elastic Load Balancing) [11] e l’altro per monitorare l’utilizzo delle risorse e

lanciare allarmi (Amazon Cloud Watch) [11].

Figura 7 Struttura di Amazon EC2 www.slideshare.com

Page 26: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

26

L’integrazione con CloudWatch consente di impostare una scalabilità dinamica, ovvero

definire logiche di elasticità basate sul monitoraggio delle risorse. In pratica, si monitora

la risorsa di interesse, impostando un allarme e una conseguente azione da effettuare,

quando il suo valore supera una certa soglia. Nel caso d’interesse l’azione consisterà

nell’inviare avvisi al servizio di Auto Scaling, il quale eseguirà le istruzioni della policy

definita per il gruppo di istanze, nella maggior parte dei casi terminare delle VMs (scale

in) o lanciarle (scale out). In questi casi è importante scegliere il valore per il quale il

servizio di Auto Scaling sospenderà ogni attività di scalabilità (Auto Scaling Cooldown),

per far sì che non vengano lanciate altre istanze prima che quelle precedenti si attivino.

Bisogna tenere presente che il numero di istanze minimo e massimo di cui può essere

composto il gruppo di scalabilità è specificato inizialmente nella sua configurazione e

utilizzando la scalabilità dinamica, questo numero sarà sempre contenuto entro i limiti

definiti.

L’utente comunque può intervenire in ogni istante per modificare manualmente i suddetti

limiti, Amazon fa riferimento in questo caso a una scalabilità di tipo manuale.

L’altro servizio che può collaborare con l’Auto Scaling è quello di Elastic Load

Balancing, fornito principalmente per distribuire automaticamente il traffico in entrata tra

istanze EC2 multiple ma si occupa anche di altre funzionalità. Infatti nel caso in cui

un’istanza risulti compromessa (unhealthy), il bilanciatore provvede a isolarla e a dirottare

il traffico verso altre istanze, finché non è ripristinata e lo stesso meccanismo viene

applicato anche per le zone di disponibilità all’interno di una regione. Un’altra funzione

espletata da questo servizio concerne la sicurezza della rete, infatti il Load Balancer si

interpone tra la rete Internet esterna e quella privata in cui si trovano le istanze,

analizzando il traffico e occupandosi del lavoro di cifratura e decifratura al posto delle

VMs. Per fare ciò bisogna creare dei gruppi di sicurezza (security groups) ai quali

aggiungere le istanze, essi agiscono da firewall virtuale, permettendo o no il traffico

secondo regole predefinite.

La sua integrazione con il servizio di scalabilità automatica permette di migliorare la

Page 27: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

27

gestione del carico verso i server e definire condizioni ancora più specifiche per aumentare

o diminuire il numero di istanze, ad esempio se la latenza del bilanciatore eccede un certo

valore di soglia, è opportuno aggiungerne altre.

3.2 Microsoft Azure

Azure è la piattaforma cloud Microsoft, in altre parole una raccolta di servizi di calcolo,

archiviazione, rete e app in continua crescita. Inizialmente fu concepita con sole

funzionalità di tipo PaaS, probabilmente per non scontrarsi col gigante dei servizi IaaS

Amazon AWS, ma pian piano ha inglobato nella sua sfera di interesse anche la fornitura di

strumenti di gestione dell’infrastruttura cloud.

3.2.1 Panoramica

Il numero di servizi che fanno parte della piattaforma cresce molto velocemente, quelli

principali sono tre [13]:

Siti Web: è una soluzione di web hosting PaaS che consente di realizzare siti e

applicazioni web nel cloud, liberando l’utente da compiti di gestione

dell’infrastruttura sottostante, che richiedono competenze specifiche e possono

risultare impegnativi. Microsoft dà al cliente la piena libertà di utilizzare gli

strumenti di sviluppo e i linguaggi di programmazione preferiti e fornisce anche la

possibilità di creare siti da una galleria di modelli preinstallati delle applicazioni

più famose. Il rilascio (deployment) di un sito web è assimilabile a una semplice

operazione di copia remota e può essere eseguito tramite diversi strumenti messi a

disposizione (e.g. protocollo FTP, servizio Web Deploy, repository Git,

sincronizzazione Dropbox, pubblicazione TFS). Siti Web si basa essenzialmente su

Servizi Cloud e Macchine Virtuali di Azure e può essere eseguito sia su un set di

VMs singole, che possono contenere molteplici siti web di altri utenti, sia su VMs

dedicate.

Servizi Cloud: offre una piattaforma (PaaS) per il supporto e lo sviluppo di

applicazioni scalabili e affidabili, eliminando i problemi riguardanti la gestione

Page 28: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

28

della stessa, permettendo così ai programmatori di concentrarsi unicamente sulla

propria attività. Anche Servizi Cloud si basa su Macchine Virtuali di Azure,

offrendo, per queste, due opzioni diverse: istanze di ruoli web (Web Roles), che

eseguono una versione di Windows Server con IIS (Internet Information Services)

e istanze di ruoli di lavoro (Worker Roles) senza IIS. Le applicazioni di questo

servizio solitamente utilizzano una combinazione di queste istanze, sfruttando

magari i ruoli web per la gestione delle richieste in arrivo dagli utenti e i ruoli di

lavoro per elaborarle.

Macchine Virtuali: è la funzionalità IaaS di Azure che consente di creare

un’infrastruttura cloud, creando e configurando VMs attraverso il Windows Azure

Management Portal oppure l’API di Gestione Servizi di Azure basata su REST,

fornendo in quest’ultimo caso anche strumenti di scripting client specifici per la

maggior parte dei SO.

La creazione di una VM richiede oltre alla scelta del tipo, che come negli altri casi

è un modello con una certa configurazione di risorse virtuali, anche la creazione di

un disco rigido virtuale (VHD), personalizzato o selezionato dalla raccolta

Microsoft, con il relativo sistema operativo. Le macchine virtuali possono essere

raggruppate in un unico servizio cloud, ossia gli utenti possono accedervi

attraverso un unico IP pubblico, poi Azure si occuperà di smistare il carico tra le

istanze di un’applicazione con il servizio di Load Balancing offerto.

Per garantire la tolleranza agli errori e la continuità di servizio è poi possibile

smistare le istanze del servizio in più set di disponibilità. Il pagamento della VM è

orario, inizia quando l’istanza è in esecuzione e termina quando è rimossa.

3.2.2 Elasticità

Azure fornisce la possibilità di scalare applicazioni che eseguono ruoli web o ruoli di

lavoro e macchine virtuali, in maniera automatica o manuale [13]. Per scalare

un'applicazione con istanze di ruoli web o ruoli di lavoro, sono aggiunte o rimosse istanze

dei rispettivi ruoli per supportare il carico di lavoro. Per configurare la scalabilità di

Page 29: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

29

un’applicazione, le VMs create devono essere aggiunte a un set di disponibilità e possono

essere inizialmente attivate o disattivate, anche se poi questo stato cambierà in base al

carico. La scalabilità è inoltre influenzata dal numero di core totali delle VM usate per

un’applicazione ovvero questa può essere scalata solo entro i limiti di core previsti dalla

sottoscrizione e le VMs del set di disponibilità devono avere le stesse dimensioni.

Microsoft Azure offre un servizio di scalabilità sia manuale tramite il pannello di gestione,

in cui l’utente può specificare se aumentare o diminuire il numero d’istanze entro i limiti

previsti, sia automatica e in questo caso può essere impostata in base all’utilizzo medio

della CPU o in base ai messaggi che arrivano in una coda. Nel primo caso se la

percentuale media di utilizzo della CPU sale o scende oltre le soglie definite, sono create o

eliminate istanze del ruolo o sono attivate o disattivate macchine virtuali da un set di

disponibilità, inoltre è possibile specificare il cooldown e l’aumento o diminuzione del

numero d’istanze per ogni operazione di scalabilità. Per quanto riguarda invece la seconda

modalità, quella basata sui messaggi in coda, se il numero di messaggi della coda,

associata a un ruolo o a un set di disponibilità, sale o scende oltre una soglia specificata,

vengono create o eliminate istanze del ruolo o vengono attivate o disattivate macchine

virtuali da un set di disponibilità. Un caso d’uso tipico per questa modalità è ad esempio

un ruolo di lavoro che deve processare i messaggi presenti in una coda, l’operazione in

questo caso potrebbe anche non essere dispendiosa in termini di utilizzo CPU ma potrebbe

esserlo in termini di tempo. Azure dà anche la possibilità di scalare le risorse collegate

all’applicazione, come ad esempio il database associato a questa. Altra opzione che può

rivelarsi utile è quella di pianificare la scalabilità automatica solo in alcuni orari del giorno

o della notte.

Page 30: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

30

Conclusioni

In questo elaborato sono state affrontate varie soluzioni per quanto riguarda il tema

dell’elasticità nel Cloud Computing, sia in base ad alcune tecnologie orientate alla

costruzione e alla gestione dell’infrastruttura come OpenStack e VMware, sia per le scelte

effettuate da aziende che forniscono direttamente i servizi cloud. Il filo conduttore che

lega tutte le soluzioni è che l'offerta di servizi elastici conviene sia al produttore, che può

ottimizzare l’utilizzo delle sue risorse hardware, magari assegnando quelle inutilizzate ad

altri clienti, che al consumatore, che può ottenere un grande risparmio.

Quello che si evince è che OpenStack è sicuramente un progetto molto interessante, open

source, giovane e in rapida evoluzione, tuttavia i meccanismi di scalabilità automatica

sono stati introdotti solo di recente e presentano ancora alcuni problemi, riscontrati dalla

comunità. Per quanto riguarda VMware, azienda navigata nelle tecnologie di

virtualizzazione, offre delle funzionalità avanzate sotto l’aspetto della flessibilità come il

DRS e l’Hot Add e fornisce un sistema operativo completo che facilita la messa a punto di

un’infrastruttura cloud.

Il gigante del Cloud Computing è Amazon con i suoi servizi AWS, l’elasticità deriva sia

dalle formule di pagamento per i servizi offerti, estremamente adattabili alle esigenze del

cliente, sia dai meccanismi di scalabilità automatica forniti, basati su Auto Scaling,

CloudWatch e Elastic Load Balancer.

In ultimo sono state analizzate le proposte IaaS e PaaS di Microsoft, con Azure, che,

Page 31: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

31

rispetto ad Amazon, ha incentrato dapprima la sua attività su servizi di tipo PaaS per poi

aprirsi anche a soluzioni IaaS con Macchine Virtuali. I metodi di pagamento per le VMs

non contemplano le numerose scelte offerte da Amazon e le funzionalità di scalabilità

automatica non permettono varie opzioni come quelle fornite dall’integrazione tra

CloudWatch e Auto Scaling, è infatti possibile scalare un’applicazione solo in base al

parametro CPU e alle code di messaggi.

Page 32: Scalabilità ed Elasticità in Infrastrutture di Cloud Computing · 5 Capitolo 1: Cloud Computing 1.1 Definizione Il concetto di Cloud Computing abbraccia diversi aspetti, risulta

32

Bibliografia

[1] P. Mell, T. Grance, The NIST Definition of Cloud Computing, Recommendations of

the National Institute of Standards and Technology, 2011.

[2] R. Buyya, J. Broberg, A. Goscinski, Cloud Computing: Principles and Paradigms,

John Wiley & Sons, Inc., 2011.

[3] Wikipedia, Elasticity (Cloud Computing).

[4] Wikipedia, Hypervisor.

[5] Documentazione OpenStack, http://docs.openstack.org/, https://wiki.openstack.org.

[6] Documentazione VMware, https://pubs.vmware.com.

[7] OpenStack: i moduli e l’architettura, http://www.html.it/articoli/openstack-i-moduli-

e-larchitettura/

[8] Panoramica su VMware vSphere 5.1, http://www.netsetup.it/vmware-

vsphere5/panoramica-vmware-vsphere-51

[9] vCloud Director 5.1(.1) Changes in Resource Entitlements (Updated),

http://it20.info/2012/10/vcloud-director-5-1-1-changes-in-resource-entitlements/

[10] Introduzione ad Amazon Web Services, http://www.html.it/articoli/introduzione-ad-

amazon-web-services-2/

[11] Documentazione Amazon AWS, http://docs.aws.amazon.com/

[12] Amazon EC2 introduzione sugli ambienti virtuali in cloud computing,

https://otherplus.com/tech/amazon-ec2/

[13] Documentazione Microsoft Azure, http://azure.microsoft.com/it-it/documentation