Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed...

21
Definire, configurare, implementare soluzioni scalabili su sistemi di cloud computing. Concetti ed esempi pratici. Ing. Francesco Leoncino

Transcript of Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed...

Page 1: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Definire, configurare, implementare soluzioni scalabili su sistemi di cloud computing.

Concetti ed esempi pratici.

Ing. Francesco Leoncino

Page 2: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Perché usare il Cloud Computing

● Per disporre di ambienti di Testing usa e getta● Per erogare servizi in breve tempo● Per disporre di servizi scalabili● Per disporre di ambienti dedicati senza eccesso di

risorse● Per avere sistemi robusti● Per convenienza economica

Page 3: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Come usare il Cloud Computing

● Prediligere l'utilizzo di più istanze all'aumento di risorse della singola istanza.

● Realizzare applicazioni scalabili orizzontalmente.

● Utilizzare istanze con il miglior rapporto costi/risorse.

● Evitare funzionalità che introducono Lock-in.

Page 4: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Cloud Computing vs Virtualizzazione

Cloud Computing

VirtualizzazioneServer Dedicato

Page 5: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente

● Aggiungere/Eliminare istanze in funzione delle crescere/diminuire delle risorse necessarie

● Il sistema deve supportare la distribuzione su più livelli Applicazione/Sessione/File System/Database

Page 6: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente

ApplicazioneDatabaseFile system

Database

ApplicazioneFile system

Page 7: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente

DatabaseDatabase

ApplicazioneFile system Applicazione

File system

Applicazione

Load Balancer

Page 8: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente

FS1

App1

Load Balancer

Database

Applicazione

File system

Applicazione

Load Balancer

AppN…….

FSNDBNDB1 … …

Page 9: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente LAMP

● Condivisione Sessioni

● MySQL non scala nativamente

Page 10: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente LAMP

possibili STRUMENTI:

● Load balancer: DNS rr/HAProxy

● Sessioni: share rete/DataBase/Memcached

● File system distribuito: GlusterFS/Cloud Storage

● DB SQL: Percona XtraDB

● DB noSQL: MongoDB

Page 11: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente LAMP

HAProxy

● Sistema di load balancing adatto sia a distribuzione di carico sia a sistemi ad alta affidabilità

● Presente nativamente nelle principali distribuzioni GNU/Linux

● Configurazione semplice, ma con un set molto evoluto di funzionalità

● Utile anche per bloccare attacchi

Page 12: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente LAMP

Condivisione SESSIONI● Se sviluppiamo una applicazione da zero, conviene usare

un cookie e gestire le variabili di sessione con proprie librerie. Molto conveniente in questo caso l'utilizzo di DB noSQL che permettono nativamente la distribuzione del carico.

● Alcuni CMS, es. WordPress gestiscono già la sessione su DB

● Se non possiamo intervenire sull'applicazione possiamo utilizzare un percorso condiviso, o intervenire sul manager di sessioni di PHP utilizzando il meccanismo di override delle sessioni e la direttiva auto_prepend_file

Page 13: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente LAMP

File System● Se le richieste verso il file system non sono onerose si

può utilizzare una condivisione NFS.● Se invece richiediamo un maggiore grado di scalabilità è

possibile utilizzare GlusterFS con cui è possibile definire volumi di storage distribuiti sia al fine di ottimizzare l'accesso, sia al fine di ottenere un'altà disponibilità del file system.

● Se l'applicazione lo prevede è possibile utilizzare per i contenuti statici dell'applicazione servizi di cloud storage con protocollo S3.

Page 14: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Scalare orizzontalmente LAMP

Database● MySQL non presenta nativamente un sistema di replica

sincrona.● Sono disponibili diverse soluzioni al problema, una di

queste è Percona XTRADB Cluster che rappresenta una soluzione open source per il clustering attivo/attivo di MySQL.

● Il Cluster integra un motore (Percona server), un sistema di backup (XtraBackup) e la replica multimaster Galera Cluster.

Page 15: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Esempio LAMP

Server AS1, AS2 (Application Server)

2 server web con la seguente index.php

<?php

echo $_SERVER["SERVER_NAME"] . " " . $_SERVER["SERVER_ADDR"];

?>

Page 16: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Esempio LAMP

Applicazione APP1 identica su AS1, AS2

Stessi file su entrambi i server<?phpsession_start();$sess="SESSIONE: " . date("Y-m-d H:i:s");$_SESSION['sessionvar'] = $sess ;

echo "Sessione Impostata: $sess <br>";echo "IP: " . $_SERVER["SERVER_ADDR"] ."<br>";echo '<a href="sess_page2.php">pagina2</a>';?>

<?phpsession_start();$sess=$_SESSION['sessionvar'];echo "Sessione Letta: $sess <br>";echo "IP: " . $_SERVER["SERVER_ADDR"] ."<br>";echo '<a href="sess_page1.php">pagina1</a>';?>

Page 17: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Esempio LAMP

DNS

Page 18: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Esempio LAMP

Configurazione HAProxy

frontend http-in bind *:80 default_backend servers

backend servers server as1 172.16.0.80 maxconn 32 server as2 172.16.0.93 maxconn 32

Page 19: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Esempio LAMP

Applicazione APP1 identica su AS1, AS2

Stessi file su entrambi i serverSessione condivisa tramite network share, in php.ini

session.save_path=/phpsession

La share risiede su un volume gluster in replica su due istanze FS1 e FS1, ed è montato sui due application server.L'utilizzo delle replica Gluster permette di ottenere, oltre alla distribuzione del carico, la tolleranza al guasto di una istanza.

Page 20: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

Esempio LAMP

Sito WordPress

Utilizziamo un'altra netwok share in modo che la il sorgente stesso dell'applicazione sia condiviso. In realtà è meglio condividere solo le parti soggette ad upload.Il database in questo caso è implementato con un Cluster attivo/attivo Percona XTRADB, installato sulle istanze DB1 e DB2che permette di distribuire il carico di accesso fra le due istanze. Il file /etc/hosts viene usato per indicare a ciascun application server a quale db riferirsiIn questo caso non c'è fault tolerance, perché ciascun AS interroga un DB specifico. Può essere implementata attraverso l'inserimento di un ulteriore LB

Page 21: Definire, configurare ed implementare soluzioni scalabili su sistemi di Cloud Computing; concetti ed esempi pratici - by Hosting Solutions - festival ICT 2015

GRAZIE