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

Upload: festival-ict-2016

Post on 23-Jan-2017

308 views

Category:

Technology


0 download

TRANSCRIPT

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