1) Ubuntu Server "clusterizzato"
bisogna capire clusterizzato in che modo....si condividerà solo lo spazio disco? anche le cpu? e le gpu?
risolvi facilmente con mysql cluster
MySQL :: MySQL Cluster
questo può benissimo girare su una singola macchina, oppure bisogna averne uno installato su ogni macchina con un reverse proxy che dirotta le richieste alle varie macchine del cluster
però così ricadiamo nel caso dei cluster high availability, il che vuol dire che ci vuole altro software accessorio che dirotti le richieste dei client a server specifici
in questo caso devi usare Heartbeat
HomePage: Linux HA
4) Scripting e calcoli in linguaggio PHP
questo è il tipico caso in cui Condor o LinuxMPI sono utili....in pratica lanci tante volte lo stesso script e ovviamente ad ognuna delle copie dello script bisognerà dare solo una parte del lavoro
l'importante è che ogni volta che lanci lo script, viene creato un nuovo processo che viene migrato su uno dei server a seconda del carico sulle cpu
5) CUDA (tecnologia molto interessante) --> per ora dispongo solo di una GeForce 8800 Ultra ma se il vantaggio di far girare i calcoli con questa tecnologia è elevato potrei comprare una scheda, inoltre tra poco Intel farà uscire le Larrabee....
per CUDA il problema è più complesso perchè bisogna lavorare in proprio...in pratica software come Condor distribuiscono il lavoro misurando il carico sulle cpu dei computer che fanno parte del cluster
però quando parliamo di CUDA parliamo di gpu e il carico di una gpu non viene misurato da nessun programma esistente....quindi dovresti scrivertelo da solo un software che distribuisce il lavoro in base al carico sulle gpu
in questo caso il mio consiglio è di comprare un Nvidia Tesla
High Performance Computing (HPC) - NVIDIA Tesla many core parallel supercomputing
tieni presente che una gpu ha una capacità da 100 a 200 volte superiori rispetto ad una cpu nel fare calcoli matriciali....quindi con 4 gpu nvidia è come avere al lavoro 400 cpu intel
nel caso di apache se ho capito bene ti serve semplicemente che le richieste dei client vengano suddivise tra i vari server
in questo caso puoi usare il dns round robin, mettendono invece di un solo campo A tanti campi A ( uno per ogni IP )
Il cluster dovrebbe far girare dei calcoli molto corposi, per darvi un' idea, per fare un calcolo con un Q6700 e 8 GB di RAM, usando la CPU al 100% (ovvero facendo girare 4 programmini alla volta da me creati) con Access e Visual Basic, il mio computer ha impiegato 20 gg (chiaramente è rimasto accesso 20 gg di fila senza mai fermarsi!!).
certamente parliamo di calcoli pesanti, ma io se fossi in te valuterei l'ipotesi di usare un'altra architettura
CUDA ad esempio è un'ottima idea, ma bisogna analizzare il tipo di calcoli che gli farai fare....ad esempio CUDA permette di accelerare i calcoli matriciali, ma se devi per esempio implementare algoritmi di ricerca su stringhe noterai che una cpu è più veloce
quindi a seconda del tipo di lavoro si può scegliere l'una o l'altra
un'ipotesi che butto lì è quella degli fpga....potresti comprare o costruire una scheda basata su una decina di fpga virtex o spartan e creare un computer ad hoc per l'esecuzione degli script che ti interessa
CLUSTER BEOWFUL --> Non so scrivere (e non so quanto sia complicato scrivere codice in parallelo)....anche qui servirebbero degli approfondimenti....
non è molto difficile, bisogna ovviamente, in fase di progettazione, tener conto della sincronizzazione tra i processi/thread, quindi usare semafori e mutex laddove necessario, salvaguardare la consistenza dei dati, ecc...
però usando le librerie mpi, tutta la parte di passaggio di dati e comandi diventa banale
OPENMOSIX --> Allora se ho capito bene.....diciamo che abbiamo 2 quadcore nel cluster, sarebbe come avere un unico computer con 8 core
si, perchè il lavoro viene diviso sui core e sui nodi del cluster
giusto? Quindi se scrivi un programma basterebbe lanciarlo 8 volte per sfruttare tutto il cluster giusto?
esatto, la migrazione avviene a livello di processo...quindi un programma multithread continuerà ad essere diviso fra i 4 core, però rimarrà vincolato a girare sul computer da cui è stato lanciato
i processi invece possono essere spostati sugli altri computer del cluster
Ma quali sono più nello specifico i vantaggi e gli svantaggi di usare una o l' altra soluzione?
nelle architetture beowulf hai il totale controllo sul flusso del programma e sull'allocazione delle cpu
nel caso mosix invece i processi vengono migrati per essere allocati alla meno peggio....però se ad esempio il processore n.3 ha terminato il lavoro e non ci sono altri lavori da svolgere, resterà in idle aspettando che anche gli altri finiscano
nel caso beowulf invece, il programma ( creato da te ) può accorgersi che il processore n.3 è in idle e quindi trasferirgli uno o più jobs da un altro processore che invece è sovraccarico
Mi chiedo inoltre serve una particolare distribuzione di Linux? Mi ricordo che quando avevo messo Centos durante l' installazione c' era un' opzione per il Clustering.... Però mi piacerebbe fare il tutto con Ubuntu Server 9.04 perchè mi riconosce facilmente tutto l' hardware più nuovo...
no, ovviamente puoi usare quella che vuoi....chiaramente alcune distribuzioni sono già predisposte per questo tipo di attività e preinstallano tutti i software necessari
CentOS è una di queste, c'è Rocks Clusters
Rocks Clusters che fornisce tutto out of the box
Nel cluster ogni macchina è a sè stante ovvero ha la sua CPU, la sua RAM, il disco fisso ecc... ovvero è una macchina a tutti gli effetti.
si, l'unica differenza è che mette queste risorse in comune
_ Condor, Openmosix, LinuxPMI e OSCAR sarebbero tutte patch del kernel? Possono essere montate su qualsiasi distribuzione?
alcune sono patch, altri sono demoni, quindi non è necessario modificare per forza il kernel
Condor e OSCAR ad esempio funzionano tramite demoni
non dimenticare questo
Welcome to Apache Hadoop Core!
qui
Gamblers doth Idyl Blog Archive HOWTO: Getting Condor going on an cluster of Ubuntu machines with a custom algorithm. è spiegato come usare Condor
qui
Condor Project Homepage trovi tutte le info su condor, che è il mio preferito :D