Einführung
Spiegelung ist eine Methode zum Skalieren einer Download-Site, sodass die Download-Last auf viele Server in vielen Teilen der Welt verteilt werden kann. Mirrors hosten Kopien der Dateien und werden von einem Mirror Director verwaltet. Ein Mirror Director ist das Zentrum eines jeden Spiegelsystems. Es ist für die Weiterleitung des Datenverkehrs an den nächstgelegenen geeigneten Spiegel verantwortlich, damit Benutzer schneller herunterladen können.
Mirroring ist ein einzigartiges System mit eigenen Vor- und Nachteilen. Im Gegensatz zu einem DNS-basierten System ist die Spiegelung wesentlich flexibler. Es ist nicht erforderlich, auf DNS zu warten oder dem Spiegelserver zu vertrauen (der Spiegeldirektor kann den Spiegel auf Gültigkeit und Vollständigkeit prüfen). Dies ist einer der Gründe, warum viele Open-Source-Projekte Spiegel verwenden, um die Großzügigkeit von ISPs und Serverbesitzern zu nutzen und die Server des Open-Source-Projekts für Downloads zu entlasten.
Leider erhöht ein Spiegelungssystem den Overhead einer HTTP-Anfrage, da die Anfrage an den Mirror Director weitergeleitet werden muss, bevor sie in die reale Datei umgeleitet wird. Daher wird die Spiegelung häufig für das Hosten von Downloads (einzelne große Dateien) verwendet, jedoch nicht für Websites (viele kleine Dateien) empfohlen.
In diesem Tutorial wird gezeigt, wie eine MirrorBrain-Instanz (ein beliebter, funktionsreicher Mirror Director) und ein Rsync-Server (mit Rsync können Mirrors Dateien mit dem Director synchronisieren) auf einem Server eingerichtet werden. Dann richten wir einen Spiegel auf einem anderen Server ein.
Erforderlich:
-
Zwei Ubuntu 14.04-Tröpfchen in verschiedenen Regionen; ein Regisseur und mindestens ein Spiegel.
[[step-one-- setting-up-apache]] === Erster Schritt - Einrichten von Apache
Zuerst müssen wir MirrorBrain kompilieren und installieren. Der gesamte erste Teil dieses Tutorials sollte auf dem * mirror director * -Server ausgeführt werden. Wir lassen Sie wissen, wann Sie zum Spiegel wechseln müssen.
Führen Sie diese Schritte * als root * aus. Verwenden Sie ggf. sudo, um auf eine Root-Shell zuzugreifen:
sudo -i
MirrorBrain ist ein großes Apache-Modul, daher müssen wir Apache verwenden, um unsere Dateien bereitzustellen. Installieren Sie zuerst Apache und die Module, die wir benötigen:
apt-get install apache2 libapache2-mod-geoip libgeoip-dev apache2-dev
GeoIP ist ein IP-Adresse-zu-Ort-Dienst, mit dem MirrorBrain Benutzer zum besten Download-Speicherort umleiten kann. Wir müssen die Konfigurationsdatei von GeoIP ändern, damit es mit MirrorBrain funktioniert. Öffnen Sie zuerst die Konfigurationsdatei:
nano /etc/apache2/mods-available/geoip.conf
Ändern Sie es so, dass es wie folgt aussieht. Fügen Sie die Zeile hinzu, kommentieren Sie die Zeile aus und fügen Sie die Einstellung hinzu:
<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
</IfModule>
Schließen und speichern Sie die Datei (* Ctrl-x *, dann * y *, dann * Enter *).
Verknüpfen Sie die GeoIP-Datenbank mit der Stelle, an der MirrorBrain sie voraussichtlich finden wird:
ln -s /usr/share/GeoIP /var/lib/GeoIP
Als nächstes aktivieren wir die Module, die wir gerade installiert und konfiguriert haben:
a2enmod dbd
a2enmod geoip
Das Geoip-Modul ist möglicherweise bereits aktiviert. das ist gut.
Schritt Zwei - Installieren und Kompilieren von MirrorBrain
Jetzt müssen wir das MirrorBrain-Modul kompilieren. Installieren Sie zuerst einige Abhängigkeiten:
apt-get install python-pip python-dev libdbd-pg-perl python-SQLObject python-FormEncode python-psycopg2 libaprutil1-dbd-pgsql
pip install cmdln
Verwenden Sie Perl, um weitere Abhängigkeiten zu installieren.
perl -MCPAN -e 'install Bundle::LWP'
Beachten Sie die hier gestellten Fragen. Sie sollten in der Lage sein, * Enter * zu drücken oder * y * zu sagen, um die Standardeinstellungen zu akzeptieren.
Sie sollten einige Ausgaben sehen, die mit der folgenden Zeile enden:
/usr/bin/make install -- OK
Wenn Sie Warnungen oder Fehler erhalten, möchten Sie die Konfiguration möglicherweise erneut ausführen, indem Sie den Befehl erneut ausführen.
Installieren Sie die letzte Abhängigkeit.
perl -MCPAN -e 'install Config::IniFiles'
Jetzt können wir die MirrorBrain-Quelle herunterladen und extrahieren:
wget http://mirrorbrain.org/files/releases/mirrorbrain-2.18.1.tar.gz
tar -xzvf mirrorbrain-2.18.1.tar.gz
Als nächstes müssen wir MirrorBrain den Quellcode des Formularmoduls hinzufügen:
cd mirrorbrain-2.18.1/mod_mirrorbrain/
wget http://apache.webthing.com/svn/apache/forms/mod_form.h
wget http://apache.webthing.com/svn/apache/forms/mod_form.c
Jetzt können wir die Module MirrorBrain und forms kompilieren und aktivieren:
apxs -cia -lm mod_form.c
apxs -cia -lm mod_mirrorbrain.c
Und dann das MirrorBrain-Autoindex-Modul:
cd ~/mirrorbrain-2.18.1/mod_autoindex_mb
apxs -cia mod_autoindex_mb.c
Kompilieren wir die MirrorBrain GeoIP-Helfer:
cd ~/mirrorbrain-2.18.1/tools
gcc -Wall -o geoiplookup_city geoiplookup_city.c -lGeoIP
gcc -Wall -o geoiplookup_continent geoiplookup_continent.c -lGeoIP
Kopieren Sie die Helfer in das Befehlsverzeichnis:
cp geoiplookup_city /usr/bin/geoiplookup_city
cp geoiplookup_continent /usr/bin/geoiplookup_continent
Installieren Sie die anderen internen Tools:
install -m 755 ~/mirrorbrain-2.18.1/tools/geoip-lite-update /usr/bin/geoip-lite-update
install -m 755 ~/mirrorbrain-2.18.1/tools/null-rsync /usr/bin/null-rsync
install -m 755 ~/mirrorbrain-2.18.1/tools/scanner.pl /usr/bin/scanner
install -m 755 ~/mirrorbrain-2.18.1/mirrorprobe/mirrorprobe.py /usr/bin/mirrorprobe
Fügen Sie dann die Protokolldatei für mirrorprobe hinzu (mirrorprobe prüft, ob die Spiegel online sind):
mkdir /var/log/mirrorbrain
touch /var/log/mirrorbrain/mirrorprobe.log
Jetzt können wir das MirrorBrain-Befehlszeilenverwaltungstool installieren:
cd ~/mirrorbrain-2.18.1/mb
python setup.py install
Schritt Drei - PostgreSQL installieren
MirrorBrain verwendet PostgreSQL, das unter Ubuntu einfach einzurichten ist. Lassen Sie uns zuerst PostgreSQL installieren:
apt-get install postgresql postgresql-contrib
Gehen wir jetzt in die PostgreSQL-Admin-Shell:
sudo -i -u postgres
Erstellen wir einen MirrorBrain-Datenbankbenutzer. Erstellen Sie ein Passwort für diesen Benutzer und notieren Sie es sich, da Sie es später benötigen:
createuser -P mirrorbrain
Richten Sie dann eine Datenbank für MirrorBrain ein:
createdb -O mirrorbrain mirrorbrain
createlang plpgsql mirrorbrain
Wenn Sie eine Nachricht erhalten, dass die Sprache bereits installiert ist, ist das in Ordnung:
createlang: language "plpgsql" is already installed in database "mirrorbrain"
Wir müssen die Kennwortauthentifizierung für die Datenbank auf dem lokalen Computer zulassen (dies ist für MirrorBrain erforderlich). Öffnen Sie zuerst die Konfigurationsdatei:
nano /etc/postgresql/9.3/main/pg_hba.conf
Suchen Sie dann die Zeile 90 (es sollte die zweite Zeile sein, die so aussieht):
# "local" is for Unix domain socket connections only
local all all peer
Aktualisieren Sie es, um die md5-basierte Kennwortauthentifizierung zu verwenden:
local all all
Speichern Sie Ihre Änderungen und starten Sie PostgreSQL neu:
service postgresql restart
Beenden wir nun die PostgreSQL-Shell (* Strg-D *).
Schließen Sie als Nächstes die Datenbankeinrichtung ab, indem Sie das Datenbankschema von MirrorBrain importieren:
cd ~/mirrorbrain-2.18.1
psql -U mirrorbrain -f sql/schema-postgresql.sql mirrorbrain
Wenn Sie dazu aufgefordert werden, geben Sie das zuvor für den * mirrorbrain * -Datenbankbenutzer festgelegte Kennwort ein.
Die Ausgabe sollte folgendermaßen aussehen:
BEGIN
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE VIEW
CREATE TABLE
CREATE INDEX
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
COMMIT
Fügen Sie die Anfangsdaten hinzu:
psql -U mirrorbrain -f sql/initialdata-postgresql.sql mirrorbrain
Erwartete Ausgabe:
INSERT 0 1
INSERT 0 6
INSERT 0 246
Sie haben jetzt MirrorBrain installiert und eine Datenbank eingerichtet!
Vierter Schritt - Veröffentlichen des Spiegels
Fügen Sie nun einige Dateien zum Spiegel hinzu. Wir empfehlen, das Download-Verzeichnis nach Ihrer Domain zu benennen. Erstellen wir ein Verzeichnis für diese Dateien (immer noch als Root):
mkdir /var/www/
Geben Sie das Verzeichnis ein:
cd /var/www/
Jetzt müssen wir einige Dateien hinzufügen. Wenn Sie die Dateien bereits auf Ihrem Server haben, möchten Sie oder sie in diesen Ordner:
cp * /var/www/
Wenn sie sich auf einem anderen Server befinden, den Sie verwenden könnten (der Mirror Director-Server benötigt SSH-Zugriff auf den anderen Server):
scp @:
Sie können auch einfach neue Dateien hochladen, wie Sie es mit anderen Dateien tun würden. Zum Beispiel mit SSHFS oder https: // www. digitalocean.com/community/tutorials/how-to-use-sftp-to-secure-transfer-files-with-a-remote-server[SFTP].
Zum Testen können Sie drei Beispieldateien hinzufügen:
cd /var/www/
touch apples.txt bananas.txt carrots.txt
Als nächstes müssen wir rsync einrichten. rsync ist ein UNIX-Tool, mit dem wir Dateien zwischen Servern synchronisieren können. Wir werden es verwenden, um unsere Spiegel mit dem Spiegeldirektor synchron zu halten. Rsync kann über SSH oder eine öffentliche "+ rsync: // +" - URL ausgeführt werden. Wir richten die Option rsync daemon (die URL) ein. Zuerst müssen wir eine Konfigurationsdatei erstellen:
nano /etc/rsyncd.conf
Fügen wir diese Konfiguration hinzu. Das sollte sich in Ihrem Download-Verzeichnis befinden, und das kann alles sein, was Sie wollen:
[main]
path = /var/www/
comment =
read only = true
list = yes
Speicher die Datei. Starten Sie den rsync-Daemon:
rsync --daemon --config=/etc/rsyncd.conf
Jetzt können wir dies testen, indem wir Folgendes auf einem * NIX-System ausführen. Sie können eine Domain verwenden, die in Ihren Server aufgelöst wird, oder die IP-Adresse Ihres Servers:
rsync rsync:///main
Sie sollten eine Liste Ihrer Dateien sehen.
Fünfter Schritt - Aktivieren von MirrorBrain
Nachdem wir unsere Dateien fertig haben, können wir MirrorBrain aktivieren. Zuerst benötigen wir einen MirrorBrain-Benutzer und eine MirrorBrain-Gruppe:
groupadd -r mirrorbrain
useradd -r -g mirrorbrain -s /bin/bash -c "MirrorBrain user" -d /home/mirrorbrain mirrorbrain
Nehmen wir nun die MirrorBrain-Konfigurationsdatei vor, mit der das MirrorBrain-Verwaltungstool eine Verbindung zur Datenbank herstellen kann:
nano /etc/mirrorbrain.conf
Fügen Sie dann diese Konfiguration hinzu. Die meisten dieser Einstellungen dienen zum Einrichten der Datenbankverbindung. Stellen Sie sicher, dass Sie das Kennwort des * mirrorbrain * -Datenbankbenutzers für die Einstellung hinzufügen:
[general]
instances = main
[main]
dbuser = mirrorbrain
dbpass =
dbdriver = postgresql
dbhost = 127.0.0.1
dbname = mirrorbrain
[mirrorprobe]
Speicher die Datei. Nun richten wir unsere Apache VirtualHost-Datei für MirrorBrain ein:
nano /etc/apache2/sites-available/.conf
Fügen Sie dann diese VirtualHost-Konfiguration hinzu. Sie müssen alle Speicherorte ändern, an denen Ihre eigene Domain oder IP-Adresse verwendet wird, die in Ihren Server aufgelöst wird. Sie sollten auch Ihre eigene E-Mail-Adresse für die Einstellung einrichten. Stellen Sie sicher, dass Sie das Passwort des * mirrorbrain * -Datenbankbenutzers in der Zeile verwenden:
<VirtualHost *:80>
ServerName
ServerAdmin
DocumentRoot /var/www/
ErrorLog /var/log/apache2//error.log
CustomLog /var/log/apache2//access.log combined
DBDriver pgsql
DBDParams "host=localhost user=mirrorbrain password= dbname=mirrorbrain connect_timeout=15"
<Directory /var/www/>
MirrorBrainEngine On
MirrorBrainDebug Off
FormGET On
MirrorBrainHandleHEADRequestLocally Off
MirrorBrainMinSize 2048
MirrorBrainExcludeMimeType application/pgp-keys
Options FollowSymLinks Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Es lohnt sich, sich einige der MirrorBrain-Optionen anzusehen, die unter dem Directory-Tag verfügbar sind:
Name | Usage |
---|---|
MirrorBrainMinSize |
Sets the minimum size file (in bytes) to be redirected to a mirror to download. This prevents MirrorBrain for redirecting people to download really small files, where the time taken to run the database lookup, GeoIP, etc. is longer than to just serve the file. |
MirrorBrainExcludeMimeType |
Sets which mime types should not be served from a mirror. Consider enabling this for key files or similar; small files that must be delivered 100% accurately. Use this option multiple times in your configuration file to enable it for multiple mime types. |
MirrorBrainExcludeUserAgent |
This option stops redirects for a given user agent. Some clients (e.g. curl) require special configuration to work with redirects, and it may be easier to just serve the files directly to those users. You can use wildcards (e.g. |
Eine vollständige Liste der Konfigurationsoptionen finden Sie unter on the MirrorBrain website.
Weitere Informationen zu den grundlegenden Einstellungen von Apache VirtualHost finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-. Es ist [dieses Tutorial].
-
Speichern und beenden Sie die Datei. *
Stellen Sie sicher, dass Ihr Protokollverzeichnis vorhanden ist:
mkdir /var/log/apache2//
Stellen Sie eine Verknüpfung zur Konfigurationsdatei im Verzeichnis für aktivierte Sites her:
ln -s /etc/apache2/sites-available/.conf /etc/apache2/sites-enabled/.conf
Starten Sie jetzt Apache neu:
service apache2 restart
Herzlichen Glückwunsch, Sie haben jetzt MirrorBrain zum Laufen gebracht!
Um zu testen, ob MirrorBrain funktioniert, rufen Sie zunächst Ihre Download-Site in einem Webbrowser auf, um den Dateiindex anzuzeigen. Klicken Sie dann auf eine der Dateien, um sie anzuzeigen. Fügen Sie ".mirrorlist" an das Ende der URL an. (Beispiel-URL: * http: //download.example.org/apples.txt.mirrorlist*.) Wenn alles funktioniert, sollten Sie eine Seite wie diese sehen:
image: https: //assets.digitalocean.com/tutorial_images/CPrIui0.png [MirrorBrain Mirror List-Beispiel]
Cron-Auftragskonfiguration
Bevor Sie mit dem Hinzufügen von Spiegeln beginnen können, müssen Sie noch einige Spiegelscan- und Wartungs-Cron-Jobs einrichten. Stellen Sie zunächst MirrorBrain so ein, dass jede Minute überprüft wird, welche Spiegel online sind (mithilfe des Befehls mirrorprobe):
echo "* * * * * mirrorbrain mirrorprobe" | crontab
Und ein Cron-Job zum stündlichen Scannen des Spiegelinhalts (auf Verfügbarkeit und Richtigkeit der Dateien):
echo "0 * * * * mirrorbrain mb scan --quiet --jobs 4 --all" | crontab
Wenn sich der Inhalt sehr schnell ändert, ist es ratsam, öfter einen Scan hinzuzufügen, z. B. "0,30 * * * * +" pro halbe Stunde. Wenn Sie einen sehr leistungsfähigen Server haben, können Sie die Anzahl der " - Jobs" erhöhen, um mehr Spiegel gleichzeitig zu scannen.
Bereinigen Sie die Datenbank am Montagmorgen um 1:30 Uhr:
echo "30 1 * * mon mirrorbrain mb db vacuum" | crontab
Und aktualisieren Sie die GeoIP-Daten am Montagmorgen um ca. 2:30 Uhr (die Sleep-Anweisung dient dazu, nicht benötigte Lastspitzen auf den GeoIP-Servern zu reduzieren):
echo "31 2 * * mon root sleep $(($RANDOM/1024)); /usr/bin/geoip-lite-update" | crontab
Schritt Sechs - Spiegeln des Inhalts auf einem anderen Server
Nachdem wir einen Mirror Director eingerichtet haben, erstellen wir unseren ersten Mirror. Sie können diesem Abschnitt für jeden Spiegel folgen, den Sie hinzufügen möchten.
Verwenden Sie für diesen Abschnitt einen anderen Ubuntu 14.04-Server, vorzugsweise in einer anderen Region.
Sobald Sie angemeldet sind (als root oder mit), erstellen Sie ein Verzeichnis für gespiegelte Inhalte:
mkdir -p /var/www/
Kopieren Sie dann den Inhalt mit der zuvor eingerichteten rsync-URL in dieses Verzeichnis:
rsync -avzh rsync:///main /var/www/
Wenn Sie bei der Verwendung von rsync auf Probleme mit dem Speicherplatz (E / A-Fehler) stoßen, können Sie dies umgehen. Sie können die Option zum Ausschließen von Verzeichnissen hinzufügen, die für Ihre Besucher nicht so wichtig sind. MirrorBrain scannt Ihren Server und sendet keine Benutzer an die ausgeschlossenen Dateien, sondern sendet sie an den nächstgelegenen Server, auf dem sich die Datei befindet. Zum Beispiel könnten Sie alte Filme und alte Songs ausschließen:
rsync -avzh rsync:///main /var/www/ --exclude "movies/old" --exclude "songs/old"
Dann können wir Ihren Spiegelserver so einstellen, dass er mit cron jede Stunde automatisch mit dem Hauptserver synchronisiert wird (denken Sie daran, die Optionen "+ - + ausschließen" einzuschließen, falls Sie welche verwendet haben):
echo '0 * * * * root rsync -avzh rsync:///main /var/www/' | crontab
Jetzt müssen wir unseren Spiegel über HTTP (für Benutzer) und über RSYNC (für MirrorBrain-Scans) veröffentlichen.
Apache
Wenn Sie bereits einen HTTP-Server auf Ihrem Server haben, sollten Sie einen VirtualHost (oder einen gleichwertigen) hinzufügen, um das Verzeichnis "+ / var / www / +" zu bedienen. Andernfalls installieren wir Apache:
apt-get install apache2
Dann fügen wir eine VirtualHost-Datei hinzu:
nano /etc/apache2/sites-available/.conf
Fügen Sie den folgenden Inhalt hinzu. Stellen Sie sicher, dass Sie Ihre eigenen Werte für die Anweisungen, und festlegen:
<VirtualHost *:80>
ServerName
ServerAdmin
DocumentRoot /var/www/
</VirtualHost>
Speicher die Datei. Aktivieren Sie den neuen VirtualHost:
ln -s /etc/apache2/sites-available/.conf /etc/apache2/sites-enabled/.conf
Starten Sie jetzt Apache neu:
service apache2 restart
rsync
Als nächstes müssen wir den rsync-Daemon einrichten (für MirrorBrain-Scans). Öffnen Sie zuerst die Konfigurationsdatei:
nano /etc/rsyncd.conf
Fügen Sie dann die Konfiguration hinzu und vergewissern Sie sich, dass der Pfad mit Ihrem Download-Verzeichnis übereinstimmt. Das Kommentar kann sein, was immer Sie wollen:
[main]
path = /var/www/
comment =
read only = true
list = yes
Speichern Sie diese Datei.
Starten Sie den rsync-Daemon:
rsync --daemon --config=/etc/rsyncd.conf
Aktivieren des Spiegels auf dem Director
Nun müssen wir * wieder auf dem MirrorBrain-Server * den Mirror hinzufügen. Wir können den Befehl (als root) verwenden. In diesem Befehl sind einige Variablen enthalten, die im Folgenden erläutert werden:
mb new
-H http://
-R rsync:///main
--operator-name= --operator-url=
-a -e
-
Ersetzen Sie mit dem Spitznamen für diesen Spiegel. Es muss nicht aufgelöst werden
-
* -H * sollte auf Ihren Server aufgelöst werden; Sie können eine Domain oder eine IP-Adresse verwenden
-
* -R * sollte auf Ihren Server aufgelöst werden. Sie können eine Domain oder eine IP-Adresse verwenden
-
Die Einstellungen "+ - Operator-Name ", " - Operator-URL ", " -a " und " -e +" sollten Ihre bevorzugten Administrator-Kontaktinformationen sein, die Sie veröffentlichen möchten
Lassen Sie uns dann den Spiegel scannen und aktivieren. Sie müssen denselben Spitznamen verwenden, den Sie im Befehl "+ new +" verwendet haben:
mb scan --enable
- Hinweis: Wenn Sie auf einen Fehler stoßen, kehren Sie zum Abschnitt * Schritt 2 * zurück und führen Sie "+ perl -MCPAN -e" aus, um Bundle
-
LWP '+' erneut zu installieren.
Angenommen, der Scan ist erfolgreich (MirrorBrain kann eine Verbindung zum Server herstellen), wird der Spiegel der Datenbank hinzugefügt.
Testen
Versuchen Sie nun, die MirrorBrain-Instanz auf dem Director-Server aufzurufen (z. B. download.example.org - nicht london1.download.example.org). Klicken Sie erneut auf eine Datei und fügen Sie ".mirrorlist" an das Ende der URL an. Sie sollten nun den neuen Spiegel sehen, der im Abschnitt "Verfügbare Spiegel" aufgeführt ist.
Sie können weitere Spiegel mit Ihren eigenen Servern an anderen Orten auf der Welt hinzufügen, oder Sie können * mb new * verwenden, um einen Spiegel hinzuzufügen, der von einer anderen Person für Sie ausgeführt wird.
Deaktivieren und erneutes Aktivieren von Spiegeln
Wenn Sie einen Spiegel deaktivieren möchten, ist das so einfach wie das Ausführen:
mb disable
Aktivieren Sie den Spiegel mit dem Befehl "+ mb scan --enable +" wie oben beschrieben wieder.