i sistemi distribuiti - dipartimento di informaticadisys/sidys8architetture14_b.pdf · 1 cdl...
TRANSCRIPT
1
CdL MAGISTRALE in INFORMATICA A.A. 2014-15
corso di “Sistemi Distribuiti”
8. Le architetture (seconda parte) Prof. S.Pizzutilo
I Sistemi Distribuiti
Un Sistema Distribuito è un insieme di processori indipendenti (con proprie risorse HW/SW) interconnessi da una rete di comunicazione, che cooperano per condividere alcune delle risorse ovunque distribuite.
! Stili Architetturali della interazione tra componenti ! Architetture di sistema ! Tipi di Sistemi Distribuiti
Architettura di un Sistema Distribuito = numero, tipo ed interazioni delle componenti (software/hardware) del sistema.
2
Tipi di Sistemi Distribuiti
Sistemi di calcolo distribuiti: • Cluster • Grid
Sistemi informativi: • Sistemi transazionali • Integrazione di applicazioni aziendali
Sistemi pervasivi: • Sistemi domestici • Sistemi per l’assistenza sanitaria • Reti di sensori • Sistemi Multiagente
Cluster, Grid e Cloud
Un computer CLUSTER è un insieme di computer omogenei connessi tramite una rete con lo scopo di distribuire una elaborazione (parallelizzabile) tra computer componenti il cluster
La tecnologia GRID, a differenza del cluster, prevede la interconnessione tra macchine anche eterogenee per realizzare attività cooperative di calcolo.
Per CLOUD computing si intende un insieme di tecnologie informatiche che permettono l'utilizzo di risorse hardware (storage, CPU) o software distribuite in remoto.
3
CLUSTER
Per realizzare una architettura Cluster occorrono: Ø Un sistema operativo in grado di far funzionare i computer come cluster (per esempio GNU/
Linux, utilizzando OpenMosix). Ø OpenMosix è una patch al kernel GNU/Linux per abilitare la migrazione dei processi.
OpenMosix non ha un controllo centralizzato di tipo master/slave. Ogni nodo agisce come un sistema autonomo, le sue decisioni sono indipendenti e si basano su una conoscenza parziale degli altri nodi.
Ø Hardware di rete ad elevate prestazioni Ø Un algoritmo parallelizzabile
I computer cluster vengono utilizzati per effettuare:
ü Fail-over service o Alta Affidabilità (HA=High Availability) : il funzionamento delle macchine è continuamente monitorato, e quando uno dei due host smette di funzionare l’altra macchina subentra al fine di garantire un servizio continuativo;
ü Load-balancing: è un sistema nel quale le richieste di lavoro sono inviate alla macchina con meno carico;
ü High Performance Computing (HPC): i computer sono configurati per fornire prestazioni estremamente alte. Le macchine suddividono i processi di un job su più macchine. La peculiarità è che i processi sono parallelizzati e che le routine che possono girare separatamente sono distribuite piuttosto essere serializzate .
Tecnologie per il cluster
Il mondo GNU/Linux supporta vari tipi di software per il clustering, come: 1. Beowulf, distcc, MPICH ed altri sono in gran parte applicazioni di clustering molto
specializzate. Il programma distcc fornisce compilazione parallela quando utilizza la GCC
2. Linux Virtual Server, Linux-HA sono cluster con un computer-direttore che permette alle richieste di servizi in arrivo di essere distribuite attraverso i molteplici nodi del cluster.
3. MOSIX, openMosix, Kerrighed, OpenSSI sono cluster sotto ogni punto di vista. Sono stati integrati nel kernel che provvede alla migrazione automatica dei processi tra nodi omogenei. OpenSSI, openMosix e Kerrighed sono implementazioni single-system image.
4. GNU/Linux è attualmente il sistema più utilizzato per il clustering: secondo
Top500 nel 2006 è stato il sistema più usato in assoluto. La piattaforma Microsoft Windows Compute Cluster Server 2003 basata su Windows Server 2003 Standard x64 Edition fornisce elementi per il calcolo ad alte prestazioni, come "Job Scheduler", le librerie MSMPI ed altri strumenti di amministrazione.
4
GRID
La tecnologia GRID viene utilizzata per realizzare attività cooperative di calcolo del tipo:
Ø Storage, GRID architecture layers Ø Data base, Ø Process control Ø HPC,…..
applicazione
collective
resource connectivity
fabric
“a flexible, secure, coordinated resource sharing among dynamic collections of individuals, institution, and resources – what we refer to as a Virtual Organizations”
Un GRID System
Le proprietà fondamentali del grid computing sono il controllo coordinato su larga scala di risorse, appartenenti a diversi domini amministrativi, l'uso di protocolli ed interfacce standard, open e general-purpose che forniscono una gamma di servizi, il supporto ad applicazioni eterogenee, il supporto a Quality of Service(QoS) complessi: tempi di risposta, throughput, disponibilità, affidabilità, sicurezza ed infine la capacità di gestire diversi sistemi contemporaneamente. Dal punto di vista strutturale, un sistema di grid computing richiede:
§ Almeno un server, che gestisce tutte le funzioni amministrative e di controllo per il sistema. Un’altra applicazione e web server (sia fisici che virtuali) forniscono servizi specifici per il sistema.
§ Una rete di computer con particolari software di rete di grid computing. Questi computer agiscono sia come punto di interfaccia per l'utente e come risorse a cui il sistema fa riferimento per le diverse applicazioni.
§ Middleware specifico con lo scopo di permettere ai diversi computer di eseguire un processo o un'applicazione nella rete di macchine.
5
Le Computational GRID sono sistemi distribuiti composti da risorse eterogenee e distribuite geogra f i camente , cooperant i in Vi r tua l Organization dinamiche.
Architettura GRID = “…hardware and software infrastructure that provides dependable, consistent, pervasive, and inexpensive access to high-end computational capabilities.”[1]
[Foster e Kesselman]
[1] I. Foster, C. Kesselman, “The Grid: Blueprint for a New Computing Infrastructure” (1998).
GRID
Struttura di una architettura GRID con relativi protocolli[2]:
Application Collective
Resource Connectivity Fabric
Collective
Resource
Connectivity
Fabric
Application
[2] I. Foster, C. Kesselman, S. Tuecke, “The anatomy of the Grid: Enabling scalable virtual organizations” (2001).
Modello stratificato di un’Architettura GRID
6
ARCHITETTURA GRID
servizi di base e astrazioni fondamentali
uso coordinato di risorse multiple
Modello informale di una architettura GRID
Middleware Collective
Resource
Connectivity
Resources Pool Fabric
Application Application
7
OPEN GRID SERVICE ARCHITECTURE
standardizzazione
• individuazione • allocazione • monitoraggio • rendicontazione e fatturazione • inglobamento in un singolo • sistema virtuale
interoperabilità
• definizione delle interfacce • identificazione dei protocolli (protocol binding)
virtualizzazione
• accesso a piattaforme eterogenee, • mapping di istanze multiple di risorse
logiche nella stessa risorsa fisica, • gestione risorse à composizione
delle risorse ai livelli sottostanti, • mapping nelle facility del sistema.
OGSA
SERVIZIO = entità network-enabled che fornisce una certa funzionalità attraverso lo scambio di messaggi
L’Open Grid Forum (2006) presenta lo standard Open Grid Service Architecture (OGSA)[3] = insieme di norme e specifiche, per lo sviluppo di soluzioni GRID basate su un’architettura service-oriented,
OGSA
Resource Management: Discovery Monitoring Control
Execution Management: Job description & submission Scheduling Resource provisioning
Information Services: Registry Notification Logging/auditing
Data Services: Common access facilities Efficient & reliable transport Replication services
Security: Cross-organizational users Trust nobody Authorized access only
Self-Management: Self-configuration Self-optimization Self-healing
Web Services
[3] A.V. “The Open Grid Services Architecture, Version 1.5”, OGF (2006).
Lo standard OGSA
8
A paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It provides a uniform means to offer, discover, interact with and use capabilities to produce desired effects consistent with measurable preconditions and expectations. [OASIS (Organizzazione per lo sviluppo di standard sull'informazione strutturata) ]
(Service-Oriented Architecture)
An architectural style that supports service-orientation. Service-orientation is a way of thinking in terms of services and service-based development and the outcomes of services. A service: • Is a logical representation of a repeatable business activity that has a specified outcome (e.g., check customer credit, provide weather data,….) • Is self-contained • May be composed of other services • Is a “black box” to consumers of the service [Open Group]
visione logica: SERVIZIO = entità computazionale autonoma ü orientamento ai messaggi ü orientamento alla descrizione ü granularità ü orientamento alla rete ü indipendenza dalla piattaforma ü connessioni stateless
VANTAGGI
ü è possibile determinare le parti attive della SOA in qualsiasi istante
ü i sistemi di sicurezza possono comprendere la semantica della comunicazione
(Service-Oriented Architecture)
9
( Evoluzione di SOA in Internet: i WEB services )
Ø interazioni da macchina a macchina
Ø autodescriventi Ø sistema standard di messaging basato su XML
VANTAGGI:
Ø indipendenza da SO e ling. di programmazione
Ø protocollo HTTP per la trasmissione dei messaggi
SVANTAGGI:
Ø overhead (formattazione XML)
Ø perdita di versatilità (forme basilari per l’invocazione dei servizi)
In informatica un Web Service (servizio web), secondo la definizione data dal World Wide Web Consortium (W3C), è un sistema software progettato per supportare l'interoperabilità tra diversi elaboratori su di una medesima rete ovvero in un contesto distribuito.
Modello informale di una architettura GRID
Application
Middleware
Resources Pool
execution management services
data services
self-management services
resource management services
security services information service
OGSA
waitingJobs
User Job User Job User Job …
10
Dispatcher
JobManager1 JobManager M JobManager 2
Jobs are loaded by Dispatcher module Dispatcher module
submits jobs to Job Manager modules
…
Job1
Job2
JobN
… waitingJobs
Middleware for Execution Management Services
Execution Management Services
Modello informale del Middleware per i Servizi di Execution Management
da … OGSInfrastructure a…Web Services-RESOURCE FRAMEWORK
Ø EVOLUZIONE DEI WEB SEVICES (WSDL 2.0, WS-Addressing,…)
CAUSE:
Ø CRITICHE RIVOLTE A OGSI: troppe funzionalità nella stessa specifica; poca adattabilità agli strumenti esistenti; stato incapsulato nel Web service stesso; problemi di incompatibilità a causa di WSDL 2.0
WSRF: 1) Concetto WS-Resource 2) Separazione delle funzioni
3) Vista più semplice della funzione di notifica
11
SPECIFICHE DEL WSRF
WSRF
WS-Resource: risorsa + Web service
WS-Addressing: indirizzamento tramite Endpoint Reference
WS-ResourceProperties: tipo e valori dei componenti della WS-Resource accessibili dal WS
WS-ResourceLifetime: cancellazione immediata e
“garbage collection”
WS-ServiceGroups: aggregazione di WS a scopi applicativi
WS-BaseFaults: schema XML standard per la rappresentazione dei fault
La erogazione di servizi diversi mediante il WEB si ottiene associando ad una applicazione un'interfaccia software descritta in un linguaggio ( Web Services Description Language ), che espone all'esterno il servizio/i associato/i . Utilizzando questa interfaccia altri sistemi possono interagire con l'applicazione stessa attivando le operazioni qui descritte (servizi o richieste di procedure remote) tramite appositi "messaggi" di richiesta. Tali messaggi di richiesta sono inclusi in una "busta" (SOAP) formattati secondo lo standard XML e trasportati tramite HTTP.
WSDL
12
IL GLOBUS TOOLKIT 4
“standard de facto” per le applicazioni Grid con WSRF
• gestione delle risorse • trasferimento dei dati
• discovery dei servizi
• strumenti per la costruzione di nuovi WS (C, Java e Phyton)
• potente infrastruttura di sicurezza basata su standard
• interfacce per l’accesso a tali servizi
• documentazione
FUNZIONALITÀ
• esigenza di organizzazioni virtuali in ambito scientifico
• superamento della incompatibilità tra le risorse di una griglia
MOTIVAZIONI
IL GT4: ARCHITETTURA E COMPONENTI
ARCHITETTURA
cccccccccccc
COMPONENTI
13
Il CLOUD computing
“Computing is being transformed to a model consisting of services that are commoditized and delivered in a manner similar to traditional utilities such as water, electricity, gas, and telephony. In such a model, users access services based on their requirements without regard to where the services are hosted or how they are delivered. Several computing paradigms have promised to deliver this utility computing vision and these include cluster computing, Grid computing, and more recently Cloud computing.”
Rajkumar Buyya,, Chee Shin Yeo, Srikumar Venugopal, James Broberg , Ivona Brandic “Cloud computing and emerging IT platforms: Vision, hype, and reality for delivering computing as the 5th utility” in Future Generation Computer Systems 25 (2009) 599616
14
Definizioni di CLOUD computing
Il National Institute of Standards and Technology (NIST) [6] : “. . . a pay-per-use model for enabling available,convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, servers, storage, applications, services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.” Armbrust et al. [5] : “data center hardware and software that provide services.” Sotomayor et al. [7] : “cloud” is more often used to refer to the IT infrastructure deployed on an Infrastructure as a Service provider data center”. Caratteristiche comuni delle definizioni su riportate: a) Approccio pay-per-use sulla base delle richieste degli utenti b) Servizi scalabili che danno l’illusione di risorse di calcolo infinite c) Interfaccia self-service adattata al particolare utente d) Astrazione e virtualizzazione delle risorse.
Tratto da W.Voorsluys, J.Broberg, R.Buyya , “Introduction to Cloud Computing” in Cloud Computing:Principles and Paradigms ed.2011 John Wiley &Sons, Inc.
Il CLOUD computing
Le radici tecnologiche del cloud computing dal punto di vista : • dell’hardware (virtualization,
multi-core chips), • di Internet (Web services, service-
oriented architectures, Web 2.0), • dei sistemi distribuiti (clusters,
grids), • e della gestione dei sistemi
(autonomic computing, data center automation).
15
Architettura del Cloud
L’architettura del Cloud computing prevede uno o più server reali (e/o virtualizzati), generalmente in architettura ad alta affidabilità e fisicamente collocati presso il data center del fornitore. Il sistema del Cloud Computing prevede tre utenti distinti: • Il fornitore di servizi (colui che offre servizi come server virtuali, storage,
applicazioni complete ecc, generalmente secondo un modello “pay-per-use”) espone delle interfacce per elencare e gestire i propri servizi che intende erogare.
• Il cliente amministratore utilizza tali interfacce per selezionare il servizio richiesto (ad esempio un server virtuale completo oppure solo storage) e per gestirlo (configurazione, attivazione, disattivazione).
• Il cliente finale utilizza il servizio così configurato. Le caratteristiche fisiche dell’implementazione (server reale, localizzazione del data center) sono irrilevanti.
Non è detto che il cliente amministratore e il cliente finale siano sempre due persone distinte: in determinati casi possono coincidere. Per esempio un cliente può utilizzare un servizio di storage per effettuare il backup dei propri dati, ed è lo stesso cliente che provvede a configurare e utilizzare il servizio.
Gli utenti di servizi di Cloud computing
16
I servizi del Cloud Computing possono essere raggruppati in tre categorie racchiuse all'interno di un gruppo più generico che prende il nome di Everything as a service (XaaS): Ø IaaS che fornisce risorse hardware fruibili dal cliente finale secondo le
proprie necessità, Ø PaaS che fornisce una piattaforma per lo sviluppo di applicazioni
sviluppate dall’utente e Ø SaaS che riesce a fornire le funzionalità di un software applicativo vero
e proprio.
Modelli di Servizi Cloud
Sistemi Informativi distribuiti
• Sistemi transazionali che operano cioè con la logica delle transazioni, ovvero di sequenze di operazioni che godono delle proprietà ACID: - Atomicità: la transazione è indivisibile deve essere o totale o nulla; - Consistenza: una transazione non deve violare eventuali vincoli di integrità, ovvero non devono verificarsi contraddizioni (inconsistency) tra i dati; - Isolamento: ogni transazione deve essere eseguita in modo isolato e indipendente dalle altre transazioni; - Durabilità: detta anche persistenza, si riferisce al fatto che una volta che una transazione ha richiesto un commit work, i cambiamenti apportati non dovranno essere più persi.
• Integrazione di applicazioni aziendali realizzata mediante particolari middleware di comunicazione (RPC,RMI,…) basato sullo scambio di messaggi di tipo client-server (sincrono) o publish-subscribe ( paradigma asincrono di messaggistica) .
Sistemi realizzati per consentire l’integrazione tra diverse applicazioni (o la loro “interoperabilità”)
17
Sistemi distribuiti pervasivi
Ø Sistemi domestici: PDA, smart phone, recommender systems, …..
Ø Sistemi per l’assistenza sanitaria: sistemi Body Area Network
Ø Reti di sensori: Mesh network, reti Manet (Mobile Ad hoc NETwork), ecc…. Una mesh network è una rete di comunicazione senza cavi fatta di nodi (dispositivi con capacità di comunicazione wireless) con al più 2 path di comunicazione tra ciascun nodo.
Sono sistemi distribuiti instabili (nella struttura HW, nelle forme di comunicazione, nella loro posizione, costruiti per rispondere ai problemi dell’ubiquitous computing , del
disappearing computing, del mobile computing, dell’embedded computing.