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