SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
Università degli Studi di Perugia

LAUREA SPECIALISTICA IN INFORMATICA

      Prof. Osvaldo Gervasi - A. A. 2007/2008




Laboratorio di Sistemi Operativi
           Avanzati
                   Progetto:
 Pool di macchine Condor con utilizzo di
           Checkpoint Server




                   Studenti:

               Manfucci Andrea

              Ciambelli Davide
1 Introduzione

1.1 Il problema

Installare un pool di macchine Condor (almeno 3) che utilizzino lo standard Universe e un
checkpoint server e verificare che, sotto opportune condizioni (es.: l'owner ricomincia a utilizzare la
macchina), i job vengono sospesi e migrati e che venga utilizzato il checkpoint server. Verificare
inoltre il supporto di Condor per delegare l'amministrazione ad utenti che non siano root e le
restrizioni applicabili.


1.2 Che cos'è Condor?

Condor è un sistema batch sviluppato dall'Università del Wisconsin, che consente di implementare
High Throughput Computing (HTC). Esso si occupa della gestione del carico computazionale di
jobs che richiedono grandi risorse di calcolo. Inoltre fornisce un meccanismo di coda per i jobs,
consente la scelta della politica di scheduling e dello schema di priorità e permette la gestione ed il
monitoraggio delle risorse.
Condor fornisce il controllo completo e costante al proprietario della macchina sull'impatto che un
processo di tipo batch può avere sulla qualità del servizio. Inoltre il proprietario ha un controllo
totale di chi può accedere alle risorse e di quando e quanto queste possono essere usate. Le
condizioni di utilizzo sono definite da regole stabilite dal proprietario: quando una condizione è
valida la risorsa può essere utilizzata, quando non lo è più la risorsa viene rilasciata. Diverse regole
possono essere stabilite per controllare quando un job può essere eseguito, sospeso, eliminato e
risottomesso. Una risorsa può essere facilmente rimossa dal pool in ogni momento.
Semplicemente, gli utenti sottomettono i loro jobs paralleli o seriali a Condor, il quale li posiziona
in coda, sceglie dove e quando eseguire i jobs basati su una certa politica, e controlla attentamente il
loro avanzamento; infine, Condor informa gli utenti del completamento dei jobs.
Condor può essere configurato per usare solo le workstations nelle quali sia il mouse che la tastiera
sono in uno stato di inattività; nel momento in cui una macchina uscirà dallo stato di idle, Condor
produrrà un checkpoint e migrerà il job su un'altra macchina in idle.
Ricordiamo che Condor è un software open-source sviluppato dal Condor Research Project e
disponibile per più piattaforme assieme ad una dettagliata documentazione.


2 Installazione

2.1 Requisiti
Condor è disponibile gratuitamente dal sito http://www.cs.wisc.edu/condor/downloads. Sono
disponibili anche distribuzioni binarie di Condor per determinate piattaforme. Una piattaforma è la
combinazione architettura/sistema operativo. Dovendo utilizzare lo standard Universe abbiamo
dovuto installare la versione 6.8.8 di Condor supportata dalla seguente piattaforma

                        Architettura                     Sistema Operativo
                          Intel x86              Debian Sarge Linux 3.1 (usando i
                                                         binari RHEL3)

I jobs sottomessi all'universo Standard utilizzano condor_compile per relinkare programmi con
librerie messe a disposizione da Condor. Nel nostro caso il compilatore supportato dalla nostra
piattaforma è

                  Piattaforma                 Compilatore
                  Red Hat Debian Linux 3.1 gcc con versione superiore alla 3.4.1
                  (Sarge) in x86


2.2 Installazione di Condor
Il Condor pool che abbiamo realizzato è costituito dalle seguenti macchine:

   ●   un Central Manager (CM) che si occupa del coordinamento del sistema e che funge anche
       da Checkpoint Server capace di sottomettere ma non di eseguire i jobs;
   ●   due nodi slave capaci di sottomettere ed eseguire i jobs.

Inizialmente abbiamo scaricato la release di Condor

                     condor-6.8.8-linux-linux-x86-rhel3-dynamic-tar.gz

Una volta scaricato il file abbiamo creato l'utente condor e successivamente abbiamo decompresso
il file eseguendo il comando

                tar -zxvf condor-6.8.8-linux-linux-x86-rhel3-dynamic-tar.gz

A questo punto ci siamo spostati nella cartella decompressa e abbiamo eseguito lo script di
installazione tramite il seguente comando

                                ./condor_configure
                                --install=/home/condor-6.8.8/release.tar
                                --install-dir=/home/condor/condor
                                --local-dir=/home/condor/condor
                                --type=submit,execute,manager
                                --central-manager=master

Al termine dell'installazione abbiamo aggiunto al file .bashrc dell'utente condor i seguenti comandi
che servono per esportare le variabili d'ambiente che interessano Condor

                 export   CONDOR_CONFIG=/home/condor/condor/etc/condor_config
                 export   PATH=$PATH:/home/condor/condor/sbin/
                 export   PATH=$PATH:/home/condor/condor/bin/
                 export   PATH=$PATH:/home/condor/condor/etc/examples/

I processi presenti dopo l'installazione di Condor sono:
   ●   condor_negotiator (solo su CM)
   ●   condor_collector (solo su CM)
   ●   condor_master
   ●   condor_schedd
   ●   condor_startd
   ●   condor_ckpt_server (solo su CM)
   ●   condor_shadow
3 Configurazione di Condor

3.1 Configurazione del nodo
Per prima cosa abbiamo modificato il file /etc/hosts nel modo seguente

               127.0.0.1                       localhost
               192.168.200.44                  nodo
               192.168.200.45                  master
               192.168.200.46                  nodo2

A       questo       punto      è       stato      necessario modificare il file
/home/condor/condor/condor_config.local contenente le impostazioni locali di
Condor. In esso abbiamo aggiunto le seguenti macro

                       NETWORK_INTERFACE = 192.168.200.44
                       NETWORK_HOST = nodo
                       FULL_HOSTNAME = nodo
                       CONDOR_HOST = master

inoltre, sempre nello stesso file, è stato modificato il valore delle seguenti variabili

                       UID_DOMAIN = $(FULL_HOSTNAME)
                       FILESYSTEM_DOMAIN = $(FULL_HOSTNAME)
                       CONDOR_IDS = 1001.1001
                       DAEMON_LIST = MASTER, SCHEDD, STARTD

A     questo   punto   è    stato   necessario      modificare                             il   file
/home/condor/condor/etc/condor_config nel seguente modo

                       RELEASE_DIR = /home/condor/condor
                       UID_DOMAIN = $(FULL_HOSTNAME)
                       FILESYSTEM_DOMAIN = $(FULL_HOSTNAME)
                       COLLECTOR_NAME = My Pool
                       FLOCK_FROM = *
                       FLOCK_TO = *
                       HOSTALLOW_READ = *
                       HOSTALLOW_WRITE = *

L'ultima operazione necessaria è stata quella di modificare il parametro MASTER nel file /home/
condor/condor/etc/examples/condor.boot nel seguente modo

                       MASTER = /home/condor/condor/sbin/condor_master



3.2 Configurazione del CM
La modifica del file /etc/hosts nel Central Manager è analoga a quella del nodo mentre nel file
/home/condor/condor/condor_config.local abbiamo aggiunto

               NETWORK_INTERFACE = 192.168.200.45
               NETWORK_HOST = master
               FULL_HOSTNAME = master
               CONDOR_HOST = master

e modificato
UID_DOMAIN = $(FULL_HOSTNAME)
               FILESYSTEM_DOMAIN = $(FULL_HOSTNAME)
               CONDOR_IDS = 1001.1001
               DAEMON_LIST = MASTER,SCHEDD,STARTD,COLLECTOR,NEGOTIATOR

La modifica del file /home/condor/condor/etc/condor_config è analoga a quella del
nodo     così      come   la   modifica del   parametro MASTER       nel      file
/home/condor/condor/etc/examples/condor.boot .


3.2.1 Configurazione del Checkpoint Server
Le macchine che svolgono le funzioni di CM e checkpoint server vengono definite nei file di
configurazione condor_config e condor_config.local . Pertanto abbiamo modificato il
file generale aggiungendo le seguenti macro

                      CONDOR_HOST = master

                      CKPT_SERVER_HOST = master
                      CKPT_SERVER_LOG = $(LOG)/CkptServerLog
                      CKPT_SERVER_DIR = /home/condor/condor/ckpt_server_dir
                      CKPT_SERVER = $(BIN)/condor_ckpt_server

                      USE_CKPT_SERVER = TRUE

Nel nostro caso CONDOR_HOST e CKPT_SERVER_HOST coincidono in quanto la stessa macchina
svolge entrambe le funzioni. La variabile CKPT_SERVER_DIR indica la directory di checkpoint
del pool. Nel file di configurazione locale invece, abbiamo modificato il valore delle seguenti macro

MASTER = $(BIN)/condor_master.new
DAEMON_LIST=MASTER,SCHEDD,STARTD,COLLECTOR,NEGOTIATOR,CKPT_SERVER

La prima linea specifica la collocazione del binario che sarà eseguito per primo nella formazione
del pool. La seconda linea dichiara la serie di processi che vengono attivati per costruire il CM e il
checkpoint server; se il CM non funge anche da checkpoint server la stringa CKPT_SERVER non è
specificata.


3.3 Configurazione delle policy
Le policy sono espressioni booleane definite nei file di configurazione locale di Condor che
vengono definite su ogni macchina. Ognuna di queste policy serve per definire le regole da
applicare ad un job al verificarsi di determinate condizioni. Nel nostro caso, per quanto riguarda i
nodi, abbiamo inserito le seguenti regole

   ●   START = ( (KeyboardIdle > $(StartIdleTime)) && ( $(CPUIdle)
       || (State != "Unclaimed" && State != "Owner")) )
       Avvia un job quando il tempo di inattività è maggiore della variabile StartIdleTime e
       la CPU è in stato di idle oppure quando lo stato è diverso da Unclaimed e da Owner.
   ●   SUSPEND = ( $(KeyboardBusy) || ( (CpuBusyTime > 1 * $
       (MINUTE)) && $(ActivationTimer) > 90 ) )
       Sospende il job se la tastiera viene toccata oppure se la CPU è occupata per più di 2 minuti e
       il job è stato eseguito da più di 90 secondi.
   ●   CONTINUE = ($(CPUIdle) && KeyboardIdle > $(StartIdleTime))
       Continua il job se la CPU è libera è l'inattività della tastiera è maggiore di
StartIdleTime.
   ●   PREEMPT = ( ((Activity == "Suspended") && ($(ActivityTimer) >
       $(MaxSuspendTime))) || (SUSPEND && (WANT_SUSPEND == False)) )
       Acquisisce per prelazione se l'attività è Suspended e il job è stato sospeso da molto
       tempo oppure se la sospensione non è voluta e la macchina è occupata.
   ●   VACATE = ($(StateTimer) > $(MaxSuspendTime))
       Richiede l'esecuzione di checkpoint e la migrazione del job su un'altra macchina se tale job è
       sospeso da MaxSuspendTime.

Per quel che riguarda il CM invece abbiamo applicato le policy di default con la modifica della
macro START settata a FALSE. In questo modo il CM assume sempre lo stato di Owner potendo
solo sottomettere ma non eseguire i jobs.

4 Avvio di Condor
Eseguita la configurazione è stato possibile avviare Condor con lo script

                                        condor.boot start

A questo punto, attendendo alcuni secondi per dar tempo ai demoni di partire, sarà possibile
visualizzare lo stato di Condor con il comando

                                           condor_status

che produrrà il seguente output




                             Illustrazione 4.1: Comando condor_status

infine è possibile interrompere l'attività di Condor eseguendo lo script

                                         condor.boot stop


5 Esempi
In questa sezione verrà mostrata la sottomissione di alcuni jobs in modo tale da vedere la loro
distribuzione, esecuzione, sospensione e migrazione nei nodi del nostro cluster. Ricordiamo che i
jobs posso essere sottomessi da tutte e tre le macchine ma solo i due slave possono eseguirli.

5.1 Creazione di un job
Innanzi tutto abbiamo creato i sorgenti in linguaggio C dei jobs da sottomettere al nostro cluster.
Dopodiché abbiamo creato il file di sottomissione come quello seguente

                      nano nome_file.sub
                      Executable = <nome_eseguibile>
                      Universe = standard
                      Output = <nome_eseguibile.out>
                      Error = <nome_eseguibile.err>
                      Log = <nome_eseguibile.log>
                      should_transfer_file = YES
                      when_to_transfer_output = ON_EXIT
                      queue

Visto che l'universo utilizzato è lo standard, per permettere la sospensione e la migrazione dei lavori
in batch senza che il progresso accumulato su una macchina ospite vada perduto, Condor utilizza
una libreria di checkpoint che consente di salvare l'intero stato di esecuzione di un programma
prima di interromperlo, per poi riprendere l'esecuzione più tardi, eventualmente su un altra
macchina ospite. Per utilizzare questa libreria, i programmi devono essere compilati con il seguente
comando

                  condor_compile gcc -o <nome_eseguibile> nome_file.c

Nell'universo Standard Condor fornisce checkpointing e remote system calls; per preparare un
programma per essere eseguito in questo universo si dovrà provvedere al re-link attraverso il
comando condor_compile (non è quindi necessario modificare il codice sorgente). Tale
universo comunque presenta alcune restrizioni come l’impossibilità di utilizzare shared memory,
memory mapped files, interprocess communication e multi-process job. Ora abbiamo tutto quello
che ci serve per sottomettere un job al nostro pool.

5.2 Sottomissione di job
Per sottomettere job a Condor si utilizza il comando

                                     condor_submit file.sub

Tramite l'utilizzo di questo comando un job aggiunto finisce in coda e appena una macchina è libera
(idle) viene eseguito.




                             Illustrazione 5.1: Comando condor_submit

Si può visualizzare a video lo stato della coda con il comando condor_q . Uno o più jobs possono
essere eliminati dalla coda utilizzando il comando condor_rm .




                                Illustrazione 5.2: Comando condor_q
5.3 Sospensione dei job
La sospensione di un job avviene quando l'owner riprende l'utilizzo della macchina su cui esso
viene eseguito. In questo modo, tramite il checkpointing, viene salvato lo stato attuale del job che
attende la migrazione verso un'altra macchina libera.




                                   Illustrazione 5.3: Sospensione


5.4 Migrazione dei job
La migrazione di un job avviene quando quest'ultimo viene riattivato dopo una sospensione.
Quando questo accade si cerca una macchina del pool libera e se esiste, l'esecuzione del job riparte
esattamente da dove era stata sospesa.




                                   Illustrazione 5.4: Migrazione



6 Sicurezza
La sicurezza in Condor è un problema ampio, con molti aspetti da prendere in considerazione. Visto
che lo scopo principale di Condor è di consentire agli utenti di eseguire codice arbitrario su un gran
numero di computer, è importante provare a limitare chi può accedere ad un Condor pool e quali
privilegi hanno quando l'utilizzano. C'è una distinzione tra i tipi di attacchi che Condor può
sconfiggere e no. Condor non può impedire violazioni della sicurezza di utenti con privilegi di root
e account di amministrazione. Un esempio di job maligno è un attacco DoS distribuito. Condor
assume che gli utenti siano fidati. Condor può impedire l'accesso non autorizzato al Condor pool, e
aiuta a garantire che solo gli utenti fidati possano accedere al pool di macchine. Inoltre, Condor
fornisce la crittografia e il controllo di integrità, per garantire che i dati non siano stati esaminati o
manomessi da altri. Per garantire la sicurezza all'interno di un pool di macchine abbiamo studiato in
maniera approfondita l'utilizzo delle macro

    ●   HOSTALLOW_ADMINISTRATOR
    ●   HOSTALLOW_READ
    ●   HOSTALLOW_WRITE

Queste macro definiscono il supporto di Condor per delegare l'amministrazione, controllare lo stato
del pool, controllare lo stato della coda, sottomettere jobs ecc.. ad utenti che non siano
amministratori. Viceversa grazie all'utilizzo delle macro

    ●   HOSTDENY_ADMINISTRATOR
    ●   HOSTDENY_READ
    ●   HOSTDENY_WRITE

è possibile applicare delle restrizioni agli utenti del pool.


6.1 Esempi
In questa sezione presentiamo alcuni esempi di possibili configurazioni utilizzando le macro
spiegate in precedenza.

    ●   In questo esempio l'amministrazione, oltre che al CM, viene delegata al nodo “nodo” mentre
        viene negata a “nodo2”
        HOSTALLOW_ADMINISTRATOR = $(CONDOR_HOST), nodo
        HOSTDENY_ADMINISTRATOR = nodo2
    ●   In questo esempio l'amministratore è solo il CM, “nodo” può sottomettere jobs mentre
        “nodo2” no
        HOSTALLOW_ADMINISTRATOR = $(CONDOR_HOST)
        HOSTALLOW_READ = *
        HOSTDENY_WRITE = nodo
        HOSTALLOW_WRITE = nodo2

Weitere ähnliche Inhalte

Andere mochten auch

Ilse ortiz de manzanares, geo esculturas, geo sculptures, 2016
Ilse ortiz de manzanares, geo esculturas, geo sculptures,  2016Ilse ortiz de manzanares, geo esculturas, geo sculptures,  2016
Ilse ortiz de manzanares, geo esculturas, geo sculptures, 2016Marcela Valdeavellano-Valle
 
Privacy in TMG - How to hide information
Privacy in TMG - How to hide informationPrivacy in TMG - How to hide information
Privacy in TMG - How to hide informationCarole Riley
 
Tumba gymnasium_hösten 2010
Tumba gymnasium_hösten 2010Tumba gymnasium_hösten 2010
Tumba gymnasium_hösten 2010patrik hernwall
 
Comicas i-diapositivas
Comicas i-diapositivasComicas i-diapositivas
Comicas i-diapositivaspilarandres
 
Kane debt
Kane debtKane debt
Kane debtd0nn9n
 
董龙飞 - 新一代企业应用
董龙飞 - 新一代企业应用董龙飞 - 新一代企业应用
董龙飞 - 新一代企业应用d0nn9n
 
Бизнес-кейс: СОЗДАНИЕ ЦИФРОВОГО РЕНТГЕНА (история успеха инновационного проек...
Бизнес-кейс: СОЗДАНИЕ ЦИФРОВОГО РЕНТГЕНА (история успеха инновационного проек...Бизнес-кейс: СОЗДАНИЕ ЦИФРОВОГО РЕНТГЕНА (история успеха инновационного проек...
Бизнес-кейс: СОЗДАНИЕ ЦИФРОВОГО РЕНТГЕНА (история успеха инновационного проек...Vadim Kotelnikov
 
Предприниматель-инноватор: КАК ПРИВЛЕЧЬ ВЕНЧУРНОГО ИНВЕСТОРА
Предприниматель-инноватор: КАК ПРИВЛЕЧЬ ВЕНЧУРНОГО ИНВЕСТОРАПредприниматель-инноватор: КАК ПРИВЛЕЧЬ ВЕНЧУРНОГО ИНВЕСТОРА
Предприниматель-инноватор: КАК ПРИВЛЕЧЬ ВЕНЧУРНОГО ИНВЕСТОРАVadim Kotelnikov
 
PLANEACIÓN DEL PROYECTO COOPERATIVO-YANETH
PLANEACIÓN DEL PROYECTO COOPERATIVO-YANETHPLANEACIÓN DEL PROYECTO COOPERATIVO-YANETH
PLANEACIÓN DEL PROYECTO COOPERATIVO-YANETHyaneth2015
 
Dlaczego jeszcze nie masz dziewczyny
Dlaczego jeszcze nie masz dziewczynyDlaczego jeszcze nie masz dziewczyny
Dlaczego jeszcze nie masz dziewczynyEbooki za darmo
 
História de minas gerais
História de minas geraisHistória de minas gerais
História de minas geraisFabi
 

Andere mochten auch (12)

Ilse ortiz de manzanares, geo esculturas, geo sculptures, 2016
Ilse ortiz de manzanares, geo esculturas, geo sculptures,  2016Ilse ortiz de manzanares, geo esculturas, geo sculptures,  2016
Ilse ortiz de manzanares, geo esculturas, geo sculptures, 2016
 
Privacy in TMG - How to hide information
Privacy in TMG - How to hide informationPrivacy in TMG - How to hide information
Privacy in TMG - How to hide information
 
Tumba gymnasium_hösten 2010
Tumba gymnasium_hösten 2010Tumba gymnasium_hösten 2010
Tumba gymnasium_hösten 2010
 
Comicas i-diapositivas
Comicas i-diapositivasComicas i-diapositivas
Comicas i-diapositivas
 
Kane debt
Kane debtKane debt
Kane debt
 
董龙飞 - 新一代企业应用
董龙飞 - 新一代企业应用董龙飞 - 新一代企业应用
董龙飞 - 新一代企业应用
 
Бизнес-кейс: СОЗДАНИЕ ЦИФРОВОГО РЕНТГЕНА (история успеха инновационного проек...
Бизнес-кейс: СОЗДАНИЕ ЦИФРОВОГО РЕНТГЕНА (история успеха инновационного проек...Бизнес-кейс: СОЗДАНИЕ ЦИФРОВОГО РЕНТГЕНА (история успеха инновационного проек...
Бизнес-кейс: СОЗДАНИЕ ЦИФРОВОГО РЕНТГЕНА (история успеха инновационного проек...
 
Предприниматель-инноватор: КАК ПРИВЛЕЧЬ ВЕНЧУРНОГО ИНВЕСТОРА
Предприниматель-инноватор: КАК ПРИВЛЕЧЬ ВЕНЧУРНОГО ИНВЕСТОРАПредприниматель-инноватор: КАК ПРИВЛЕЧЬ ВЕНЧУРНОГО ИНВЕСТОРА
Предприниматель-инноватор: КАК ПРИВЛЕЧЬ ВЕНЧУРНОГО ИНВЕСТОРА
 
PLANEACIÓN DEL PROYECTO COOPERATIVO-YANETH
PLANEACIÓN DEL PROYECTO COOPERATIVO-YANETHPLANEACIÓN DEL PROYECTO COOPERATIVO-YANETH
PLANEACIÓN DEL PROYECTO COOPERATIVO-YANETH
 
Dlaczego jeszcze nie masz dziewczyny
Dlaczego jeszcze nie masz dziewczynyDlaczego jeszcze nie masz dziewczyny
Dlaczego jeszcze nie masz dziewczyny
 
Higiene bucal cmei 2010
Higiene bucal cmei 2010Higiene bucal cmei 2010
Higiene bucal cmei 2010
 
História de minas gerais
História de minas geraisHistória de minas gerais
História de minas gerais
 

Ähnlich wie Pool di macchine Condor con utilizzo di Checkpoint Server

Post gresql su_raspberry
Post gresql su_raspberryPost gresql su_raspberry
Post gresql su_raspberryMarco Buttolo
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Valerio Radice
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzionegiacomos
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxMarco Ferrigno
 
Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Marco Chiesi
 
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2Giorgio Cefaro
 
Gestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerGestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerMassimiliano Arione
 
Implementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilitàImplementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilitàAlfredo Parisi
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Marcello Missiroli
 
Extended summary of “Understanding the Performance Costs and Benefits of Pri...
Extended summary of “Understanding the Performance Costs  and Benefits of Pri...Extended summary of “Understanding the Performance Costs  and Benefits of Pri...
Extended summary of “Understanding the Performance Costs and Benefits of Pri...RiccardoDeMonte
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerAlessandro Mascherin
 
Accesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogeneaAccesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogeneaGiacomo Antonino Fazio
 
Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)Cristian Consonni
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
 

Ähnlich wie Pool di macchine Condor con utilizzo di Checkpoint Server (20)

Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
 
Post gresql su_raspberry
Post gresql su_raspberryPost gresql su_raspberry
Post gresql su_raspberry
 
Battaglia Navale
Battaglia NavaleBattaglia Navale
Battaglia Navale
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 
Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018
 
High Performance Web Apps con PHP e Symfony 2
High Performance Web Apps con PHP  e Symfony 2High Performance Web Apps con PHP  e Symfony 2
High Performance Web Apps con PHP e Symfony 2
 
Gestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerGestione delle dipendenze con Composer
Gestione delle dipendenze con Composer
 
Implementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilitàImplementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilità
 
Apache HTTP Server
Apache HTTP ServerApache HTTP Server
Apache HTTP Server
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
 
Extended summary of “Understanding the Performance Costs and Benefits of Pri...
Extended summary of “Understanding the Performance Costs  and Benefits of Pri...Extended summary of “Understanding the Performance Costs  and Benefits of Pri...
Extended summary of “Understanding the Performance Costs and Benefits of Pri...
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
 
TYPO3 CMS 9.1 - Le novità
TYPO3 CMS 9.1 - Le novitàTYPO3 CMS 9.1 - Le novità
TYPO3 CMS 9.1 - Le novità
 
SVN/TRAC
SVN/TRACSVN/TRAC
SVN/TRAC
 
Accesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogeneaAccesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogenea
 
Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automation
 

Mehr von Davide Ciambelli

SEMrush SEO Fundamentals Exam
SEMrush SEO Fundamentals ExamSEMrush SEO Fundamentals Exam
SEMrush SEO Fundamentals ExamDavide Ciambelli
 
Google Analytics for Beginners
Google Analytics for BeginnersGoogle Analytics for Beginners
Google Analytics for BeginnersDavide Ciambelli
 
Advanced Google Analytics
Advanced Google Analytics Advanced Google Analytics
Advanced Google Analytics Davide Ciambelli
 
Ecommerce Analytics: From Data to Decision
Ecommerce Analytics: From Data to DecisionEcommerce Analytics: From Data to Decision
Ecommerce Analytics: From Data to DecisionDavide Ciambelli
 
Google Tag Manager Fundamentals
Google Tag Manager Fundamentals Google Tag Manager Fundamentals
Google Tag Manager Fundamentals Davide Ciambelli
 
Abilitazione all'utilizzo dei dispositivi DAE
Abilitazione all'utilizzo dei dispositivi DAEAbilitazione all'utilizzo dei dispositivi DAE
Abilitazione all'utilizzo dei dispositivi DAEDavide Ciambelli
 
Google Tag Manager Fundamentals
Google Tag Manager FundamentalsGoogle Tag Manager Fundamentals
Google Tag Manager FundamentalsDavide Ciambelli
 
Un viaggio chiamato LibreUmbria
Un viaggio chiamato LibreUmbriaUn viaggio chiamato LibreUmbria
Un viaggio chiamato LibreUmbriaDavide Ciambelli
 
Guida introduttiva di Google all’ottimizzazione per motori di ricerca (SEO)
Guida introduttiva di Google  all’ottimizzazione per motori di ricerca (SEO)Guida introduttiva di Google  all’ottimizzazione per motori di ricerca (SEO)
Guida introduttiva di Google all’ottimizzazione per motori di ricerca (SEO)Davide Ciambelli
 
Google analytics platform principles certificate
Google analytics platform principles certificateGoogle analytics platform principles certificate
Google analytics platform principles certificateDavide Ciambelli
 
Social Network Analysis for Journalists Using the Twitter API
Social Network Analysis for Journalists Using the Twitter APISocial Network Analysis for Journalists Using the Twitter API
Social Network Analysis for Journalists Using the Twitter APIDavide Ciambelli
 
Dharma Initiative pass card
Dharma Initiative pass cardDharma Initiative pass card
Dharma Initiative pass cardDavide Ciambelli
 
Qnap turbo nas hardware manual
Qnap turbo nas hardware manualQnap turbo nas hardware manual
Qnap turbo nas hardware manualDavide Ciambelli
 
Z750 manuale di assemblaggio
Z750 manuale di assemblaggioZ750 manuale di assemblaggio
Z750 manuale di assemblaggioDavide Ciambelli
 
The 2009 Simulated Car Racing Championship
The 2009 Simulated Car Racing ChampionshipThe 2009 Simulated Car Racing Championship
The 2009 Simulated Car Racing ChampionshipDavide Ciambelli
 

Mehr von Davide Ciambelli (20)

SEMrush SEO Toolkit Exam
SEMrush SEO Toolkit ExamSEMrush SEO Toolkit Exam
SEMrush SEO Toolkit Exam
 
SEMrush SEO Fundamentals Exam
SEMrush SEO Fundamentals ExamSEMrush SEO Fundamentals Exam
SEMrush SEO Fundamentals Exam
 
Google Analytics for Beginners
Google Analytics for BeginnersGoogle Analytics for Beginners
Google Analytics for Beginners
 
Advanced Google Analytics
Advanced Google Analytics Advanced Google Analytics
Advanced Google Analytics
 
Ecommerce Analytics: From Data to Decision
Ecommerce Analytics: From Data to DecisionEcommerce Analytics: From Data to Decision
Ecommerce Analytics: From Data to Decision
 
Google Tag Manager Fundamentals
Google Tag Manager Fundamentals Google Tag Manager Fundamentals
Google Tag Manager Fundamentals
 
Eccellenze in digitale
Eccellenze in digitaleEccellenze in digitale
Eccellenze in digitale
 
Abilitazione all'utilizzo dei dispositivi DAE
Abilitazione all'utilizzo dei dispositivi DAEAbilitazione all'utilizzo dei dispositivi DAE
Abilitazione all'utilizzo dei dispositivi DAE
 
Google Tag Manager Fundamentals
Google Tag Manager FundamentalsGoogle Tag Manager Fundamentals
Google Tag Manager Fundamentals
 
Certificazione AdWords
Certificazione AdWordsCertificazione AdWords
Certificazione AdWords
 
Un viaggio chiamato LibreUmbria
Un viaggio chiamato LibreUmbriaUn viaggio chiamato LibreUmbria
Un viaggio chiamato LibreUmbria
 
Guida introduttiva di Google all’ottimizzazione per motori di ricerca (SEO)
Guida introduttiva di Google  all’ottimizzazione per motori di ricerca (SEO)Guida introduttiva di Google  all’ottimizzazione per motori di ricerca (SEO)
Guida introduttiva di Google all’ottimizzazione per motori di ricerca (SEO)
 
Il codice da lopins
Il codice da lopinsIl codice da lopins
Il codice da lopins
 
Google analytics platform principles certificate
Google analytics platform principles certificateGoogle analytics platform principles certificate
Google analytics platform principles certificate
 
Social Network Analysis for Journalists Using the Twitter API
Social Network Analysis for Journalists Using the Twitter APISocial Network Analysis for Journalists Using the Twitter API
Social Network Analysis for Journalists Using the Twitter API
 
Dharma Initiative pass card
Dharma Initiative pass cardDharma Initiative pass card
Dharma Initiative pass card
 
Dossier Dharma Initiative
Dossier Dharma InitiativeDossier Dharma Initiative
Dossier Dharma Initiative
 
Qnap turbo nas hardware manual
Qnap turbo nas hardware manualQnap turbo nas hardware manual
Qnap turbo nas hardware manual
 
Z750 manuale di assemblaggio
Z750 manuale di assemblaggioZ750 manuale di assemblaggio
Z750 manuale di assemblaggio
 
The 2009 Simulated Car Racing Championship
The 2009 Simulated Car Racing ChampionshipThe 2009 Simulated Car Racing Championship
The 2009 Simulated Car Racing Championship
 

Pool di macchine Condor con utilizzo di Checkpoint Server

  • 1. Università degli Studi di Perugia LAUREA SPECIALISTICA IN INFORMATICA Prof. Osvaldo Gervasi - A. A. 2007/2008 Laboratorio di Sistemi Operativi Avanzati Progetto: Pool di macchine Condor con utilizzo di Checkpoint Server Studenti: Manfucci Andrea Ciambelli Davide
  • 2. 1 Introduzione 1.1 Il problema Installare un pool di macchine Condor (almeno 3) che utilizzino lo standard Universe e un checkpoint server e verificare che, sotto opportune condizioni (es.: l'owner ricomincia a utilizzare la macchina), i job vengono sospesi e migrati e che venga utilizzato il checkpoint server. Verificare inoltre il supporto di Condor per delegare l'amministrazione ad utenti che non siano root e le restrizioni applicabili. 1.2 Che cos'è Condor? Condor è un sistema batch sviluppato dall'Università del Wisconsin, che consente di implementare High Throughput Computing (HTC). Esso si occupa della gestione del carico computazionale di jobs che richiedono grandi risorse di calcolo. Inoltre fornisce un meccanismo di coda per i jobs, consente la scelta della politica di scheduling e dello schema di priorità e permette la gestione ed il monitoraggio delle risorse. Condor fornisce il controllo completo e costante al proprietario della macchina sull'impatto che un processo di tipo batch può avere sulla qualità del servizio. Inoltre il proprietario ha un controllo totale di chi può accedere alle risorse e di quando e quanto queste possono essere usate. Le condizioni di utilizzo sono definite da regole stabilite dal proprietario: quando una condizione è valida la risorsa può essere utilizzata, quando non lo è più la risorsa viene rilasciata. Diverse regole possono essere stabilite per controllare quando un job può essere eseguito, sospeso, eliminato e risottomesso. Una risorsa può essere facilmente rimossa dal pool in ogni momento. Semplicemente, gli utenti sottomettono i loro jobs paralleli o seriali a Condor, il quale li posiziona in coda, sceglie dove e quando eseguire i jobs basati su una certa politica, e controlla attentamente il loro avanzamento; infine, Condor informa gli utenti del completamento dei jobs. Condor può essere configurato per usare solo le workstations nelle quali sia il mouse che la tastiera sono in uno stato di inattività; nel momento in cui una macchina uscirà dallo stato di idle, Condor produrrà un checkpoint e migrerà il job su un'altra macchina in idle. Ricordiamo che Condor è un software open-source sviluppato dal Condor Research Project e disponibile per più piattaforme assieme ad una dettagliata documentazione. 2 Installazione 2.1 Requisiti Condor è disponibile gratuitamente dal sito http://www.cs.wisc.edu/condor/downloads. Sono disponibili anche distribuzioni binarie di Condor per determinate piattaforme. Una piattaforma è la combinazione architettura/sistema operativo. Dovendo utilizzare lo standard Universe abbiamo dovuto installare la versione 6.8.8 di Condor supportata dalla seguente piattaforma Architettura Sistema Operativo Intel x86 Debian Sarge Linux 3.1 (usando i binari RHEL3) I jobs sottomessi all'universo Standard utilizzano condor_compile per relinkare programmi con librerie messe a disposizione da Condor. Nel nostro caso il compilatore supportato dalla nostra
  • 3. piattaforma è Piattaforma Compilatore Red Hat Debian Linux 3.1 gcc con versione superiore alla 3.4.1 (Sarge) in x86 2.2 Installazione di Condor Il Condor pool che abbiamo realizzato è costituito dalle seguenti macchine: ● un Central Manager (CM) che si occupa del coordinamento del sistema e che funge anche da Checkpoint Server capace di sottomettere ma non di eseguire i jobs; ● due nodi slave capaci di sottomettere ed eseguire i jobs. Inizialmente abbiamo scaricato la release di Condor condor-6.8.8-linux-linux-x86-rhel3-dynamic-tar.gz Una volta scaricato il file abbiamo creato l'utente condor e successivamente abbiamo decompresso il file eseguendo il comando tar -zxvf condor-6.8.8-linux-linux-x86-rhel3-dynamic-tar.gz A questo punto ci siamo spostati nella cartella decompressa e abbiamo eseguito lo script di installazione tramite il seguente comando ./condor_configure --install=/home/condor-6.8.8/release.tar --install-dir=/home/condor/condor --local-dir=/home/condor/condor --type=submit,execute,manager --central-manager=master Al termine dell'installazione abbiamo aggiunto al file .bashrc dell'utente condor i seguenti comandi che servono per esportare le variabili d'ambiente che interessano Condor export CONDOR_CONFIG=/home/condor/condor/etc/condor_config export PATH=$PATH:/home/condor/condor/sbin/ export PATH=$PATH:/home/condor/condor/bin/ export PATH=$PATH:/home/condor/condor/etc/examples/ I processi presenti dopo l'installazione di Condor sono: ● condor_negotiator (solo su CM) ● condor_collector (solo su CM) ● condor_master ● condor_schedd ● condor_startd ● condor_ckpt_server (solo su CM) ● condor_shadow
  • 4. 3 Configurazione di Condor 3.1 Configurazione del nodo Per prima cosa abbiamo modificato il file /etc/hosts nel modo seguente 127.0.0.1 localhost 192.168.200.44 nodo 192.168.200.45 master 192.168.200.46 nodo2 A questo punto è stato necessario modificare il file /home/condor/condor/condor_config.local contenente le impostazioni locali di Condor. In esso abbiamo aggiunto le seguenti macro NETWORK_INTERFACE = 192.168.200.44 NETWORK_HOST = nodo FULL_HOSTNAME = nodo CONDOR_HOST = master inoltre, sempre nello stesso file, è stato modificato il valore delle seguenti variabili UID_DOMAIN = $(FULL_HOSTNAME) FILESYSTEM_DOMAIN = $(FULL_HOSTNAME) CONDOR_IDS = 1001.1001 DAEMON_LIST = MASTER, SCHEDD, STARTD A questo punto è stato necessario modificare il file /home/condor/condor/etc/condor_config nel seguente modo RELEASE_DIR = /home/condor/condor UID_DOMAIN = $(FULL_HOSTNAME) FILESYSTEM_DOMAIN = $(FULL_HOSTNAME) COLLECTOR_NAME = My Pool FLOCK_FROM = * FLOCK_TO = * HOSTALLOW_READ = * HOSTALLOW_WRITE = * L'ultima operazione necessaria è stata quella di modificare il parametro MASTER nel file /home/ condor/condor/etc/examples/condor.boot nel seguente modo MASTER = /home/condor/condor/sbin/condor_master 3.2 Configurazione del CM La modifica del file /etc/hosts nel Central Manager è analoga a quella del nodo mentre nel file /home/condor/condor/condor_config.local abbiamo aggiunto NETWORK_INTERFACE = 192.168.200.45 NETWORK_HOST = master FULL_HOSTNAME = master CONDOR_HOST = master e modificato
  • 5. UID_DOMAIN = $(FULL_HOSTNAME) FILESYSTEM_DOMAIN = $(FULL_HOSTNAME) CONDOR_IDS = 1001.1001 DAEMON_LIST = MASTER,SCHEDD,STARTD,COLLECTOR,NEGOTIATOR La modifica del file /home/condor/condor/etc/condor_config è analoga a quella del nodo così come la modifica del parametro MASTER nel file /home/condor/condor/etc/examples/condor.boot . 3.2.1 Configurazione del Checkpoint Server Le macchine che svolgono le funzioni di CM e checkpoint server vengono definite nei file di configurazione condor_config e condor_config.local . Pertanto abbiamo modificato il file generale aggiungendo le seguenti macro CONDOR_HOST = master CKPT_SERVER_HOST = master CKPT_SERVER_LOG = $(LOG)/CkptServerLog CKPT_SERVER_DIR = /home/condor/condor/ckpt_server_dir CKPT_SERVER = $(BIN)/condor_ckpt_server USE_CKPT_SERVER = TRUE Nel nostro caso CONDOR_HOST e CKPT_SERVER_HOST coincidono in quanto la stessa macchina svolge entrambe le funzioni. La variabile CKPT_SERVER_DIR indica la directory di checkpoint del pool. Nel file di configurazione locale invece, abbiamo modificato il valore delle seguenti macro MASTER = $(BIN)/condor_master.new DAEMON_LIST=MASTER,SCHEDD,STARTD,COLLECTOR,NEGOTIATOR,CKPT_SERVER La prima linea specifica la collocazione del binario che sarà eseguito per primo nella formazione del pool. La seconda linea dichiara la serie di processi che vengono attivati per costruire il CM e il checkpoint server; se il CM non funge anche da checkpoint server la stringa CKPT_SERVER non è specificata. 3.3 Configurazione delle policy Le policy sono espressioni booleane definite nei file di configurazione locale di Condor che vengono definite su ogni macchina. Ognuna di queste policy serve per definire le regole da applicare ad un job al verificarsi di determinate condizioni. Nel nostro caso, per quanto riguarda i nodi, abbiamo inserito le seguenti regole ● START = ( (KeyboardIdle > $(StartIdleTime)) && ( $(CPUIdle) || (State != "Unclaimed" && State != "Owner")) ) Avvia un job quando il tempo di inattività è maggiore della variabile StartIdleTime e la CPU è in stato di idle oppure quando lo stato è diverso da Unclaimed e da Owner. ● SUSPEND = ( $(KeyboardBusy) || ( (CpuBusyTime > 1 * $ (MINUTE)) && $(ActivationTimer) > 90 ) ) Sospende il job se la tastiera viene toccata oppure se la CPU è occupata per più di 2 minuti e il job è stato eseguito da più di 90 secondi. ● CONTINUE = ($(CPUIdle) && KeyboardIdle > $(StartIdleTime)) Continua il job se la CPU è libera è l'inattività della tastiera è maggiore di
  • 6. StartIdleTime. ● PREEMPT = ( ((Activity == "Suspended") && ($(ActivityTimer) > $(MaxSuspendTime))) || (SUSPEND && (WANT_SUSPEND == False)) ) Acquisisce per prelazione se l'attività è Suspended e il job è stato sospeso da molto tempo oppure se la sospensione non è voluta e la macchina è occupata. ● VACATE = ($(StateTimer) > $(MaxSuspendTime)) Richiede l'esecuzione di checkpoint e la migrazione del job su un'altra macchina se tale job è sospeso da MaxSuspendTime. Per quel che riguarda il CM invece abbiamo applicato le policy di default con la modifica della macro START settata a FALSE. In questo modo il CM assume sempre lo stato di Owner potendo solo sottomettere ma non eseguire i jobs. 4 Avvio di Condor Eseguita la configurazione è stato possibile avviare Condor con lo script condor.boot start A questo punto, attendendo alcuni secondi per dar tempo ai demoni di partire, sarà possibile visualizzare lo stato di Condor con il comando condor_status che produrrà il seguente output Illustrazione 4.1: Comando condor_status infine è possibile interrompere l'attività di Condor eseguendo lo script condor.boot stop 5 Esempi In questa sezione verrà mostrata la sottomissione di alcuni jobs in modo tale da vedere la loro distribuzione, esecuzione, sospensione e migrazione nei nodi del nostro cluster. Ricordiamo che i jobs posso essere sottomessi da tutte e tre le macchine ma solo i due slave possono eseguirli. 5.1 Creazione di un job Innanzi tutto abbiamo creato i sorgenti in linguaggio C dei jobs da sottomettere al nostro cluster.
  • 7. Dopodiché abbiamo creato il file di sottomissione come quello seguente nano nome_file.sub Executable = <nome_eseguibile> Universe = standard Output = <nome_eseguibile.out> Error = <nome_eseguibile.err> Log = <nome_eseguibile.log> should_transfer_file = YES when_to_transfer_output = ON_EXIT queue Visto che l'universo utilizzato è lo standard, per permettere la sospensione e la migrazione dei lavori in batch senza che il progresso accumulato su una macchina ospite vada perduto, Condor utilizza una libreria di checkpoint che consente di salvare l'intero stato di esecuzione di un programma prima di interromperlo, per poi riprendere l'esecuzione più tardi, eventualmente su un altra macchina ospite. Per utilizzare questa libreria, i programmi devono essere compilati con il seguente comando condor_compile gcc -o <nome_eseguibile> nome_file.c Nell'universo Standard Condor fornisce checkpointing e remote system calls; per preparare un programma per essere eseguito in questo universo si dovrà provvedere al re-link attraverso il comando condor_compile (non è quindi necessario modificare il codice sorgente). Tale universo comunque presenta alcune restrizioni come l’impossibilità di utilizzare shared memory, memory mapped files, interprocess communication e multi-process job. Ora abbiamo tutto quello che ci serve per sottomettere un job al nostro pool. 5.2 Sottomissione di job Per sottomettere job a Condor si utilizza il comando condor_submit file.sub Tramite l'utilizzo di questo comando un job aggiunto finisce in coda e appena una macchina è libera (idle) viene eseguito. Illustrazione 5.1: Comando condor_submit Si può visualizzare a video lo stato della coda con il comando condor_q . Uno o più jobs possono essere eliminati dalla coda utilizzando il comando condor_rm . Illustrazione 5.2: Comando condor_q
  • 8. 5.3 Sospensione dei job La sospensione di un job avviene quando l'owner riprende l'utilizzo della macchina su cui esso viene eseguito. In questo modo, tramite il checkpointing, viene salvato lo stato attuale del job che attende la migrazione verso un'altra macchina libera. Illustrazione 5.3: Sospensione 5.4 Migrazione dei job La migrazione di un job avviene quando quest'ultimo viene riattivato dopo una sospensione. Quando questo accade si cerca una macchina del pool libera e se esiste, l'esecuzione del job riparte esattamente da dove era stata sospesa. Illustrazione 5.4: Migrazione 6 Sicurezza La sicurezza in Condor è un problema ampio, con molti aspetti da prendere in considerazione. Visto che lo scopo principale di Condor è di consentire agli utenti di eseguire codice arbitrario su un gran numero di computer, è importante provare a limitare chi può accedere ad un Condor pool e quali privilegi hanno quando l'utilizzano. C'è una distinzione tra i tipi di attacchi che Condor può
  • 9. sconfiggere e no. Condor non può impedire violazioni della sicurezza di utenti con privilegi di root e account di amministrazione. Un esempio di job maligno è un attacco DoS distribuito. Condor assume che gli utenti siano fidati. Condor può impedire l'accesso non autorizzato al Condor pool, e aiuta a garantire che solo gli utenti fidati possano accedere al pool di macchine. Inoltre, Condor fornisce la crittografia e il controllo di integrità, per garantire che i dati non siano stati esaminati o manomessi da altri. Per garantire la sicurezza all'interno di un pool di macchine abbiamo studiato in maniera approfondita l'utilizzo delle macro ● HOSTALLOW_ADMINISTRATOR ● HOSTALLOW_READ ● HOSTALLOW_WRITE Queste macro definiscono il supporto di Condor per delegare l'amministrazione, controllare lo stato del pool, controllare lo stato della coda, sottomettere jobs ecc.. ad utenti che non siano amministratori. Viceversa grazie all'utilizzo delle macro ● HOSTDENY_ADMINISTRATOR ● HOSTDENY_READ ● HOSTDENY_WRITE è possibile applicare delle restrizioni agli utenti del pool. 6.1 Esempi In questa sezione presentiamo alcuni esempi di possibili configurazioni utilizzando le macro spiegate in precedenza. ● In questo esempio l'amministrazione, oltre che al CM, viene delegata al nodo “nodo” mentre viene negata a “nodo2” HOSTALLOW_ADMINISTRATOR = $(CONDOR_HOST), nodo HOSTDENY_ADMINISTRATOR = nodo2 ● In questo esempio l'amministratore è solo il CM, “nodo” può sottomettere jobs mentre “nodo2” no HOSTALLOW_ADMINISTRATOR = $(CONDOR_HOST) HOSTALLOW_READ = * HOSTDENY_WRITE = nodo HOSTALLOW_WRITE = nodo2