Gentoo Logo

Die Richtlinie für Gentoo Linux Rsync-Mirror

Inhalt:

1.  Vorbereitende Maßnahmen

Ausdrücke, Namen und so weiter

Dieser Leitfaden zielt auf die Leute ab, die einen eigenen rsync-Mirror aufsetzen wollen. Er ist nicht nur auf die ausgerichtet, die einen offiziellen rsync-Mirror betreiben wollen, sondern auch auf die, die private Mirror erstellen wollen.

Es gibt drei Arten von Gentoo rsync-Mirrorn: "main rotation"-Mirror, Community-Mirror und private Mirror. "main rotation"-Mirror werden vom Gentoo Infrastruktur-Team verwaltet. Sie handhaben den Großteil des Gentoo-rsync-Traffics. Die Community-Mirror werden von Freiwilligen aus der Gentoo-Community betrieben. Private Mirror sind Mirror, die von einzelnen Personen betrieben werden und von der Öffentlichkeit abgeschnitten sind, da sie nur die Kosten für den Traffic und die Latenzen für eine Firma oder für bestimmte Leute gering halten sollen.

Zu diesem Zeitpunkt haben wir genug Community-Mirror und suchen aktiv weitere Hauptrotations-Mirror. Hardware-Spezifiaktionen für Hauptrotations-Mirror beinhalten:

  • Mindestens ein 2GHz Pentium 4 Prozessor (64-Bit mit mindestens 2 Kernen bevorzugt)
  • Minimum von 2GB Ram (3GB - 4GB sind ideal)
  • 15GB Festplattenspeicher (IDE/SATA ist in Ordnung)

Die Hardware würde weiterhin physisch in Ihrem Besitz bleiben und Sie würden sie an Ihrem Collocation-Platz online halten. Die durchschnittliche Bandbreite für einen Hauptrotations-Mirror beträgt momentan ~10Mbit/s (etwa 2,6 TiB im Monat). Sowie sich die Anzahl der Hauptrotations-Mirror erhöht, sollte sich diese Zahl entsprechend verringern.

Wenn Sie Ihren Rechner spenden möchten, dann schicken Sie bitte eine Email an die Mirror Admins mit den weiteren Informationen.

2.  Aufsetzen eines eigenen lokalen rsync-Mirrors

Einleitung

Viele Benutzer haben Gentoo auf mehreren Rechnern und müssen den Portage-Baum auf allen von ihnen synchronisieren. Das Benutzen von öffentlichen Mirrorn ist also eine Verschwendung von Bandbreite an beiden Enden. Das Synchronisieren nur eines Rechners mit einem öffentlichen Mirror und alle anderen Rechner gegen diesen Rechner würde Ressourcen auf den Gentoo-Mirrorn und die Bandbreite der Benutzer sparen.

Dasselbe gilt für Firmen, die den rsync-Mirror kontrollieren möchten, gegen den ihre Server und Workstations synchronisieren. Natürlich wollen sie normalerweise auch Bandbreite und Traffikkosten sparen.

Alles, was Sie tun müssen, ist einen Rechner auszuwählen, welcher Ihr lokaler rsync-Mirror sein wird, und diesen aufzusetzen. Sie sollten einen Computer wählen, der die CPU- und Plattenlast, die eine rsync-Operation erfordert, verarbeiten kann. Ihr lokaler Mirror muss auch verfügbar sein, wenn einer Ihrer anderen Computer seinen Portage-Baum synchronisiert. Außerdem sollte er eine statische IP-Adresse oder einen Namen, der immer auf Ihren Server ausgelöst wird, besitzen. Die Konfiguration eines DHCP- und/oder DNS-Servers würde den Rahmen dieses Leitfadens sprengen.

Beachten Sie, dass diese Anleitungen annehmen, dass Ihr privater rsync-Mirror ein Gentoo-Rechner ist. Wenn Sie vorhaben ihn auf einer anderen Distribution zu betreiben, könnte der Leitfaden zum Aufsetzen eines Community-Mirrors hilfreicher sein. Synchronisieren Sie Ihren Mirror einfach nicht jede halbe Stunden, sondern ein- oder zweimal pro Tag.

Den Server aufsetzen

Es gibt kein separates Paket, das Sie installieren müssen, da die benötige Software bereits auf Ihrem Computer installiert ist. Das Aufsetzen eines eigenen lokalen rsync-Mirrors ist nur eine Frage der Konfiguration des rsyncd Daemons, um Ihr Verzeichnis /usr/portage zur Synchronisierung verfügbar zu stellen. Erstellen Sie die Konfigurationsdatei /etc/rsyncd.conf wie folgt:

Befehlsauflistung 2.1: Beispiel /etc/rsyncd.conf

pid file = /var/run/rsyncd.pid
max connections = 5
use chroot = yes
uid = nobody
gid = nobody
# Optional: Den Zugriff auf Ihre Gentoo-Rechner einschränken
hosts allow = 192.168.0.1 192.168.0.2 192.168.1.0/24
hosts deny  = *

[gentoo-portage]
path=/usr/portage
comment=Gentoo Portage
exclude=distfiles/ packages/

Sie müssen die Optionen hosts allow und hosts deny nicht unbedingt verwenden. Standardmäßig ist es allen Clients erlaubt sich zu verbinden. Die Reihenfolge, in der Sie die Optionen schreiben, ist nicht relevant. Der Server wird imer zuerst die Option hosts allow überprüfen und die Verbindung erlauben, falls der verbindene Host einem der gelisteten Muster entspricht. Der Server überprüft danach die Option hosts deny und die Verbindung abweisen, falls eine Übereinstimmung gefunden wird. Jeder Host, der keine Übereinstimmung mit den Einträgen hat, wird zugelassen. Bitte lesen Sie die Manpage (man rsyncd.conf) für weitere Informationen.

Starten Sie nun Ihren rsync-Daemon mit dem folgenden Befehl als Benutzer root:

Befehlsauflistung 2.2: Starten des rsync-Daemons

(Den Daemon jetzt starten)
# /etc/init.d/rsyncd start
(Den Daemon zum Runlevel default hinzufügen)
# rc-update add rsyncd default

Lassen Sie uns den rsync-Mirror testen. Sie müssen es nicht von einem anderen Rechner ausprobieren, aber es wäre eine gute Idee dies zu tun. Wenn Ihr Server nicht namentlich auf allen anderen Rechner bekannt ist, können Sie stattdessen seine IP-Adresse benutzen.

Befehlsauflistung 2.3: Testen Ihres Mirrors

(Sie können den Servername oder seine IP benutzen)
# rsync 192.168.0.1::
gentoo-portage      Gentoo Portage
# rsync Ihr_Server_Name::gentoo-portage
(Sie sollten den Inhalt von /usr/portage auf Ihrem Mirror sehen)

Ihr rsync-Mirror ist nun aufgesetzt. Führen Sie weiterhin wie bisher emerge --sync aus, um Ihren Server aktuell zu halten. Falls Sie cron oder etwas Ähnliches verwenden, um regelmäßig zu synchronisieren, denken Sie daran, dies nicht zu oft zu tun. Ungefähr ein- oder zweimal pro Tag ist in Ordnung.

Notiz: Bitte beachten Sie, dass die meisten öffentlichen Mirror-Administratoren mehr als ein- oder zweimaliges Syncen pro Tag als Missbrauch ansehen. Einige, wenn nicht sogar die meisten, werden Ihre IP von ihrem Server bannen, wenn Sie diese missbrauchen.

Konfiguration der Clients

Weisen Sie nun Ihre Computer an, einen eigenen lokalen rsync-Mirror anstatt eines öffentlichen zu benutzen. Bearbeiten Sie /etc/make.conf und lassen Sie die Variable SYNC auf Ihren Server zeigen.

Befehlsauflistung 2.4: Definieren Sie SYNC in /etc/make.conf

(Benutzen Sie die IP-Adresse Ihres Servers)
SYNC="rsync://192.168.0.1/gentoo-portage"

(Oder benutzen Sie den Namen Ihres Servers)
SYNC="rsync://Ihr_Server_Name/gentoo-portage"

Sie können überprüfen, ob Ihr Computer richtig aufgesetzt wurde, indem Sie zum ersten Mal gegen Ihren eigenen lokalen Mirror synchronisieren:

Befehlsauflistung 2.5: Prüfen und Synchronisieren

(Überprüfen, ob die SYNC-Variable gesetzt wurde)
# emerge --info|grep SYNC
SYNC="rsync://Ihr_Server_Name/gentoo-portage"
(Synchronisieren gegen Ihren lokalen Mirror)
# emerge --sync

Das war's! Alle Ihre Computer werden nun immer, wenn Sie emerge --sync ausführen, Ihren lokalen rsync-Mirror benutzen,

3.  Aufsetzen eines Community-rsync-Servers

Einführung

Notiz: Sie können Beispielskonfigurationen und Skripte im Paket gentoo-rsync-mirror finden. Machen Sie einfach ein emerge gentoo-rsync-mirror.

Momentan benötigt ein Spiegeln unseres Portage-Baums ungefähr 600 MB, es ist also nicht speicherintensiv; mindestens 1 GB frei sollte genügen. Das Aufsetzen eines Portage-Baum-Mirrors ist einfach -- Prüfen Sie zuerst, ob Ihr Mirror rsync installiert hat. Setzen Sie dann die Datei rsyncd.conf auf, so dass sie ungefähr wie folgt aussieht:

Befehlsauflistung 3.1: rsyncd.conf

uid = nobody
gid = nobody
use chroot = yes
max connections = 15
pid file = /var/run/rsyncd.pid
motd file = /etc/rsync/rsyncd.motd
log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[gentoo-portage]
#modern versions of portage use this entry
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles

Sie können natürlich auch eigene Orte für die meisten Dateien nehmen. Der Name des Abschnitts ([gentoo-portage]) ist das, was wichtig ist. Dies ist der Ort, von dem rsync-Clients synchronisieren wollen.

Aus Sicherheitsgründen ist die Benutzung einer chroot-Umgebung erforderlich! Dies hat Verwicklungen für die geloggten Timestamps -- siehe die unten stehende FAQ.

Nun müssen Sie den Gentoo Linux Portage-Baum spiegeln. Sie können das folgende Skript verwenden, um dies zu erledigen. Wahrscheinlich werden Sie erneut einige Orte der Dateien anpassen wollen -- um genau zu sein, sollten sie denen in der rsyncd.conf entsprechen.

Befehlsauflistung 3.2: rsync-gentoo-portage.sh

#!/bin/bash

RSYNC="/usr/bin/rsync"
OPTS="--quiet --recursive --links --perms --times -D --delete --timeout=300"
#Unkommentieren Sie folgende Linie nur, wenn Sie Zugriff auf masterportage.gentoo.org haben
#SRC="rsync://masterportage.gentoo.org/gentoo-portage"
#Wenn Sie noch auf Zugriff auf den Master-Mirror warten, wählen Sie irgendeinen unserer Mirrors
SRC="rsync://rsync.de.gentoo.org/gentoo-portage"
DST="/space/gentoo/rsync/"

echo "Started update at" `date` >> $0.log 2>&1
logger -t rsync "re-rsyncing the gentoo-portage tree"
${RSYNC} ${OPTS} ${SRC} ${DST} >> $0.log 2>&1

echo "End: "`date` >> $0.log 2>&1

Ihre rsyncd.motd sollte Ihre IP-Adresse und andere relevante Informationen über Ihren Mirror enthalten. Zum Beispiel Hinweise über den Host, der den Mirror zur Verfügung stellt, und einen administrativen Kontakt. Nun können Sie Ihren Server wie im Kapitel Aufsetzen eines eigenen lokalen rsync-Mirrors beschrieben aufsetzen.

Nachdem Sie als offizieller Rsync-Mirror anerkannt wurden, wird Ihr Host einen Alias in der Form rsync[nummer].[ländercode].gentoo.org bekommen.

4.  Kurze FAQ

Q: Wen sollte ich betreffend Rsync-Problemen und -Wartung kontaktieren?

A: Besuchen Sie den Gentoo Bugzilla und füllen Sie einen Bug-Report zum Produkt "Mirrors" mit der Komponente "Server Problem" aus.

Q: Wie kann ich die Aktualität eines öffentlichen rsync-Servers prüfen?

Das Gentoo Infrastruktur-Team überwacht alle Community-rsync-Server auf Aktualität. Sie können die Ergebnisse auf der entsprechenden Webseite einsehen.

Q: Ich betreibe einen privaten Rsync-Mirror für meine Firma. Darf ich trotzdem auf masterportage.gentoo.org zugreifen?

Weil unsere verfügbaren Ressourcen limitiert sind, müssen wir sicherstellen, dass wir sie so verteilen, dass wir den größten Ertrag für unsere Benutzer erreichen können. Demgemäss limitieren wir die Verbindung zu unserem Haupt-Rsync-Server und den Distfiles-Server auf offizielle öffentliche Mirror. Anwender sind dazu aufgefordert, unser reguläres Mirror-System zu benutzen, um einen privaten rsync-Mirror zu erstellen. Es sollten aber gewisse grundlegende Rsync-Verhaltensregeln eingehalten werden.

Q: Ist es wichtig, dass ich meinen Mirror zwei Mal pro Stunde synchronisiere?

A: Ja, es ist wichtig. Sie müssen nicht genau um :00 und :30 synchronisieren, aber es sollte in den folgenden beiden Intervallen geschehen:

  1. :00 and :10
  2. :30 and :40

Zusätzlich sollten Sie sicherstellen, dass Ihre Synchronisationen genau 30 Minuten voneinander entfernt liegen. Wenn der Erste gegen :08 stattfindet, sollte der Zweite um :38 geschehen.

Q:Wo sollte ich synchronisieren, bevor ich ein offizieller Gentoo Mirror werde?

  • Für rsync-Mirror mit Sitz in Europa: syncen mit rsync.de.gentoo.org
  • Für rsync-Mirror mit Sitz in den USA: syncen mit rsync.us.gentoo.org
  • Für alle anderen: syncen mit rsync.us.gentoo.org

Q: Wie finde ich den nahe gelegensten Mirror?

A: Dazu wurde netselect entwickelt. Wenn Sie emerge netselect noch nicht ausgeführt haben, tun Sie dies jetzt. Danach führen Sie netselect rsync.gentoo.org aus. Nach etwa einer Minute gibt netselect eine IP-Adresse aus. Nehmen Sie diese Adresse und benutzen Sie sie als einzigen Parameter für rsync mit zwei Doppelpunkten am Ende. Z.B.: rsync 1.2.3.4::. Sie sollten nun anhand der Banner-Nachricht sehen, welcher Mirror es ist. Aktualisieren Sie Ihre /etc/make.conf dementsprechend.

Q: Kann ich Kompression benutzen, wenn ich mit masterportage.gentoo.org synchronisiere?

A: Nein. Kompression benötigt zu viele Server-Ressourcen, deshalb haben wir sie auf masterportage.gentoo.org absichtlich deaktiviert. Bitte versuchen Sie nicht Kompression während der Synchronisation mit diesem Server zu benutzen.

Q: Ich sehe viele alte und wahrscheinlich tote rsync Prozesse, wie werde ich die los?

Dieser Befehl wird Ihnen helfen alte rsync Prozesse, die manchmal aufgrund von Verbindungsproblemen herum liegen, zu töten. Es ist wichtig diese zu töten, da sie als gültige Verbindungen für die Option 'max connections' zählen. Sie können diesen Befehl via crontab jede Stunde ausführen lassen; er wird rsync Prozesse, die älter als eine Stunde sind, suchen und töten.

Befehlsauflistung 4.1: Kill alter rsync Prozesse

/bin/kill -9 `/bin/ps --no-headers -Crsync -o etime,user,pid,command|/bin/grep nobody | \
             /bin/grep "[0-9]\{2\}:[0-9]\{2\}:" |/bin/awk '{print $3}'`

Q: Es gibt viele Benutzer, welche sich sehr oft mit meinem rsync-Server verbinden, was manchmal sogar einen DoS für meinen Miror bedeutet.Gibt es einen Weg dies zu verhindern?

In einigen Fällen gibt es einige rücksichtslose Benutzer, die das rsync Mirror-System missbrauchen, indem sie sich mehr als 1-2 Mal am Tag verbinden. Im extremsten Falle verbinden sich Benutzer alle 15 Minuten oder noch kürzer. Das führt häufig zu einer DoS-Attacke, da ein rsync Platz durchgehend für andere Benutzer blockiert ist. Um dies zu verhindern können Sie folgendes Perl-Skript benutzen, welches Ihre rsync Log-Dateien scannt, IP-Adressen, die mehr als N-mal an diesem Tag verbunden waren, findet und dynamisch eine rsyncd.conf Datei erstellt, die die betroffenen IP-Adressen in die 'hosts deny' Richtlinie schreibt. Die folgende Zeile steuert, was N entspricht (in diesem Falle 4):

Befehlsauflistung 4.2: Definieren der maximalen Anzahl von Verbindungen per IP

@badhosts=grep {$hash{$_}>4} keys %hash;

Bitte denken Sie daran, Ihre Logdateien täglich zu rotieren und das Skript so zu modifizieren, dass es weiß, wo Ihre rsyncd.conf Datei liegt, falls Sie das Skript verwenden wollen. Es ist auf Gentoo Linux getestet, sollte aber auf allen anderen Systemen funktionieren, die rsync und Perl unterstützen.



Drucken

Seite aktualisiert 14. Juni 2010

Die Originalversion dieser Übersetzung wird nicht länger gepflegt

Zusammenfassung: Dieses Dokument beschreibt, wie Sie einen offiziellen Rsync-Mirror und einen eigenen lokalen aufsetzen können.

Gentoo Mirror Administratoren
Autor

Tobias Klausmann
Autor

Xavier Neys
Bearbeiter

Tobias Sager
Übersetzer

Tobias Matzat
Übersetzer

Jan Hendrik Grahl
Übersetzer

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.