80 likes | 209 Views
Installazione e Configurazione di un Sistema di Calcolo Distribuito operante sotto Linux. INFN – Laboratori Nazionali Frascati Stage estivi 2006. Matteo Acciari Andrea Cervelli Guglielmo Mascitelli Michael Petrongari Supervisione: Federico Ronchetti Angelo Viticchie’.
E N D
Installazione e Configurazione di un Sistema di Calcolo Distribuito operante sotto Linux INFN – Laboratori Nazionali FrascatiStage estivi 2006 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 unainterfaccia utente per: • manipolare i files e le directories(ls, cp, mv, rm, mkdir,….) • navigare il file-system(cd, ln, …) • controllare i processiin esecuzione (jobs, bg, fg, ps, kill) • 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). kernel emacs filesystem
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.
disco del master utente del master NFS www NIS 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) • 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
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) mom Utente 1 Utente 2 NETWORK workernode2 mom job di utente 1 PBS_server workernode3 job di utente 1 job di utente 2 mom job di utente 2 Coda (queue)
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 [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 3) Inviamo lo script alla coda [andrea@pcstage ~]# qsub testpbs Una CPU per ogni worker 4) Guardiamo il contenuto della coda pbsnodes -a workernode1 state = free np = 1 ntype = cluster workernode2 state = free np = 1 ntype = cluster workernode3 state = free np = 1 ntype = cluster [root@pcstage root]# qstat -a masternode.stage.lnf.infn.it: Req'd Req'd Elap Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- 11.masternode.s andrea workq testpbs 14797 1 -- -- -- R 00:01 12.masternode.s guglielm workq testpbs 14939 1 -- -- -- R 00:01 13.masternode.s matteo workq testpbs 3691 1 -- -- -- R 00:01 14.masternode.s michael workq testpbs -- 1 -- -- -- Q -- 5) Riceviamo l’output dello script -rw------- 1 andrea studenti 0 Jun 20 10:03 testpbs.e9 -rw------- 1 andrea studenti 314 Jun 20 10:03 testpbs.o9 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 !