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, wobei IPADDRESS die IP-Adresse Ihres Quellspiegels ist:

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

Sie müssen ein Skript einrichten, das die tiefergelegenen Spiegel kontaktiert. Das ftpsync-Tarball-Archiv enthält das Skript runmirrors, welches alle nötigen Aktionen für Sie erledigt. Ändern Sie einfach Ihre ftpsync.conf, so dass Sie die Einstellung HUB=true enthält, kopieren Sie runmirrors.conf.sample nach runmirrors.conf und runmirrors.mirror.sample nach runmirrors.mirror; konfigurieren Sie die config-Datei Ihren Bedürfnissen entsprechend. Listen Sie dann alle Ihre tiefergelegenen Spiegel innerhalb von runmirrors.mirror auf und das Duo ftpsync/runmirror wird all die heftigen Transferoperationen für Sie durchführen.

Der Effekt ist, dass, nachdem Ihr eigener Spiegel aktualisiert wurde, Ihr System versuchen wird, sich per SSH auf Ihren tiefergelegenen Spiegeln einzuloggen, so dass diese ihre Aktualisierungen starten können. Dabei wird davon ausgegangen, dass Sie den Betreibern Ihrer tiefergelegenen Spiegeln den SSH-Schlüssel gegeben haben, den runmirrors laut Ihrer Konfiguration verwendet, und dass die Betreiber ihn wie oben beschrieben zu ihrer ~/.ssh/authorized_keys hinzugefügt haben.

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