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 !