Installation (debian)

# Étape 1. Installer le paquet csync2
apt-get install csync2
# La commande install les paquets: csync2 [146Ko] librsync1 [69Ko] libsqlite0 [174Ko]

# Étape 2. Créé un certificat auto-signé pour l'ordinateur numéro 1 (ne pas spécifier de mot de passe)
openssl genrsa -out /etc/csync2_ssl_key.pem 1024
openssl req -new -key /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.csr
openssl x509 -req -days 600 -in /etc/csync2_ssl_cert.csr \
        -signkey /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.pem

# Étape 3. prendre en note le nom d'hôte du serveur
hostname
# dans mon cas, il s'agit de host1

# Étape 4. tester si le deuxième serveur répond
ping host2
# s'il ne répond pas, ajouter host2 dans /etc/hosts avec le bon nom de domaine

# Étape 5. générer une clé pour un groupe de synchronisation
csync2 -k /etc/csync2_group1.key

# Étape 6. configurer le fichier /etc/csync2.cfg
group group1 {
  # serveur principal = host1, voir étape 3
  # serveur de backup = host2, les parenthèses spécifie () que host2 est seulement une copie de host1.
  host host1 (host2); 

  key /etc/csync2_group1.key; # voir étape 5
  
  include /backup; # synchronise le répertoire /backup
}

# Étape 6. répéter les étapes 1, 3 et 4 sur le deuxième serveur (ne pas générer de clé privée/publique avec openssl)
# Étape 7. copier les fichiers /etc/csync2_group1.key, /etc/csync2.cfg et /etc/csync2_ssl* sur le deuxième serveur.
  Note: j'ai essayé de générer deux certificats différents sur les hosts et le mode ssl échouait toujours avec un signal "broken pipe".
# Étape 8. s'assurer que inetd (paquet openbsd-inetd) fonctionne sur le deuxième serveur

Si vous utiliser le code source et vous n'installer pas le paquet de debian, vous devez ajouter les étapes suivantes:

# Étape 1.1. Ajouter csync2 à la configuration d'identd (/etc/inetd.conf)
echo "csync2 stream tcp nowait root /usr/sbin/csync2 csync2 -i" >> /etc/inetd.conf

Synchroniser

csync2 -x

Rajouter un, deux ou trois v après le "-x" pour avoir plus de commentaires, par exemple: csync2 -xv

Fichiers et ports

/etc/csync2.cfg
/etc/csync2_ssl_key.pem
/etc/csync2_ssl_cert.csr
/etc/csync2_ssl_cert.pem
/var/lib/csync2/hostname.db
TCP port 30865

/etc/csync2_group1.key

Problèmes

SSL et les certificats

J'ai eu beaucoup de problèmes pour envoyer mes fichiers. Au début, j'ai créé des certificats SSL différents sur chaque serveur. Malheureusement, la connexion SSL (SSL_connect()) échouait avec un signal "Broken Pipe" (vu avec le programme strace). J'ai ensuite essayé avec la commande nossl dans le fichier de configuration. La directive doit être doubler pour chaque couple: nossl host1 host2; nossl host2 host1; À ce stade, csync2 -x a fonctionné partiellement. Certains fichiers et répertoires étaient impossible à synchroniser. J'ai eu l'idée de copier le certificat SSL du premier serveur sur le deuxième et csync2 -x a fonctionné tout de suite.

Bug 501289 sur debian

/var/backups

group group1 {
        host host1 (host2)
        key /etc/csync2_group1.key;
        include /etc/csync2.cfg;
        backup-directory /var/backups/csync2;
        backup-generations 3;
        auto none;
}

Avec une configuration avec archivage (backup) des versions, je recevais cet erreur:

ERROR from peer siduxbox: Open error while backing up '/etc/csync2.cfg': No such file or directory

En fait, il s'agit plutôt d'un message qui devrait ressembler à:

ERROR from peer siduxbox: Open error while backing up '/etc/csync2.cfg' to '/var/backups/csync2/etc_csync2.cfg.0': No such file or directory for source or destination

Et la solution consiste à créer le répertoire /var/backups/csync2 sur les deux serveurs, pas sur seulement un!

Astuce pour les programmes

# pour redémarrer apache2, (le placer dans un groupe):
       action
       {
              pattern /etc/apache2/*.conf;
              pattern /etc/apache2/sites-available/*;
              exec "/usr/sbin/apache2ctl graceful";
              logfile "/var/log/csync2_action.log";
       }