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. Architettura di un Sistema Distribuito = numero, tipo ed interazioni delle componenti (software/hardware) del sistema. ! Stili Architetturali della interazione tra componenti ! Architetture di sistema ! Tipi di Sistemi Distribuiti 1 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. 2 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 singlesystem 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. 3 GRID “a flexible, secure, coordinated resource sharing among dynamic collections of individuals, institution, and resources – what we refer to as a Virtual Organizations” La tecnologia GRID viene utilizzata per realizzare attività cooperative di calcolo del tipo: Ø Storage, GRID architecture layers Ø Data base, applicazione Ø Process control Ø HPC,….. collective connectivity resource fabric 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. 4 GRID Le Computational GRID sono sistemi distribuiti composti da risorse eterogenee e distribuite geograficamente, cooperanti in Virtual 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). Modello stratificato di un’Architettura GRID Struttura di una architettura GRID con relativi protocolli[2]: Application Application Collective Resource Connectivity Fabric Collective Resource Connectivity Fabric [2] I. Foster, C. Kesselman, S. Tuecke, “The anatomy of the Grid: Enabling scalable virtual organizations” (2001). 5 ARCHITETTURA GRID uso coordinato di risorse multiple servizi di base e astrazioni fondamentali Modello informale di una architettura GRID Application Application Collective Middleware Resource Connectivity Resources Pool Fabric 6 OPEN GRID SERVICE ARCHITECTURE definizione delle interfacce identificazione dei protocolli (protocol binding) • • interoperabilità OGSA virtualizzazione standardizzazione 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. • • • individuazione • allocazione • monitoraggio • rendicontazione e fatturazione • inglobamento in un singolo • sistema virtuale SERVIZIO = entità network-enabled che fornisce una certa funzionalità attraverso lo scambio di messaggi Lo standard OGSA 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 serviceoriented, Execution Management: Job description & submission Scheduling Resource provisioning Resource Management: Discovery Monitoring Control Data Services: Common access facilities Efficient & reliable transport Replication services Self-Management: Self-configuration Self-optimization Self-healing OGSA Information Services: Registry Notification Logging/auditing Security: Cross-organizational users Trust nobody Authorized access only Web Services [3] A.V. “The Open Grid Services Architecture, Version 1.5”, OGF (2006). 7 (Service-Oriented Architecture) 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) ] 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] (Service-Oriented Architecture) 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 8 ( Evoluzione di SOA in Internet: i WEB services ) 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. SVANTAGGI: VANTAGGI: Ø overhead (formattazione XML) Ø indipendenza da SO e ling. di Ø perdita di versatilità (forme programmazione basilari per l’invocazione dei Ø protocollo HTTP per la servizi) trasmissione dei messaggi Ø autodescriventi Ø sistema standard di messaging basato su XML Ø interazioni da macchina a macchina Modello informale di una architettura GRID User Job User Job … User Job Application waitingJobs Middleware execution management services resource management services self-management services OGSA information service data services security services Resources Pool 9 Modello informale del Middleware per i Servizi di Execution Management Job1 Job2 waitingJobs … JobN Middleware for Execution Management Services Execution Management Services Dispatcher module submits jobs to Job Manager modules JobManager1 Dispatcher JobManager 2 Jobs are loaded by Dispatcher module … JobManager M da … OGSInfrastructure a…Web Services-RESOURCE FRAMEWORK Ø 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 CAUSE: Ø EVOLUZIONE DEI WEB SEVICES (WSDL 2.0, WS-Addressing,…) 2) Separazione delle funzioni 3) Vista più semplice della funzione di notifica 10 SPECIFICHE DEL WSRF WS-Resource: risorsa + Web service WS-Addressing: indirizzamento tramite Endpoint Reference WS-BaseFaults: schema XML standard per la rappresentazione dei fault WSRF WS-ServiceGroups: aggregazione di WS a scopi applicativi WS-ResourceProperties: tipo e valori dei componenti della WS-Resource accessibili dal WS WS-ResourceLifetime: cancellazione immediata e “garbage collection” WSDL 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. 11 IL GLOBUS TOOLKIT 4 “standard de facto” per le applicazioni Grid con WSRF MOTIVAZIONI FUNZIONALITÀ • esigenza di organizzazioni virtuali in ambito scientifico • superamento della incompatibilità tra le risorse di una griglia • 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 IL GT4: ARCHITETTURA E COMPONENTI COMPONENTI ARCHITETTURA cccccccccccc 12 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 13 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. Il CLOUD computing Le radici tecnologiche del cloud computing dal punto di vista : • dell’hardware (virtualization, multi-core chips), • di Internet (Web services, serviceoriented architectures, Web 2.0), • dei sistemi distribuiti (clusters, grids), • e della gestione dei sistemi (autonomic computing, data center automation). Tratto da W.Voorsluys, J.Broberg, R.Buyya , “Introduction to Cloud Computing” in Cloud Computing:Principles and Paradigms ed.2011 John Wiley &Sons, Inc. 14 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 15 Modelli di Servizi Cloud 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. Sistemi Informativi distribuiti Sistemi realizzati per consentire l’integrazione tra diverse applicazioni (o la loro “interoperabilità”) • 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) . 16 Sistemi distribuiti pervasivi 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. Ø 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. 17