Obiettivo
vogliamo mantenere la stessa directory sincronizzata su due server linux.
Questo significa che ogni aggiunta/rimozione/modifica di file in questa directory verrà automaticamente riportato sull’altro (salvo conflitti). Diamo per assunto che i due server siano raggiungibili via rete, ma per qualsiasi motivo non sia possibile collegare dello spazio disco condiviso.
Implementazione
Per raggiungere lo scopo, utilizzeremo il tool: csync2
su entrambi i server (che chiameremo nodo1 e nodo2), installiamo i pacchetti necessari:
# apt-get install csync2 incron
mentre sul primo creiamo la chiave di cifratura e il certificato che verra’ usato nella connessione SSL. Notiamo che csync2 utilizza 30865/tcp per le proprie comunicazioni, per cui assicuriamoci di abilitare le connessioni in ingresso su tale porta.
n1# csync2 -k /etc/csync2.key
n1# openssl genrsa -out /etc/csync2_ssl_key.pem 2048
n1# openssl req -batch -new -key /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.csr
n1# openssl x509 -req -days 3600 -in /etc/csync2_ssl_cert.csr -signkey /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.pem
creiamo il file /etc/csync2.cfg che conterra’ le definizioni per il gruppo di sincronizzazione
copiamo il tutto anche sul nodo2:
n1# scp /etc/csync2* nodo2:/etc/
per default, csync2 su debian utilizza inetd, ma e’ semplice configurarlo per girare come standalone o xinetd. dopo aver fatto partire i servizi su entrambi i nodi, possiamo usare il comando
n1# csync2 -xv
*/3 * * * * /usr/sbin/csync2 -xv
Questo e’ indispensabile anche nel caso di temporaneo down o spegnimento di uno dei due sistemi; ma se preferissimo una sincronizzazione immediata , potremmo usare incron che usando l’interfaccia inotify, resta in ascolto di determinati eventi su una specifica directory e al verificarsi delle condizioni desiderate, esegue il comando configurato. Nel nostro caso, possiamo inserire nella incrontab una entry simile a questa:
ovvero, controlla la directory /mnt/sync e ogni volta che vengono cambiati attributi, creati, cancellati, salvati o spostati file esegui la sincronizzazione.