Linux - synchronisation de fichier via csync2
Alasta 10 Mars 2014 linux cli Linux Open Source Synchro
Description : Csync2 permet de faire de la synchronisation de fichiers entre les membres d'un cluster.
Avant-propos
L'avantage de cette synchronisation c'est que celle-ci se fait via SSH, en revanche il y a quelques inconvénients comme le fait de mettre en place des connexions SSH par clés pour root (à approfondir pour valider s'il n'y a pas un autre moyen) et le fait que la synchronisation est uni-directionnelle (du moins je n'y suis pas arrivé ...)
Installation de csync2
# yum -y install csync2
Sur chaque node du cluster
# cd /etc/csync2 # openssl genrsa -out csync2_ssl_key.pem 2048 # openssl req -new -key csync2_ssl_key.pem -out csync2_ssl_cert.csr # openssl x509 -req -days 600 -in csync2_ssl_cert.csr -signkey csync2_ssl_key.pem -out csync2_ssl_cert.pem
Sur un node
On génère une PSK (une clé partagée) :
# csync2 -k csync.key
Après on la met dans /etc/csync2 sur les 2 nodes.
Sur chaque node du cluster
Edition du fichier de configuration /etc/csync2/csync2.cfg
group moncluster { #Les membres du cluster host node1; host node2; #La PSK key /etc/csync2/csync2.key; #Les dossiers/fichiers à mettre dans la synchro include /home/alasta; #Les exclusions potentielles exclude *~ .*; #Optionnellement une action action { #Quand le fichier suivant est mis à jour, on génère un log pattern /home/alasta/aaaa; exec "logger csync2 action"; } }
Edition du fichier de configuration du démon /etc/xinetd.d/csync2 (pour lui indiquer de se lancer au boot), celui-ci est piloté par xinetd.d
# default: off # description: csync2 service csync2 { flags = REUSE socket_type = stream wait = no user = root group = root server = /usr/sbin/csync2 server_args = -i port = 30865 type = UNLISTED #log_on_failure += USERID disable = no # only_from = 192.168.199.3 192.168.199.4 }
Démarrage du service pour la prise en compte
# service xinetd restart
Vérification que le démon tourne
# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME xinetd 957 root 5u IPv6 10543 0t0 TCP *:30865 (LISTEN)
Si vous utilisez un firewall penser à ouvrir le port 30865
Synchro de fichiers d’un mode vers l’autre :
# csync2 -x
Possibilité d’ajouter l’option « v » pour le verbose
# csync2 -xv Connecting to host node1 (SSL) ... Updating /home/alasta/cc on node1 ... Finished with 0 errors.
Forcer le fichier local à être vu comme nouveau => pas arrivé à faire fonctionner
csync2 -f fichier
Voir la différence entre un/des fichiers locaux et distant
MAJ de la db local
csync2 -cr /
Fichiers différents
# csync2 -T X node2 node1 /home/alasta/aaaa
Verbose
# csync2 -TT --- node1:/home/alasta/aaaa +++ node2:/home/alasta/aaaa @@ -1,4 +1,8 @@ noder1 +noder1 +noder1 +noder1 +noder1 ypppp test16 test16
Synchro que d’un groupe
csync2 -xv -G moncluster
Affichage de la db
csync2 -L