Next: Comunicazioni nel Cluster
Up: Configurazione dei Nodi
Previous: Altre configurazioni
Indice
La configurazione dei nodi del cluster, essendo ripetitiva e simile per tutti i computers, ha permesso di creare degli strumenti per la gerstione del cluster in modo da renderla piú veloce. É stata mia cura, quindi, scrivere degli scripts che eseguissero azioni in modo batch per i nodi. L'uso di scripts mi ha permesso anche di inserire piccoli accorgimenti come la ricerca di potenziali errori di configurazione o incongruenze nelle configurazioni stesse.
Il linguaggio di script da me scelto é il quello della shell BASH (Bourne-Again SHell) perché molto flessibile e portabile su molte piattaforme. Tutti gli scripts risiedono nella directory /tftpboot/utility e si apponggiano ad un unico file di configurazione chiamato cluster.conf che risiede sempre dentro questa directory.
Alcune utilities, per poter comunicare con gli altri nodi, usano il comando ssh. Per fare in modo che la connessione ad un nodo non richieda l'autotentificazione del proprio utente, basta eseguire le seguenti istruzioni:
- Lanciare il comando: ssh-keygen -t dsa
- Copiare il file $HOME/.ssh/id_dsa.pub nel file $HOME/.ssh/authorized_keys
Nella tabella
sono riportati gli scripts utilizzati nella gestione del cluster.
Tabella:
Scripts per la gestione del cluster.
Nome: |
Funzione: |
maketemplate.sh |
Creazione del Template |
makenode.sh |
Creazione del nodo |
dhcpdgen.sh |
Generazione del dhcpd.conf |
confignode.sh |
Configurazione del nodo |
updatefile.sh |
Aggiornamento dei files |
confignet.sh |
Configurazione della rete locale |
updateuser.sh |
Aggiornamento degli utenti |
rmnode.sh |
Cancellazione di un nodo |
daemons.sh |
Lancio dei demoni del server |
pingall.sh |
Test per l'attivitá dei nodi |
localantest.sh |
Test per la rete locale |
launcher.sh |
Replica di un comando per tutti i nodi |
|
|
- maketemplate.sh:
Questa utility crea un template del filesystem per i nodi all'interno della directory /tftpboot partendo dal filesystem del server. Oltre a fare una copia dei files fa delle piccole configurazioni generiche per tutti i nodi, in modo da aver una base piú omogenea per la creazione del filesystem dei nodi.
SYNOPSIS: maketemplate.sh
- makenode.sh:
Una volta creato il template si puó procedere alla creazione di filesystems per i nodi. Per fare questo ho scritto lo script makenode.sh. Principalmente questa utility riesegue in linea di massima i passi fatti dall'utility maketemplate.sh, ma utilizzando come sorgente il template. Questa utility una volta lanciata crea una directory chiamta come il nome del nodo all'interno della directory /tftpboot con all'interno il filesystem per il nodo.
SYNOPSIS: makenode.sh [Node name]
- dhcpdgen.sh:
In considerazione del fatto che in molte configurazioni c'é uno stretto legame tra nome del nodo, il suo indirizzo IP e il suo MAC address e queste informazioni risiedono all'interno del file /etc/dhcpd.conf, ho provveduto a scrivere una utility che creasse questo file di configurazione in modo che potesse essere compatibile con gli altri script successivamente utilizzati. Lo script dhcpdgen.sh, partendo da un file di testo appositamente formattato stampa sullo standard output la configurazione da scrivere all'interno del file /etc/dhcpd.conf.
SYNOPSIS: dhcpdgen.sh [File]
- confignode.sh:
Questa utility provvede a configurare il filesystem del nodo, il suo startup e shutdown e il boot via rete. Come detto prima questa utility prevede che il file diconfigurazione /etc/dhcpd.conf sia stato creato con l'apposita utility dhcpdgen.sh.
SYNOPSIS: confignode.sh [Node name]
- updatefile.sh:
Ogni file, che deve essere aggiunto o modificato, comune a tutti i nodi e al template puó essere aggiunto grazie a questa utility. All'interno della directory /tftpboot/utility vi é una directory chiamta template_files; all'interno di questa directory vanno posti tutti i files da aggiungere o giá modificati. I files devono avere il nome del file da sostituire od aggiungere compreso il path completo partendo dalla root del filesystem; la posto del carattere / va messo il carattere +. Per esempio se il file da sostituire é /etc/xinetd.d/rlogin il nome del file é etc+xinetd.d+rlogin. Lo script fa l'update dei files presenti nella directory per il template e per tutti i nodi.
SYNOPSIS: updatefile.sh
- confignet.sh:
Questo é lo script deputato alla configurazione della rete locale del cluster. Il suo compito é configurare le quattro schede di rete per la rete locale e creare il file /etc/hosts per ogni nodo. Come ultima azione provvede anche a generare il file /etc/hosts per il server. Come informazioni di input lo script necessita le due dimensioni della matrice formata dai nodi del cluster.
SYNOPSIS: confignet.sh [SIZE X] [SIZE Y]
- updateuser.sh:
Tutti i nodi condividono la home degli utenti con quella del server, peró infomazioni come UID e GID dell'utente e la sua password devono essere replicate per ogni nodo; di conseguenza al momento della creazione di un nuovo utente va lanciata questa utility per rendere attivo l'account su tutti i nodi. L'utility prevede anche un'opzione (-s) per evitare che venga prodotto dell'output durante la sua esecuzione. Questo permette di poterla eseguire in modo batch una tamtum da un demone come crond o atd.
SYNOPSIS: updateuser.sh
- rmnode.sh:
Nel caso si voglia cancellare il filesystem di un nodo e le sue configurazioni per il boot via rete si puó usare questa utility in modo da velocizzare l'operazione di rimozione. Questa utility permette anche di evitare di commettere errori durante una potenziale cancellazione manuale di un nodo.
SYNOPSIS: rmnode.sh [Node name]
- daemons.sh:
Questa utility é stata creata per avviare o fermare tutti i servizi che il server deve avere attivi per far si che il cluster parta. Prima di avviare i servizi fa un controllo su alcune e importanti configurazioni del server nel caso che, per qualche dimenticanze non siano state fatte o ci siano degli errori di configurazione.
SYNOPSIS: daemons.sh [start|stop|restart]
- pingall.sh:
Una volta fatto il boot di tutti i computers per controllare se tutti sono partiti si puó utilizzare questa utility che fa un ping tramite la rete globale ad ogni nodo del cluster.
SYNOPSIS: pingall.sh
- localantest.sh:
In considerazione del fatto che la connessione di tutti i cavi per creare la rete locale puó facilmente causare degli errori, ho creato questa utility che, una volta lanciata, controlla tutte le connessioni locali dei nodi. Questo facilita il debug delle connessioni della rete locale. Lo script dá come infomazioni lo stato della connessione di ogni nodo con i quattro connessi direttamente.
SYNOPSIS: localantest.sh [SIZE X] [SIZE Y]
- launcher.sh:
Per gestire il cluster era necessaria un'utility che eseguisse una stessa istruzione per tutti i nodi. L'utility chiamta launcher.sh serve appunto a questa necessitá.
SYNOPSIS: launcher.sh "[commands...]"
Next: Comunicazioni nel Cluster
Up: Configurazione dei Nodi
Previous: Altre configurazioni
Indice
Mario Cavicchi
2004-07-22