Mettre en place un serveur de repoussage

Mettre en place un serveur de repoussage se résume à effectuer deux tâches relativement simples : mettre en place un accès rsync (comme pour faire un miroir par aspiration standard) et mettre en place un mécanisme déclencheur utilisant ssh (pour déclencher la mise à jour du miroir par repoussage).

Pour plus d'information sur ce qu'est un serveur de repoussage, merci de lire l'explication des miroirs par repoussage.

Mettre en place rsync

Installez rsync 2.1.1 ou une version supérieure. Si votre site tourne sous Debian, installez simplement le dernier paquet rsync.

Créez un fichier rsyncd.conf et mettez quelque chose comme ceci dans celui-ci :

uid = nobody
gid = nogroup
max connections = 25
socket options = SO_KEEPALIVE

[debian]
  path = /srv/debian/mirror
  comment = The Debian Archive (~250 GB)
  auth users = compte_autorisé1,compte_autorisé2,compte_autoriséN
  read only = true
  secrets file = /etc/rsyncd/debian.secrets

Pour chaque site dont vous faites un miroir par repoussage, ajoutez une entrée au fichier /etc/rsyncd/debian.secrets :

compte_autorisé1:un_mot_de_passe
compte_autorisé2:autre_mot_de_passe
compte_autoriséN:_mot_de_passe

Vous avez alors donné accès à l'archive se trouvant sur votre machine aux miroirs clients de votre machine.

Vous voudrez probablement lancer le démon rsync depuis inetd. Pour cela, vous devez d'abord ajouter le service rsync dans le fichier /etc/services (s'il n'y est pas déjà), comme ceci :

rsync           873/tcp

Pour lancer le démon avec inetd, ajoutez ce qui suit à votre fichier /etc/inetd.conf :

rsync      stream      tcp         nowait      root /usr/bin/rsync rsyncd --daemon

N'oubliez pas d'envoyer à inetd un signal HUP pour lui dire de relire son fichier de configuration après que vous l'avez modifié.

Mettre en place un mécanisme déclencheur ssh

Créez une nouvelle clé ssh pour le compte que vous utilisez pour faire un miroir de Debian. Faites attention à ne pas écraser votre clé ssh originale et pour cela utilisez l'option -f, par exemple :

ssh-keygen -f ~/.ssh/identite.monsite

Vérifiez que la nouvelle clé publique (~/.ssh/identite.monsite.pub) contient ceci au début du fichier, avec ADRESSEIP l'IP de votre miroir amont :

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/bin/ftpsync,,from="ADRESSEIP"
&"

Vous devez aussi mettre en place le script qui contactera les miroirs clients. Créez un fichier nommé signal, contenant ceci :

#!/bin/sh

# Ce script est appelé pour signaler à l'hôte distant qu'il est temps de
# mettre à jour le miroir à partir de l'archive.

echo Signalling $1
ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identite.monsite sleep 1

Ce script va se connecter sur un hôte distant en utilisant la clé ssh spéciale que vous avez créée ci-dessus, à condition que chaque opérateur de miroir client ajoute cette clef à son propre fichier ~/.ssh/authorized_keys (en remplaçant également ftpsync selon le nom de sa commande de lancement de la recopie). Ce script ne fait rien d'utile à distance en lui-même, la commande unique sera lancée comme spécifié par le paramétragede la clef.

Pour déclencher effectivement les miroirs, vous devez lancer la commande ./signal <site> <username> après avoir réalisé votre propre synchronisation. De cette façon, dès que votre site a terminé de mettre à jour son miroir à partir de son serveur, vous allez déclencher la mise à jour des sites clients de votre serveur.

Ce nouveau script, runmirrors, devrait contenir quelque chose comme ceci :

Vous pouvez placer ces commandes soit à la fin de votre ftpsync.conf, ou si vous préférez, dans un autre script et lancer ce script à partir de anonftpsync, par exemple de la façon suivante :

#!/bin/sh

# Ce script est appelé par websync pour déclencher les miroirs clients.

./signal un.autre.site archvsync
./signal et.un.autre.site autrecompte

Si vous avez le moindre problème avec ceci, contactez-nous.