1. PROCEDURA DI INSTALLAZIONE DI GLOBUS 1.1.2

R. Cucchi, G. Lo Biondo, F. Prelz, M. Sgaravatto, G. Vita Finzi

Maggio 2000

 

 

Le istruzioni di seguito riportate fanno riferimento alla documentazione di installazione del software globus (versione 1.1.2) contenuta alla pagina http://www.globus.org/v1.1/software/installation-1.1.html ed integrata con le informazioni circolate sulla lista tech-grid (tech-grid@infn.it).

Il sistema operativo al quale si fa riferimento e` Linux RedHat; la procedura di installazione descritta e` stata provata su Linux Red Hat 5.2 e Red Hat 6.1.

  1. Ogni sezione, che non sia gia` registrata, deve fare l'enrollment presso l'INFN. Le istruzioni per l’enrollment si possono trovare in: http://bond.cnaf.infn.it/enroll.html. Dopo l’enrollment vi arrivera` dopo qualche giorno come risposta il Distinguished Name della vostra sezione e la password del Directory Manager.
  2. Tutte quante le sezioni dell’INFN dovranno avere uguale il campo relativo all’organizational unit del tipo:

    ORGANIZATIONAL UNIT: Sezione di XYZ

    Mentre quella della organization sara' in ogni caso Istituto Nazionale di Fisica Nucleare.

    Nel caso si voglia registarare una Sub Organizational Unit, occorre specifcare la sezione (gia' registrata) e la sub OU, nei relativi campi del form. Nelle sub OU si possono registrare esperimenti ed altre entita' che afferiscono alle sezioni.

     

  3. Create un utente "globus" ed una dir di installazione (consigliata /usr/local/globus).
  4. Occorre avere installato NTP per la sincronizzazione con le altre macchine di globus (per ottenere NTP fare riferimento a http://www.eecis.udel.edu/~ntp/). Non dovrebbe servire se si ha gia` AFS installato.
  5. Installare SSLeay0.9.0b, seguendo le istruzioni contenute in
  6. http://www.globus.org/v1.1/software/installation-1.1.html - Precursory Steps

  7. Installare OpenLDAP: il software si preleva da ftp://ftp.globus.org/pub/globus/OpenLDAP-1.2.7-globus.tar.gz; occorre settare la variabile CC=gcc nel caso di Linux (per dettagli di installazione fare riferimento alla URL di cui al punto 5.). Se si ha AFS installato puo` servire includere l’opzione –without-kerberos.
  8. Scaricare la versione 1.1.2 del software di globus da ftp://ftp.globus.org/pub/globus/globus-1.1.2.tar.gz
  9. Dopo l’uncompressing e l’untarring, e` necessario correggere un bug. Nel file: /globus/Startup/globus-gatekeeper-register.in e` necessario modificare PORT-NUM in PORT_NUM. Senza questa modifica viene registrata in modo errato nell'MDS la contact string relativa al gatekeeper.
  10.  

  11. Come utente "globus" fare il building del software mediante il comando "globus-install" (per ottenere una lista completa nelle opzioni del comando lanciare: globus-src-dir/globus-install --help); le opzioni di base sono: nome della dir di installzione di globus, dir di installazione di SSLeay e la dir di installazione di OpenLDAP; quindi una versione base del comando e:
  12. globus-src-dir/globus-install \

    --prefix=globus-install-dir \

    --with-ssl-path=ssl-install-path \

    --with-ldap-path=ldap-install-path

    Alla pagina http://www.globus.org/v1.1/software/installation-1.1.html - The Globus Directory Structure si tova la struttura completa della dir di installazione di globus una volta terminato il building del software.

  13. Occorre settare le seguenti variabili per tutti gli utenti, non solo lo user "globus", che vogliano usare globus; per tale motivo e` conveniente inserire le seguenti istruzioni ad esempio nell’ /etc/profile, /etc/csh.cshrc, ecc…
  14. csh-style:

    setenv GLOBUS_INSTALL_PATH "globus-install-dir"

    source $GLOBUS_INSTALL_PATH/etc/globus-user-setup.csh

    bash-style :

    GLOBUS_INSTALL_PATH="globus-install-dir"

    export GLOBUS_INSTALL_PATH

    $GLOBUS_INSTALL_PATH/etc/globus-user-setup.sh

  15. Modificare il file di configurazione globus-install-dir/etc/grid-info.conf in modo che sia
  16. GRID_INFO_HOST="mds.infn.it"

    GRID_INFO_BASEDN="o=Istituto Nazionale di Fisica Nucleare, o=Globus, c=US"

    GRID_INFO_ORGANIZATION_DN="ou=Sezione di XYZ, $GRID_INFO_BASEDN"

    Teoricamente GRID_INFO_BASEDN dovrebbe essere " o=Globus, c=US": l'aggiunta di "o=Istituto Nazionale di Fisica Nucleare" evita che venga interpellato il server MDS di Globus negli Stati Uniti. Se sara' necessario interagire con altre organizzazioni di globus occorre modificare questo valore.

  17. Set up di globus: occorre avere ricevuto la risposta all’enrollment di cui al punto 1; questa deve contenere il Distinguished Name (DN) e la password per la propria sezione; ad es. il DN del cnaf e` ou=CNAF, o=Istituto Nazionale di Fisica Nucleare, o=Globus, c=US. Come utente "globus" lanciare il comando globus-install-dir/sbin/globus-setup (occorre aver definito la variabile GLOBUS_INSTALL_PATH come al punto 8). Durante il set up il server MDS e la porta dovrebbero essere gia` settati nel modo giusto (server mds.infn.it, porta 391); inserire poi DN e password. Si deve avere una cosa del tipo:
  18. (1) MDS host: [ mds.infn.it ]

    (2) MDS port: [ 391 ]

    3) Base DN of the organization:

    [ ou=CNAF, o=Istituto Nazionale di Fisica Nucleare, o=Globus, c=US ]

    (4) DN of the administrator:

    [ cn=Directory Manager, ou=Sezione di XYZ, o=Istituto Nazionale di Fisica Nucleare, o=Globus, c=US ]

    Con la validazione dei dati al punto (6) del set up la vostra macchina si collega al server mds.infn.it e verifica che siano presenti le informazioni relative al vostro DN e alla vostra password.

  19. Configurazione del gatekeeper: di default globus configura il gatekeeper in modo che utilizzi come porta la 754/tcp (globus-install-dir/etc/globus-gatekeepers.conf) e come jobmanager lo unix fork (globus-install-dir/etc/globus-services.conf); per cambiare tale configurazione (ad es. per configurare come jobmanager anche lo scheduler "Condor") cambiare i file relativi secondo le indicazioni contenute nella pagina http://www.globus.org/v1.1/software/installation-1.1.html - Configuring the Globus Gatekeeper and Se.
  20. Deploy di Globus: la prima volta che viene fatto il deploy creare come root una dir di deploy (tipicamente /opt/globus) e cambiarne l’owner in "globus". Come user "globus" eseguire i comandi:

% setenv GLOBUS_INSTALL_PATH globus-install-dir

% globus-install-dir/sbin/globus-local-deploy deploy-dir.

Vengono visualizzate le istruzioni da compiere di seguito (e contenute nel file globus-install-dir/tmp/globus-root-instructions): come prima cosa occorre inviare alla certification authority (per il momento ca@globus.org, in seguito la CA interna dell’infn) la richiesta di certificato generata dal processo di deploy (deploy-dir /etc/globus-gatekeeper.request); tale mail deve essere inviata con account personale di posta, non come "globus" user.

Se il deploy era gia` stato fatto in precedenza sulla macchina e lo si deve ripetere per riconfigurare il gatekeeper (ad es. perche` si e` aggiunto come scheduler "Condor"), si consiglia di mantenere i file contenenti il certificato e la chiave (globus-gatekeeper.cert e globus-gatekeeper.key), salvandoli preventivamente in una dir diversa da deploy-dir.

Lanciare il comando di deploy con le seguenti opzioni:

% globus-install-dir/sbin/globus-local-deploy -cert certfile -key keyfile deploy-dir.

Nel caso le opzioni sopra non vengano utilizzate verra` generata una richiesta per un nuovo certificato e quello precedente verra` perso.

 

ATTENZIONE: nel file grid-info-system.log potrebbe essere segnalato un errore nell’esecuzione di grid-info-remove per il quale occorre fare riferimento alla pagina http://www.globus.org/v1.1/software/known-deficiencies.html

ATTENZIONE: nel file globus-system.log viene segnalato un errore relativo a Heartbeat Monitor (HBM) dovuto al fatto che i relativi sorgenti non vengono compilati durante l’esecuzione del comando globus-install e devono essere compilati a posteriori. Questo applicativo non sembra essere indispensabile per il tipo applicazioni di globus di interesse al momento.

  1. Dopo avere ricevuto il certificato del gatekeeper dalla CA, occorre richiedere in maniera analoga un certificato personale di utente: la procedura di richiesta e`
  2. grid-cert-request

    Poi si manda a ca@globus.org il file ~/.globus/usercert_request.pem

    Ancora una volta occorre utilizzare un account di posta personale che non sia quello di un generico user "globus".

  3. Il file grid-mapfile, presente nella deploy-dir/etc contiene la lista degli utenti autorizzati ad accedere alla macchina tramite l’autenticazione di globus: introdurre il "subject" del proprio certificato di utente per primo. Al fine di essere autenticati presso altre macchine, occorre che il "subject" del proprio certificato di utente sia presente nel grid-mapfile della macchina remota.
  4. Per visualizzare il proprio certificato di utente usare il comando

    Grid-cert-info [-file <certfile>] –subject

    Ogni certificato deve figurare come una linea del grid-mapfile avente il seguente aspetto

    "/C=US/O=Globus/O=Istituto Nazionale di Fisica Nucleare/OU=CNAF/ CN= Nome Cognome" globususer

    dove "globususer" e` un uno user della macchina globus. E` possibile utilizzare il comando grid-mapfile-add-entry per introdurre un nuovo certificato nel proprio grid-mapfile.

  5. Alcune prove per verificare il corretto funzionamento di globus al termine dell’installazione: oltre ai test del gatekeeper riportati nel file globus-deploy-dir/tmp/globus-root-instructions (cfr. punto 12 del presente documento), provare il corretto funzionamento dei seguenti comandi:

Una volta settata correttamente la var GLOBUS_INSTALL_PATH, lanciare il comando ‘grid-proxy-init’, che serve a generare un certificato proxy per l’utente (usare ‘–help’ per la lista completa delle opzioni); il comando richiede la PEM pass phrase e se la generazione ha successo l’output e` del tipo

% grid-proxy-init

Enter PEM pass phrase:

..+++++

.................+++++

A questo punto si dispone di una autenticazione valida per un certo numero di ore (12 di default) che puo` essere visualizzata in ogni momento con il comando

% grid-proxy-info -all

subject : /C=US/O=Globus/O=Istituto Nazionale di Fisica Nucleare/OU=CNAF/CN=Nome Cognome/CN=proxy

issuer : /C=US/O=Globus/O=Istituto Nazionale di Fisica Nucleare/OU=CNAF/CN=Nome Cognome

type : full

strength : 512 bits

timeleft : 11:52:14

Il comando fondamentale per sottomettere un job ad una macchina tramite globus e` ‘globusrun’; nel caso si voglia eseguire il semplice comando di echo "Hello World" su una macchina remota globus.cnaf.infn.it sulla quale si e` autenticati (nel grid-mapfile di globus.cnaf.infn.it e` presente un’entry con il certificato dell’utente in questione) utilizzando come jobmanager fork, lanciare

% globusrun -s -r globus.cnaf.infn.it/jobmanager-fork '&(executable=/bin/echo) (arguments="Hello World")'

Al fine di rendersi conto di quali siano le informazioni nel server MDS relative alla propria o ad un’altra macchina vedere il comando grid-info-search, di cui riportiamo un esempio:

% grid-info-search '(hostname=globus.cnaf.infn.it)'

hn=globus.cnaf.infn.it, ou=CNAF, o=Istituto Nazionale di Fisica Nucleare, o=Globus, c=US

creatorsname=cn=Directory Manager,ou=CNAF,o=Istituto Nazionale di Fisica Nucleare,o=Globus,c=US

createtimestamp=20000225133515Z

objectclass=top

objectclass=GlobusTop

objectclass=GlobusPhysicalResource

objectclass=GlobusComputeResource

objectclass=GlobusOperatingSystemInformation

objectclass=GlobusCacheInformation

objectclass=GlobusMemoryInformation

objectclass=GlobusManagerInformation

objectclass=GlobusCpuInformation

objectclass=GlobusSystemDynamicInformation

objectclass=GlobusBenchmarkInformation

lastupdate=Tue Mar 7 08:16:35 GMT 2000

rn=Host globus.cnaf.infn.it

imageobject=undefined

imageobject=hn_image=globus.cnaf.infn.it, nn_image=131.154.3.0, nn_image=131.154.0.0, ou=CNAF, o=Istituto Nazionale di Fisica Nucleare, o=Globus, c=US

hn=globus.cnaf.infn.it

objectname=hn=globus.cnaf.infn.it, ou=CNAF, o=Istituto Nazionale di Fisica Nucleare, o=Globus, c=US

ttl=04:00:00

resourcename=Host globus.cnaf.infn.it

hostname=globus.cnaf.infn.it

canonicalsystemname=i686 unknown linux 2.0.36

manufacturer=unknown

model=Pentium II (Deschutes)

machinehardwarename=i686

type=workstation

osname=linux

osversion=i686 unknown linux 2.0.36

osrelease=2.0.36

ostype=linux

physicalmemorysize=124 MBytes

cputype=GenuineIntel Pentium II (Deschutes) 686 (step 2) (fpu vme de pse tsc msr

pae mce cx8 sep mtrr pge mca cmov 16 17 mmx 24)

fputype=GenuineIntel Pentium II (Deschutes) 686 (step 2) (fpu vme de pse tsc msr

pae mce cx8 sep mtrr pge mca cmov 16 17 mmx 24) (fdiv_bug no)

cpucount=1

cpuspeed=400 MHz

cpuload1=0.00

cpuload5=0.00

cpuload15=0.00

modifiersname=cn=Directory Manager,ou=CNAF,o=Istituto Nazionale di Fisica Nuclea

re,o=Globus,c=US

modifytimestamp=20000307081327Z

 

Accedendo all’URL:

http://bond.cnaf.infn.it/cgi-bin/mdsbrowse.pl

e` inoltre possibile utilizzare un browser grafico, che permette di visualizzare in maniera molto semplice il contenuto del MDS server dell’INFN.

 

ALTRI ERRORI CHE POTREBBERO VERIFICARSI

per i due script, che nella distribuzione si chiamano

./InformationServices/mds/mds-build/grid-info-host.in

./InformationServices/mds/mds-build/grid-info-interfaces.in

non e` stata ricavata, sotto Linux, la lista corretta delleinterfacce. Si tratta delle procedure alle righe 146-162 del primo scripted alle righe 47-52 del secondo. Per Linux, un buon sostituto per ambedue sembra essere:

INTERFACES=`${GLOBUS_SH_CAT-cat} /proc/net/dev |\

${GLOBUS_SH_SED-sed} -e '1,2d' |\\

${GLOBUS_SH_SED-sed} -e 's/\:.*//' |\

${GLOBUS_SH_SED-sed} -e 's/^ *//' |\

${GLOBUS_SH_SED-sed} -e "/lo.*/d"`

Il globus-gatekeeper delle distribuzione, ed in particolare i child che vengono generati subito dopo una connessione, eseguiti su linux con glibc, vanno in crash con SEGV. Il problema avviene alla riga 1119 di ResourceManagement/gram/programs/gatekeeper/globus_gatekeeper.c

dove si tenta di eliminare la bufferizzazione di stdout, che e' stato appena chiuso e collegato con fdopen ad una socket. Commentando le righe 1029, 1036, 1115, 1118 dello stesso file (fclose e fopen di stdin e stdout) si dovrebbe curare il crash e far si' che l'esecuzione di "globusrun" (anche invocato da globus-setup-test) non fallisca piu'. Il messaggio di errore e` "authentication error" anche se l'autenticazione non tenta neppure di avvenire, visto che il demone del gatekeeper muore immediatamente.

Questo errore si e` verificato su una macchina avente un kernel 2.0.32 e glibc 2.1.2-1