INFN – Laboratori Nazionali Frascati
Stage estivi 2006
Installazione e Configurazione di
un Sistema di Calcolo Distribuito
operante sotto Linux
Matteo Acciari
Andrea Cervelli
Guglielmo Mascitelli
Michael Petrongari
Supervisione:
Federico Ronchetti
Angelo Viticchie’
Installazione di Linux
•
Linux e’ una versione di Unix (scaricabile liberamente
da Internet), molto usata in ambito tecnico-scientifico.
•
Versione installata nei 4 computer di test a nostra disposizione
– RedHat Linux 9.0 - kernel 2.4.20-8
•
Tipo di computer a disposizione:
–
–
–
–
–
–
processore Intel Pentium III
da 256 a 768 MB di memoria RAM
15 o piu’ GB di spazio disco
scheda di rete ethernet da 100 Mbit/s
switch di rete da 100 Mbit/s
connessione Internet
Installazione del sistema operativo tramite CDROM:
• partizione manuale del disco hda con disk druid:
sistema (/) in hda1 e 512 MB di swap in hda2
• installazione del boot loader (grub) sull’MBR.
• configurazione delle interfacce di rete ethernet
• aggiunta di un file di swap con dd, mkswap e swapon
La Shell di Linux
• La shell fornisce una
interfaccia utente per:
– manipolare i files e
le directories
(ls, cp, mv, rm, mkdir,….)
– navigare il file-system
(cd, ln, …)
– controllare i processi
in esecuzione (jobs, bg, fg, ps, kill)
kernel
emacs
filesystem
• La shell e’ in se un linguaggio di programmazione:
• I programmi (script) sono interpretati dalla shell stessa e hanno le
seguenti caratteristiche:
–
–
–
–
•
I file e le directory sono considerati tipi di dati nativi
si possono definire variabili (export, printenv)
dispone di cicli di iterazione (while)
dispone del controllo di flusso (if, case)
La shell da noi usata e’ la bash shell (ne esistiono anche altri tipi).
Il nostro Network
• I computer a disposizione sono stati suddivisi in 3 nodi worker
(1 interfaccia di rete ) e 1 nodo master (con 2 interfacce di rete).
– una interfaccia per PC e’ stata collegata ad uno switch isolato creando
cosi’ una rete nascosta del tipo 192.168.0.0.
– Sul master abbiamo configurato anche una interfaccia verso la LAN dei
LNF
• Abbiamo usato il file /etc/hosts per definire la corrispondenza tra
i nomi e gli indirizzi IP scelti per i computer.
I Servizi di Rete
• Lo schema del nostro sistema di calcolo prevede una architettura
client – server.
– La parte server e’ concentrata sul masternode
– La parte client e’ distribuita sugli workernodes
• Servizi del masternode:
– login remoto l’esecuzione di una shell attraverso la rete):
SSH (Secure SHell)
– server utenti (andrea, guglielmo,
matteo, michael),
NIS (Network Information Service)
disco del master
– server disco utenti (/home),
NFS (Network File System)
– server Web, APACHE
– servizi di clustering (descritti in seguito)
• Processi client sui 3 workernodes:
– validazione utenti dal masternode
– accesso al disco del masternode
NFS
www
utente del master
NIS
il Clustering
Cosa e’ un cluster (aggregato): un gruppo di computer
che eseguono programmi cooperando tra loro
mediante la rete.
• Esistono diverse tecniche di clustering.
• Una delle piu’ comuni e’ quella del sistema di code (batch system)
• vantaggi: semplice da installare, programmi girano sul cluster senza modifiche
Il server mantiene una lista (coda) dei processi (job) da eseguire
Il worker riceve i processi dal server e li esegue per conto dell’utente
workernode1
Server (masternode)
Utente 1
job di
utente 2
NETWORK
PBS_server
job di
utente 1
mom
Utente 2
workernode2
mom
workernode3
mom
Coda (queue)
job di
utente 1
job di
utente 2
1) creiamo la coda
2) creiamo uno script di prova
[root@pcstage root]# qmgr
Max open servers: 4
Qmgr: print server
create queue workq
set queue workq queue_type = Execution
set queue workq enabled = True
set queue workq started = True
3) Inviamo lo script alla coda
[root@pcstage root]# more testpbs
#!/bin/sh
#testpbs
echo "This is a test script"
echo Today is `date`
echo This is `hostname`
echo The current working directory is `pwd`
echo The system kernel is `uname -a`
sleep 2m
[andrea@pcstage ~]# qsub testpbs
Una CPU per ogni worker
4) Guardiamo il contenuto della coda
[root@pcstage root]# qstat -a
masternode.stage.lnf.infn.it:
Job ID
--------------11.masternode.s
12.masternode.s
13.masternode.s
14.masternode.s
Username
-------andrea
guglielm
matteo
michael
Queue
-------workq
workq
workq
workq
Req'd Req'd
Jobname
SessID NDS TSK Memory Time
---------- ------ --- --- ------ ----testpbs
14797
1 ---testpbs
14939
1 ---testpbs
3691
1 ---testpbs
-1 ----
S
R
R
R
Q
Elap
Time
----00:01
00:01
00:01
--
5) Riceviamo l’output dello script
-rw-------rw-------
1 andrea
1 andrea
studenti
studenti
0 Jun 20 10:03 testpbs.e9
314 Jun 20 10:03 testpbs.o9
pbsnodes -a
workernode1
state = free
np = 1
ntype = cluster
workernode2
state = free
np = 1
ntype = cluster
workernode3
state = free
np = 1
ntype = cluster
6) Verifichiamo che e’ stato effettivamente eseguito sul worker
[root@pcstage root]# more testpbs.o9
This is a test script
Today is Tue Jun 20 09:56:50 CEST 2006
This is workernode3
The current working directory is /home/andrea
The system kernel is Linux workernode3 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003
i686 i686 i386 GNU/Linux
Monitoraggio del cluster
• Con Linux si possono monitorare solo le prestazioni di un singolo PC (top)
• tuttavia e’ utile trattare i PC del cluster come un unico “computer”
• A questo scopo, abbiamo usato GANGLIA
- software client-sever che permette monitorare un intero cluster
• Dispone di un’interfaccia Web con pagine HTML dinamiche
Clicchiamo per
vedere il sistema
al lavoro !
Scarica

M. Acciari, A. Cervellil, G. Mascitelli, M. Petrongari