Clustering con PVM: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (inserita categoria)
m (versioni compatibili)
 
(13 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
=About MaXeR=
{{Versioni compatibili|Wheezy|Jessie}}
Mi chiamo Claudio, ho 22 anni e studio Informatica presso l'Universit� degli Studi di Verona.
__TOC__


==Contatti==
== Introduzione ==
; Blog : http://www.knio.it
PVM (Parallel Virtual Machine) è un software che permette a diversi computer in rete di essere utilizzati come se fossero uno solo, aggregando le risorse di ognuno per ottenere una capacità computazionale maggiore.<br />
È una soluzione molto più economica e modulare che incrementare la dotazione hardware (CPU, RAM, etc.) di una singola macchina e permette di risolvere problemi molto complessi a costi molto contenuti.<br />
Utilizzato oggi su larga scala, è considerato lo standard per quanto riguarda il calcolo parallelo.


; MaXeR@fsfe.org : http://www.fsfe.org/Members/maxer/
Lo schema di funzionamento è abbastanza semplice: dato un insieme di macchine che si vogliono aggregare in cluster, su ognuna di esse si installerà e configurerà PVM. Ad installazione e configurazione completata, da ciascuna di queste macchine sarà possibile creare una vm cluster aggregando i nodi desiderati.


; MaXeR@persone.softwarelibero.it : http://persone.softwarelibero.org/person/MaXeR
In questa guida verrà trattata la realizzazione di un cluster composto da due macchine: ''node0'' e ''node1''


; em@il : [mailto:maxer@debianizzati.org maxer@debianizzati.org]<br/>[mailto:maxer@knio.it maxer@knio.it]<br/>[mailto:maxer@fsfe.org maxer@fsfe.org]
== Installazione e configurazione ==
PVM è presente nel ramo ''main'' dei [[repository]] di Debian e può essere installato semplicemente con:
<pre>
# apt-get install pvm pvm-dev
</pre>


Per poterlo utilizzare correttamente si dovrà modificare il file <code>/etc/profile</code> di ogni nodo aggiungendo:
<pre>
#variable for PVM
PVM_ROOT=/usr/lib/pvm3
export PVM_ROOT
PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`
export PVM_ARCH
PVM_RSH=/usr/bin/ssh
export PVM_RSH
PVM_TMP=/tmp
export PVM_TMP
#Add pvm binary to PATH
PATH=$PVM_ROOT/bin:$PATH
export PATH
</pre>


; jabber : maxer@jabber.linux.it
Si dovrà anche modificare il file <code>/usr/lib/pvm3/conf/LINUX.def</code> per specificare il metodo che si desidera utilizzare per connettersi (in questo caso SSH):
: maxer@jabber.fsfe.org


; icq : 161200863
<pre>
#LINUX.def
ARCHCFLAGS = -DSYSVSIGNAL -DNOWAIT3 -DRSHCOMMAND=\'''"/usr/bin/ssh\"''' \
                  -DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS \
                  -DCTIMEISTIMET -DSYSERRISCONST
</pre>


I nodi che faranno parte del cluster dovranno essere specificati nel file <code>/etc/hosts</code> di ogni nodo:
<pre>
127.0.0.1    localhost
127.0.1.1    debian


[http://www.fsfe.org http://www.knio.it/images/a-happy-fellow.png]
192.168.100.1  node0
192.168.100.8  node1
</pre>
''(Si faccia attenzione ad impostare i corretti [[hostname]])''<br />
<br />
Infine, sempre su ogni nodo, si dovrà creare un utente specifico:
<pre>
root@nodeX:~# adduser pvmuser
</pre>


=Le Mie Guide=
{{Suggerimento|È possibile evitare il dover ripetere le configurazioni effettuate su ciascun nodo a patto di disporre di home directory condivise. }}
# [[La struttura della Distribuzione]]
# [[I repository ed il loro utilizzo]]
# [[Introduzione all' Apt System]]
# [[Pulire Debian]]
# [[Applicare una patch ad un pacchetto Debian]]
# [[Apt-build: ottimizzazione dei pacchetti | '''Apt-build''': ottimizzazione dei pacchetti]]
# [[Apt-cdrom | '''Apt-cdrom''': aggiunta di cd/dvd nella lista dei repository]]
# [[Apt-file: ricerca all'interno dei pacchetti | '''Apt-file''': ricerca all'interno dei pacchetti]]
# [[Apt-listbugs: come monitorare i bug | '''Apt-listbugs''': come monitorare i bug]]
# [[Apt-zip: aggiornamenti senza una connessione veloce | '''Apt-zip''': aggiornamenti senza una connessione veloce]]
# [[Make-jpkg: Pacchettiziamo Java Sun| '''Make-jpkg''': Pacchettiziamo Java Sun]]
# [[Apt-Proxy: un proxy per i pacchetti Debian| '''Apt-Proxy''': un proxy per i pacchetti Debian]]
# [[Debmirror: creiamo un mirror Debian |'''Debmirror''': creiamo un mirror Debian]]
# [[Password sicure: la base della sicurezza informatica]]
# [[Come abilitare il completamento automatico 'avanzato']]
# [[Convertire immagini .nrg in immagini .iso]]
# [[mod_bandwidth: Gestione avanzata della banda]]
# [[Mrtg: monitoriamo la banda]]
# [[UsbMount: Gestione automatizzata delle periferiche usb di memorizzazione]]
# [[Powernowd: CpuScaling per AMD]]
# [[ cacti | Cacti per monitorare il sistema ]]
# [[ Debian_on_a_compaq_Presario_2154EA ]]
# [[ Munin ]]
# [[ Debian Fun ]]
# [[LAMP: Linux, Apache, MySQL e PHP]] Collaborazione con [[Utente:Keltik|Keltik]]
# [[ SysV ]]
# [[ jigdo ]]
# [[ Wireless Support ]]
# [[ Apache, SSL e CaCert.Org ]] (stub)
# [[ Pacchetizzare un tema per Bootsplash ]]
# [[ Gestione di un repository con debarchiver ]]
# [[ Ssh e autenticazione tramite chiavi ]]
# [[ Dupload per l'upload dei pacchetti Debian ]]
# [[ Synaptics touchpad ]]
# [[sshfs | Montare una directory remota con sshfs]]
# [[Unison e la sincronizzazione di directory]]
# [[Pbuilder: compilazione in ambienti puliti]]
# [[Madwifi | Installazione Driver Madwifi]]
# [[Repository Debianizzati.Org]]
# [[Kde e mount automatico]]
# [[Recuperare i dati da un Hard Disk danneggiato]]
# [[Rileggere la tabella delle partizioni]]
# [[Java in Debian]]
# [[Errori frequenti nell'uso di apt-get]]
# [[Controllare lo stato di un pacchetto]]
# [[Postgrey: filtrare lo spam con il greylisting]]


=Pagine in Lavorazione=
== Connessione SSH senza password ==
* [[Repository non ufficiali]]
Openssh-server dovrà essere installato su tutti i nodi interessati.<br />
* [[Copiare-Spostare Debian]] (titolo non definitivo)
Affinché i nodi riescano a comunicare senza che sia necessario ogni volta inserire la password di login al momento della connessione SSH si dovrà generare una chiave nel server (si abbia cura di non inserire alcuna password...):
* [[Alternatives]] (in fase finale)
<pre>
pvmuser@node0:~$ ssh-keygen -t rsa
</pre>


e trasferirla sui nodi:
<pre>
pvmuser@node0:~$ ssh-copy-id pvmuser@192.168.100.8
</pre>


=Ho scritto anche in=
== Identificazione dei nodi ==
* [[ Speciale:Contributions/MaXeR | dove ho ficcato il naso ;) ]]
Gli hostname degli host "partecipanti" al cluster dovranno essere inseriti nel file <code>.rhosts</code> presente nella home di ''pvmuser'' (creare il file se non esiste):
<pre>
pvmuser@node0:~$ cat /home/pvmuser/.rhosts
node1 pvmuser
node0 pvmuser
</pre>
Questa operazione dovrà essere fatta su ciascun nodo del cluster.


=Pagine Varie riportate da altre fonti=
== Avvio di PVM ==
# [[Perch� conviene sviluppare esclusivamente Software Libero]]
PVM è pronto per essere lanciato da uno qualsiasi dei nodi:
# [[Vendere Software Libero]]
<pre>
# [[Perch� il software non deve avere padroni]]
pvmuser@node0:~$ pvm
# [[La comunit� del software libero dopo 20 anni]]
 
# [[Ricompense e Motivazione]]
pvm> conf
conf
1 host, 1 data format
                    HOST    DTID    ARCH  SPEED      DSIG
                  node0    40000    LINUX    1000 0x00408841
pvm> add node1
add node1
1 successful
                    HOST    DTID
                  node1    80000
pvm> conf
conf
2 hosts, 1 data format
                    HOST    DTID    ARCH  SPEED      DSIG
                  node0    40000    LINUX    1000 0x00408841
                  node1    80000    LINUX    1000 0x00408841
pvm> quit
quit
 
Console: exit handler called
pvmd still running.
</pre>
 
Come si può notare tutte le operazioni sono state effettuate dentro la console di pvm.<br />
Nello specifico:
 
* '''conf''': mostra la configurazione attuale
* '''add <hostname>''': aggiunge l'host all'elenco di pvm
* '''delete <hostname>''': rimuove l'host dall'elenco
* '''quit''': esce dalla console (pvm continua ad agire in background)
* '''halt''': per interrompere pvm
 
Se si vuole evitare di dover ogni volta inserire gli hostname delle macchine appartenenti al cluster è possibile richiamare un file appositamente creato che contenga l'elenco degli host desiderati:
<pre>
root@node0:~# cat /etc/pvm.nodes
node0
node1
</pre>
 
Detto file dovrà essere richiamato in questo modo:
<pre>
pvmuser@node0:~$ pvm /etc/pvm.nodes
</pre>
 
== Test di esempio ==
Nei repository sono presenti dei test di esempio che possono essere avviati dalla console di PVM:
<pre>
root@node0:~# apt-get install pvm-examples
</pre>
 
Per eseguirli dalla console di PVM si utilizzerà il comando ''spawn -> <program name>'':
<pre>
pvmuser@node0:~$ pvm
 
pvm> spawn -> hello
spawn -> hello
[5]
1 successful
t4000c
pvm> [5:t4000c] i'm t4000c
[5:t4000c] from t80008: hello, world from node0
[5:t4000c] EOF
[5:t80008] EOF
[5] finished
</pre>
 
Happy clustering!
 
{{Autori
|Autore= [[Utente:Pmate|pmate]]
(originariamente scritta da [[Utente:J3no|J3no]])
|Estesa_da=
|Verificata_da=
|Numero_revisori=0
}}
 
[[Categoria:Cluster]]

Versione attuale delle 18:31, 10 apr 2016

Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 7 "wheezy"
Debian 8 "jessie"

Introduzione

PVM (Parallel Virtual Machine) è un software che permette a diversi computer in rete di essere utilizzati come se fossero uno solo, aggregando le risorse di ognuno per ottenere una capacità computazionale maggiore.
È una soluzione molto più economica e modulare che incrementare la dotazione hardware (CPU, RAM, etc.) di una singola macchina e permette di risolvere problemi molto complessi a costi molto contenuti.
Utilizzato oggi su larga scala, è considerato lo standard per quanto riguarda il calcolo parallelo.

Lo schema di funzionamento è abbastanza semplice: dato un insieme di macchine che si vogliono aggregare in cluster, su ognuna di esse si installerà e configurerà PVM. Ad installazione e configurazione completata, da ciascuna di queste macchine sarà possibile creare una vm cluster aggregando i nodi desiderati.

In questa guida verrà trattata la realizzazione di un cluster composto da due macchine: node0 e node1

Installazione e configurazione

PVM è presente nel ramo main dei repository di Debian e può essere installato semplicemente con:

# apt-get install pvm pvm-dev

Per poterlo utilizzare correttamente si dovrà modificare il file /etc/profile di ogni nodo aggiungendo:

#variable for PVM
PVM_ROOT=/usr/lib/pvm3
export PVM_ROOT
PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`
export PVM_ARCH
PVM_RSH=/usr/bin/ssh
export PVM_RSH
PVM_TMP=/tmp
export PVM_TMP
#Add pvm binary to PATH
PATH=$PVM_ROOT/bin:$PATH
export PATH

Si dovrà anche modificare il file /usr/lib/pvm3/conf/LINUX.def per specificare il metodo che si desidera utilizzare per connettersi (in questo caso SSH):

#LINUX.def
ARCHCFLAGS = -DSYSVSIGNAL -DNOWAIT3 -DRSHCOMMAND=\'''"/usr/bin/ssh\"''' \
                   -DNEEDENDIAN -DFDSETNOTSTRUCT -DHASERRORVARS \
                   -DCTIMEISTIMET -DSYSERRISCONST

I nodi che faranno parte del cluster dovranno essere specificati nel file /etc/hosts di ogni nodo:

127.0.0.1    localhost
127.0.1.1    debian

192.168.100.1  node0
192.168.100.8  node1

(Si faccia attenzione ad impostare i corretti hostname)

Infine, sempre su ogni nodo, si dovrà creare un utente specifico:

 
root@nodeX:~# adduser pvmuser
Bulb.png Suggerimento
È possibile evitare il dover ripetere le configurazioni effettuate su ciascun nodo a patto di disporre di home directory condivise.


Connessione SSH senza password

Openssh-server dovrà essere installato su tutti i nodi interessati.
Affinché i nodi riescano a comunicare senza che sia necessario ogni volta inserire la password di login al momento della connessione SSH si dovrà generare una chiave nel server (si abbia cura di non inserire alcuna password...):

pvmuser@node0:~$ ssh-keygen -t rsa

e trasferirla sui nodi:

pvmuser@node0:~$ ssh-copy-id pvmuser@192.168.100.8

Identificazione dei nodi

Gli hostname degli host "partecipanti" al cluster dovranno essere inseriti nel file .rhosts presente nella home di pvmuser (creare il file se non esiste):

pvmuser@node0:~$ cat /home/pvmuser/.rhosts
node1 pvmuser
node0 pvmuser

Questa operazione dovrà essere fatta su ciascun nodo del cluster.

Avvio di PVM

PVM è pronto per essere lanciato da uno qualsiasi dei nodi:

pvmuser@node0:~$ pvm

pvm> conf
conf
1 host, 1 data format
                    HOST     DTID     ARCH   SPEED       DSIG
                   node0    40000    LINUX    1000 0x00408841
pvm> add node1
add node1
1 successful
                    HOST     DTID
                   node1    80000
pvm> conf
conf
2 hosts, 1 data format
                    HOST     DTID     ARCH   SPEED       DSIG
                   node0    40000    LINUX    1000 0x00408841
                   node1    80000    LINUX    1000 0x00408841
pvm> quit
quit

Console: exit handler called
pvmd still running.

Come si può notare tutte le operazioni sono state effettuate dentro la console di pvm.
Nello specifico:

  • conf: mostra la configurazione attuale
  • add <hostname>: aggiunge l'host all'elenco di pvm
  • delete <hostname>: rimuove l'host dall'elenco
  • quit: esce dalla console (pvm continua ad agire in background)
  • halt: per interrompere pvm

Se si vuole evitare di dover ogni volta inserire gli hostname delle macchine appartenenti al cluster è possibile richiamare un file appositamente creato che contenga l'elenco degli host desiderati:

root@node0:~# cat /etc/pvm.nodes
node0
node1

Detto file dovrà essere richiamato in questo modo:

pvmuser@node0:~$ pvm /etc/pvm.nodes

Test di esempio

Nei repository sono presenti dei test di esempio che possono essere avviati dalla console di PVM:

root@node0:~# apt-get install pvm-examples

Per eseguirli dalla console di PVM si utilizzerà il comando spawn -> <program name>:

pvmuser@node0:~$ pvm

pvm> spawn -> hello
spawn -> hello
[5]
1 successful
t4000c
pvm> [5:t4000c] i'm t4000c
[5:t4000c] from t80008: hello, world from node0
[5:t4000c] EOF
[5:t80008] EOF
[5] finished

Happy clustering!




Guida scritta da: pmate

(originariamente scritta da J3no)

Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized