So richten Sie einen Mirror Director mit MirrorBrain unter Ubuntu ein 14.04

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. *Chrome/* will disable redirection for any Chrome user).

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.