Bookmark and Share
Document Actions

Sincronizzare
medio

Il meccanismo di sincronizzazione è composto da due script Python: uno che fa da controller ed uno che effettua la sincronizzazione del Data.fs corrente. La sincronizzazione è innescata da uno scheduler, ad esempio cron. Chiamiamo lo script syncData.sh ogni minuto tramite cron, nel seguente modo:
* * * * * . .profile; $HOME/bin/syncData.sh <MASTER DATA DIR> <SLAVE DATA DIR> >> $HOME/var/log/syncData.log 2>&1
dove MASTER DATA DIR punta alla directory in cui la partizione NFS è stata montata e dove risiede il Data.fs; SLAVE DATA DIR punta alla directory in cui risiede il Data.fs slave.
Il profilo utente (identificato con .profile) contiene alcune impostazioni e variabili d'ambiente, come ad esempio il PYTHONPATH.

Lo stato della sincronizzazione, che questa debba essere eseguita o meno, viene registrata nel file syncPozo.status. In caso di crash del nodo slave, la sincronizzazione viene disabilitata. Il file contiene una sola riga:

SYNCING=[0|1]
Il valore 0 indica che il sistema di sincronizzazione non è attivo.
I sorgenti di entrambi i file syncPozo.py (il vero sincronizzatore) e syncData.sh (il controller script) sono in allegato.

Il file di log relativo all'uso di cron si trova in $HOME/var/log sotto il nome syncData.log.
Al suo interno potreste leggere uno o più dei seguenti messaggi:
Start syncing
Lo script ha iniziato la sincronizzazione
missing or empty .dat file (full backup) 
Nessun file Data.fs è stato trovato sullo slave, è stato quindi effettuato un backup completo
 No handlers could be found for logger "ZODB.FileStorage"
Non è stata settata la variabile PYTHONPATH per contenere le librerie Python prima di invocare lo script syncPozo.py. Il path delle librerie di Zope è <ZOPE INSTANCE>/lib/python.
Slave  (backup) file has grown since last syncing...
Il nodo slave è stato rimosso dalla sincronizzazione col master. E' consigliata la completa rimozione del Data.fs slave, e la forzatura di un backup completo.
NOT SYNCING FROM MASTER
 SYNCING è settato a 0 in syncPozo.status.
Finished syncing
E' tutto per questo round, gente!

Nota: assicuratevi che le librerie Python per Zope siano indicate correttamente nella variabile d'ambiente PYTHONPATH.


 
by Francesco Garasto last modified 2008-12-12 10:37
Contributors: Alessio De Leo