VoIP and Hacking | Consulenza Documentazione

Introduzione al Clustering

by admin on Mar.04, 2009, under Linux

Il concetto di cluster è in campo informatico, uno dei paradigmi più ambigui ma intensamente sfruttati. In realtà si tratta di un modello architetturale generale che comprende dei sotto-modelli coi quali non va confuso. Una caratteristica qualificante è quella di apparire all’utente come una singola risorsa computazionale.

I clusters o combinazioni di clusters vengono usati quando sia assolutamente necessario che dati o servizi siano disponibili e/o elaborati il più rapidamente possibile. In tutte quelle situazioni cioè dove vengano richieste caratteristiche di alta disponibilità e/o bilanciamento di carico e/o scalabilità e/o elevatissima potenza di calcolo.

Che cosa è un Cluster?

Nella accezione più comune, un cluster è un sistema composto da due o più singoli computers o sistemi (spesso chiamati “nodi”) che lavorano in stretta sinergia tra loro per eseguire applicazioni o altri compiti. Legittimi motivi alla base dell’adozione di clusters comprendono il desiderio di aumentare l’affidabilita, il bilanciamento di carico oppure le performances computazionali.

Modelli di Clusters

  • I clusters per la High Availability (HA) ed il Failover sono progettati per fornire continuità di servizio (e di relative risorse allocate) attraverso l’uso della ridondanza intrinseca nel sistema.
    I nodi costituenti sono cioè costruiti in maniera tale da ridondare quelle componenti hardware il cui guasto potrebbe risultare bloccante per l’intero sistema.L’idea alla base è che se un nodo nel cluster fallisce, le applicazioni o servizi in esecuzione su tale nodo “migrano” ad un altro nodo. Tali tipi di clusters vengono comunemente usati per servizi di tipo mission-critical: database, mail, file o application servers.
    Questo modello di cluster risponde particolarmente bene alle esigenze di continuità di servizio.

    Meccanismi hardware e software correlati fanno in modo che quando il nodo principale si rende indisponibile, un nodo secondario, fino ad allora in stato di attesa, si riconfiguri per apparire come il nodo principale, immediatamente dopo il verificarsi di tale indisponibilità

    Questo meccanismo richiede algoritmi di clustering efficienti, in grado di rilevare le variazioni nello stato dei sistemi e avviare il processo di riconfigurazione con risposte nell’ordine di poche decine di millisecondi.

  • I clusters Load Balancing distribuiscono il traffico in ingresso o la richiesta di risorse a carico di nodi multipli che eseguano gli stessi programmi. Ciascun nodo nel cluster è in grado di soddisfare le richieste.
    Se un nodo fallisce, le richieste vengono redistribuite tra i rimanenti nodi disponibili. Questo tipo di distribuzione delle richieste viene spesso utilizzato nel web hosting.
    Il concetto alla base à quello di utilizzare un sottosistema di schedulazione delle richieste applicative in grado di reindirizzarle al nodo al momento pi “libero” in grado di soddisfare la richiesta.La combinazione di clusters HA e clusters Load Balancing combina le funzionalità di entrambi tali tipi di cluster, incrementando sia la disponibilità che la scalabilità dei servizi e delle risorse. Questo tipo di cluster viene comunemente usato per servers web, mail, news o FTP.

    E’ possibile classificare in quest’ottica soluzioni di clustering che prendono a prestito caratteristiche da questo e quel modello.
    Si consideri ad esempio un servizio web www.pincopallino.com.
    Se a livello di DNS si trova definito che a quel nome corrispondano tre server fisici (che condividono via NFS la DocumentRoot del servizio web), ogni richiesta di risoluzione del nome potrebbe ricevere una risposta diversa, corrispondente, a rotazione, agli indirizzi dei tre server.
    Successive richieste provenienti dai clients che utilizzino lo stesso caching name server locale verrebbero inviate al medesimo server nell’ambito del TTL predefinito nella risoluzione. Verrebbe in tal modo attuata una forma rudimentale di bilanciamento di carico, rudimentale perchè data la caratteristica del caching DNS si ricadrebbe facilmente in una situazione di sbilanciamento tra i servers. Anche se per assurdo il TTL relativo alla risoluzione dei nomi venisse posto a zero, la granularità necessaria ad un vero e proprio bilanciamento di carico non verrebbe garantita, mentre il servizio di risoluzione diverrebbe esso stesso un collo di bottiglia.

    Più precisamente la forma di clustering appena esaminata si dice basata su un servizio di virtualizzazione dei nomi.

  • I clusters Distributed Processing e Parallel Processing servono principalmente a incrementare (mantenendo al contempo parzialmente la caratteristica della disponibilità le performances per le applicazioni, in particolare quelle con gravosi carichi computazionali.
    Un task computazionale viene suddiviso in numerosi tasks pi piccoli ed elaborato di conseguenza da molti piccoli sistemi (i nodi) invece che da un singolo potente sistema.L’interconnessione fra i nodi viene assicurata da una struttura di comunicazione a banda larga e bassa latenza, tipo Myrinet. Per ottenere una bassa latenza viene solitamente utilizzato un protocollo di rete non basato sul TCP/IP, che implicherebbe troppo overhead. Del resto non sussistono particolari problematiche di indirizzamento o di routing, essendo tutti i nodi a priori ben noti.

    Può venire utilizzato anche un meccanismo di condivisione della memoria con accesso diretto fra i vari nodi.

    E’ inoltre presente un livello di comunicazione e scambio di messaggi per la sincronizzazione tra i nodi.

    Il calcolo distribuito non implica parallelismo. E’ il caso ad esempio di openMosix, che permette ad un cluster di computers di apparire come un singolo computer multi-processore e tuttavia, non parallelizza automaticamente i programmi. Ciascun singolo processo viene eseguito solamente su di un computer alla volta.

    Il tipo più comune di cluster a calcolo distribuito e parallelo è il beowulf cluster. Tali clusters vengono spesso usati per simulazioni scientifiche o analisi finanziarie.

    I clusters di tipo Beowulf vengono usati in ambito scientifico, ingegneristico e finanziario nell’ambito di progetti in campi quali reti neurali, meccanica quantistica, dinamica dei fluidi, astrofisica, biologia, analisi genetica, statistica ed economica.
    Ricercatori, enti e compagnie utilizzano clusters per il fatto che essi sono in grado di fornire una pi ampia scalabilità possibilità di gestione, disponibilità o semplicemente la potenza di calcolo di un supercomputer a prezzi più accessibili.

    Un cluster Beowulf può essere definito in senso generale come un numero qualsiasi di sistemi le cui capacità computazionali collettive siano simultaneamente applicate a risolvere uno specifico compito tecnico, scientifico, o finanziario.
    Ciascun computer individuale viene riferito come “nodo”, e i nodi comunicano tra loro tramite networking standard (ead es. 10/100 Ethernet) o networking ad alta velocità (come Myrinet o InfiniBand).

    Un cluster Beowulf è un sistema che utilizza un certo numero di suoi nodi simultaneamente per risolvere uno specifico task computazionale.
    Diversamente dal clustering applicato ai server Internet, che tipicamente distribuisce multiple richieste a nodi differenti (distribuzione del carico), l’ambientee Beowulf impegna la potenza di calcolo di tutti i nodi in un singolo task (anzichè distribuire task multipli a nodi differenti). Ciò rende un cluster Beowulf la scelta pi indicata per applicazioni cpu-intensive, come il calcolo numerico, le previsioni metereologiche, le analisi sismiche.

    Parallel Processing (o elaborazione in parallelo) si riferisce al concetto di velocizzare l’esecuzione di un programma suddividendo tale programma in frammenti multipli, che possano venire eseguiti simultaneamente, ciascuno sul proprio processore. Un programma che venga eseguito attraverso n processori può venire eseguito n volte pi rapidamente che su di un singolo processore.

    Tradizionalmente, il parallel processing veniva realizzato attraverso multipli processori all’interno di un computer appositamente progettato per l’elaborazione parallela. Si tratta di sistemi in cui i processori multipli condividono una singola memoria e uno stesso bus in un singolo computer.
    Diventa anche possibile per un gruppo di computers (per esempio, un gruppo di PCs ciascuno dotato di s.o. Linux) venire interconnessi da una rete per formare un cluster per il parallel-processing (per l’appunto un cluster Beowulf).

  • Send post as PDF to PDF | PDF Creator | PDF Converter
    :

    Comments are closed.

    Cerchi qualcosa in particolare?

    Usa il form qui sotto per cercare nel sito:

    Blogroll!

    Alcuni links...

    Archives

    Tutte le entries, in ordine cronologio...