Einrichten eines Push-Spiegels

Einen Push-Spiegel aufzusetzen, besteht aus zwei Aufgaben: Einrichten des rsync-Zugangs (für normales, Pull-Spiegeln) und Einrichtung des Auslöse-Mechanismus (für den pushing-Teil des Pull-Spiegelns).

(Wenn Sie genauere Informationen darüber erhalten möchten, was ein Push-Spiegel ist, lesen Sie bitte die Beschreibung des Push-Spiegelns.)

rsync einrichten

Installieren Sie rsync 2.1.1 oder neuer. Wenn Ihr Rechner unter Debian läuft, installieren Sie einfach das neueste rsync-Paket.

Erzeugen Sie die Datei rsyncd.conf und schreiben Sie etwas Ähnliches wie das Folgende hinein:

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

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

Fügen Sie einen Eintrag für jeden Rechner zur Datei /etc/rsyncd/debian.secrets hinzu, bei dem Sie das Spiegeln einleiten:

autorisierter_Zugang1:ein_Passwort
autorisierter_ZugangN:ein_weiteres_Passwort

Sie haben jetzt den in der Hierarchie tiefergelegenen Spiegeln Zugriff zu Ihrem Rechner gewährt.

Sie möchten wahrscheinlich den rsync-Daemon von inetd aufrufen lassen. Um dies zu erledigen, müssen Sie den rsync-Dienst in die Datei /etc/services eintragen (falls er dort noch nicht steht), ungefähr wie folgt:

rsync           873/tcp

Um den Daemon per inetd zu starten, fügen Sie das Folgende zu Ihrer Datei /etc/inetd.conf hinzu:

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

(Sie müssen dem inetd anschließend ein HUP-Signal schicken, um ihm mitzuteilen, dass die Konfiguration neu eingelesen werden soll.)

Einrichten des SSH-Auslöser-Mechanismus

Erzeugen Sie einen neuen SSH-Schlüssel für den Zugang, den Sie verwenden, um Debian zu spiegeln. Stellen Sie sicher, dass Sie den eigentlichen SSH-Schlüssel nicht überschreiben, indem Sie die Option -f verwenden, beispielsweise:

ssh-keygen -f ~/.ssh/identity.meinRechner

Stellen Sie sicher, dass der neue öffentliche Schlüssel (~/.ssh/identity.meinRechner.pub) Folgendes am Dateianfang enthält:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/sync &"

Sie müssen ein Skript einrichten, das die tiefergelegenen Spiegel kontaktiert. Erzeugen Sie eine Datei mit dem Namen signal, die Folgendes enthält:

#!/bin/sh

# Dieses Skript wird gestartet, um dem entfernten Rechner zu signalisieren,
# dass es Zeit zum Spiegeln des Archivs ist.

echo Signalisiere $1
ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identity.meinRechner sleep 1

Dieses Skript wird sich mit dem speziellen SSH-Schlüssel, den Sie oben erstellt haben, auf einem entfernten Rechner einloggen, vorausgesetzt, jeder Spiegel unterhalb von Ihnen fügt diesen Schlüssel zu seiner eigenen ~/.ssh/authorized_keys hinzu (ebenfalls mit der Ersetzung von sync durch anonftpsync oder wie auch immer sein Befehl zum Starten des Spiegelns genannt ist). Das Skript selbst wird nichts sinnvolles auf dem entfernten Rechner machen, der einzelne Befehl wie er in der Schlüsseleinstellung angegeben ist wird ausgeführt.

Um den Spiegeln tatsächlich ein Signal zu senden, müssen Sie ./signal <Site> <Benutzername> ausführen, sobald Ihr eigener Rsync-Lauf beendet ist. Daher werden Sie an alle tieferliegenden von Ihnen die Daten weiterschieben, sobald Sie mit dem Spiegeln von Ihrer Ursprungs-Site fertig sind.

Sie könen diese Befehle entweder an das Ende Ihres Skriptes anonftpsync anfügen, oder, falls dies bequemer für Sie ist, in ein neues Skripte einfügen, und dann das Skript von anonftpsync ausführen lassen, beispielsweise:

#!/bin/sh

# Dieses Skript wird von websync gestartet, um Signale an die
# tiefergelegenen Spiegel zu senden.

./signal ein.anderer.Rechner archvsync
./signal ein.weiterer.Rechner Benutzername2

Falls Sie irgendwelche Probleme damit haben, kontaktieren Sie uns (auf Englisch).