Die Richtlinie für Gentoo Linux Rsync-Mirror
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 Hauptrotation-Mirror. Spezifiaktion für Hauptrotation-Mirror
beinhalten:
- Mindestens ein 2GHz Pentium 4 Prozessor (oder äquivalent)
- Minimum von 1GB Ram (1.5GB - 2GB sind ideal)
- 10GB von Festplattenspeicher (IDE ist ausreichend)
Diese Server können mit Bandbreite und Aufstellungsplatz gespendet werden,
wenn dies verfügbar ist. Ansonsten können wir diese Dienste stellen und Sie
schicken einfach das Gerät an unsere Anbindungsörtlichkeiten.
Durchschnittliche Bandbreite für einen Hauptrotation-Mirror beträgt momentan
~7Mbps (etwa 2TB im Monat). Sowie sich die Anzahl der Hauptrotation-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
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 |
# /etc/init.d/rsyncd start
# 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 |
# rsync 192.168.0.1::
gentoo-portage Gentoo Portage
# rsync Ihr_Server_Name::gentoo-portage
|
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 |
SYNC="rsync://192.168.0.1/gentoo-portage"
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 |
# emerge --info|grep SYNC
SYNC="rsync://Ihr_Server_Name/gentoo-portage"
# 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 rsync1.us.gentoo.org haben
#SRC="rsync://rsync1.us.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 rsync1.us.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:
- :00 and :10
- :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 rsync1.us.gentoo.org
synchronisiere?
A: Nein. Kompression benötigt zu viele Server-Ressourcen, deshalb haben
wir sie auf rsync1.us.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.
Die Inhalte dieses Dokuments sind unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert.
|