Comment configurer un directeur miroir avec MirrorBrain sur Ubuntu 14.04

introduction

La mise en miroir est un moyen de redimensionner un site de téléchargement. Ainsi, la charge de téléchargement peut être répartie sur de nombreux serveurs dans de nombreuses régions du monde. Les miroirs hébergent des copies des fichiers et sont gérés par un directeur de miroirs. Un directeur de miroir est le centre de tout système de miroir. Il est responsable de diriger le trafic vers le miroir approprié le plus proche afin que les utilisateurs puissent télécharger plus rapidement.

La mise en miroir est un système unique qui présente des avantages et des inconvénients. Contrairement à un système basé sur DNS, la mise en miroir est beaucoup plus flexible. Il n’est pas nécessaire d’attendre DNS ou même de faire confiance au serveur de mise en miroir (le directeur de miroir peut analyser le miroir pour vérifier sa validité et son exhaustivité). C’est l’une des raisons pour lesquelles de nombreux projets open source utilisent des miroirs pour tirer parti de la générosité des fournisseurs de services Internet et des propriétaires de serveurs afin d’alléger la charge de travail des serveurs du projet open source.

Malheureusement, un système de mise en miroir augmentera le temps système de toute requête HTTP, car celle-ci doit parvenir au directeur du miroir avant d’être redirigée vers le fichier réel. Par conséquent, la mise en miroir est couramment utilisée pour l’hébergement de téléchargements (fichiers volumineux uniques), mais n’est pas recommandée pour les sites Web (beaucoup de petits fichiers).

Ce tutoriel montrera comment configurer une instance MirrorBrain (un directeur miroir riche et riche en fonctionnalités) et un serveur rsync (rsync permet de mettre en miroir la synchronisation des fichiers avec le directeur) sur un serveur. Ensuite, nous allons configurer un miroir sur un serveur différent.

Champs obligatoires:

  • Deux gouttelettes Ubuntu 14.04 dans différentes régions; un directeur et au moins un miroir.

[[step-one-- setting-up-apache]] === Première étape - Configurer Apache

Nous devons d’abord compiler et installer MirrorBrain. Toute la première partie de ce didacticiel doit être effectuée sur le serveur * mirror director *. Nous vous ferons savoir quand passer au miroir.

Effectuez ces étapes * en tant que root *. Si nécessaire, utilisez sudo pour accéder à un shell root:

sudo -i

MirrorBrain est un module Apache volumineux. Nous devrons donc utiliser Apache pour servir nos fichiers. Commencez par installer Apache et les modules nécessaires:

apt-get install apache2 libapache2-mod-geoip libgeoip-dev apache2-dev

GeoIP est un service d’adresse IP à localisation qui renforcera la capacité de MirrorBrain de rediriger les utilisateurs vers le meilleur emplacement de téléchargement. Nous devons modifier le fichier de configuration de GeoIP pour le faire fonctionner avec MirrorBrain. Commencez par ouvrir le fichier de configuration:

nano /etc/apache2/mods-available/geoip.conf

Modifiez-le pour qu’il ressemble à ce qui suit. Ajoutez la ligne, décommentez la ligne et ajoutez le paramètre:

<IfModule mod_geoip.c>
       GeoIPEnable On

       GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
</IfModule>

Fermez et enregistrez le fichier (* Ctrl-x *, puis * y *, puis * Entrée *).

Liez la base de données GeoIP à l’endroit où MirrorBrain s’attend à le trouver:

ln -s /usr/share/GeoIP /var/lib/GeoIP

Ensuite, activons les modules que nous venons d’installer et de configurer:

a2enmod dbd
a2enmod geoip

Le module geoip est peut-être déjà activé; C’est très bien.

Deuxième étape - Installation et compilation de MirrorBrain

Nous devons maintenant compiler le module MirrorBrain. Commencez par installer des dépendances:

apt-get install python-pip python-dev libdbd-pg-perl python-SQLObject python-FormEncode python-psycopg2 libaprutil1-dbd-pgsql

pip install cmdln

Utilisez Perl pour installer d’autres dépendances.

perl -MCPAN -e 'install Bundle::LWP'

Faites attention aux questions posées ici. Vous devriez pouvoir appuyer sur * Entrée * ou dire * y * pour accepter les valeurs par défaut.

Vous devriez voir un peu de sortie, se terminant par la ligne:

 /usr/bin/make install  -- OK

Si vous recevez des avertissements ou des erreurs, vous souhaiterez peut-être réexécuter la configuration en exécutant à nouveau la commande.

Installez la dernière dépendance.

perl -MCPAN -e 'install Config::IniFiles'

Maintenant, nous pouvons télécharger et extraire la source MirrorBrain:

wget http://mirrorbrain.org/files/releases/mirrorbrain-2.18.1.tar.gz
tar -xzvf mirrorbrain-2.18.1.tar.gz

Ensuite, nous devons ajouter la source du module de formulaires à MirrorBrain:

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

Nous pouvons maintenant compiler et activer les modules MirrorBrain et forms:

apxs -cia -lm mod_form.c
apxs -cia -lm mod_mirrorbrain.c

Et puis le module autoindex MirrorBrain:

cd ~/mirrorbrain-2.18.1/mod_autoindex_mb
apxs -cia mod_autoindex_mb.c

Compilons les assistants MirrorBrain GeoIP:

cd ~/mirrorbrain-2.18.1/tools

gcc -Wall -o geoiplookup_city geoiplookup_city.c -lGeoIP
gcc -Wall -o geoiplookup_continent geoiplookup_continent.c -lGeoIP

Copiez les aides dans le répertoire des commandes:

cp geoiplookup_city /usr/bin/geoiplookup_city
cp geoiplookup_continent /usr/bin/geoiplookup_continent

Installez les autres outils internes:

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

Ajoutez ensuite le fichier de consignation pour mirrorprobe (mirrorprobe vérifie que les miroirs sont en ligne):

mkdir /var/log/mirrorbrain
touch /var/log/mirrorbrain/mirrorprobe.log

Nous pouvons maintenant installer l’outil de gestion de ligne de commande MirrorBrain:

cd ~/mirrorbrain-2.18.1/mb
python setup.py install

Troisième étape - Installer PostgreSQL

MirrorBrain utilise PostgreSQL, qui est facile à configurer sur Ubuntu. Commençons par installer PostgreSQL:

apt-get install postgresql postgresql-contrib

Passons maintenant au shell d’administrateur PostgreSQL:

sudo -i -u postgres

Créons un utilisateur de base de données MirrorBrain. Créez un mot de passe pour cet utilisateur et notez-le, car vous en aurez besoin ultérieurement:

createuser -P mirrorbrain

Ensuite, configurez une base de données pour MirrorBrain:

createdb -O mirrorbrain mirrorbrain
createlang plpgsql mirrorbrain

Si vous recevez une notification indiquant que la langue est déjà installée, vous pouvez:

createlang: language "plpgsql" is already installed in database "mirrorbrain"

Nous devons autoriser l’authentification par mot de passe pour la base de données à partir de la machine locale (requis par MirrorBrain). Commencez par ouvrir le fichier de configuration:

nano /etc/postgresql/9.3/main/pg_hba.conf

Puis localisez la ligne 90 (ce devrait être la deuxième ligne qui ressemble à ceci):

# "local" is for Unix domain socket connections only
local   all             all                                     peer

Mettez-le à jour pour utiliser l’authentification par mot de passe basée sur md5:

local   all             all

Enregistrez vos modifications et redémarrez PostgreSQL:

service postgresql restart

Quittons maintenant le shell PostgreSQL (* Ctrl-D *).

Terminez ensuite la configuration de la base de données en important le schéma de base de données de MirrorBrain:

cd ~/mirrorbrain-2.18.1
psql -U mirrorbrain -f sql/schema-postgresql.sql mirrorbrain

Lorsque vous y êtes invité, entrez le mot de passe défini précédemment pour l’utilisateur de la base de données * mirrorbrain *.

Le résultat devrait ressembler à ceci:

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

Ajoutez les données initiales:

psql -U mirrorbrain -f sql/initialdata-postgresql.sql mirrorbrain

Production attendue:

INSERT 0 1
INSERT 0 6
INSERT 0 246

Vous avez maintenant installé MirrorBrain et configuré une base de données!

Quatrième étape - Publication du miroir

Ajoutez maintenant quelques fichiers au miroir. Nous vous suggérons de nommer le répertoire de téléchargement d’après votre domaine. Créons un répertoire pour servir ces fichiers (toujours en tant que root):

mkdir /var/www/

Entrez ce répertoire:

cd /var/www/

Maintenant, nous devons ajouter des fichiers. Si vous avez déjà les fichiers sur votre serveur, vous voudrez les placer dans ce dossier:

cp * /var/www/

S’ils se trouvent sur un autre serveur, vous pouvez utiliser (le serveur miroir directeur a besoin d’un accès SSH à l’autre serveur):

scp @:

Vous pouvez également simplement télécharger de nouveaux fichiers comme vous le feriez avec d’autres fichiers; par exemple, en utilisant SSHFS ou https: // www. digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server[SFTP].

Pour tester, vous pouvez ajouter trois exemples de fichiers:

cd /var/www/
touch apples.txt bananas.txt carrots.txt

Ensuite, nous devons configurer rsync. rsync est un outil UNIX qui nous permet de synchroniser des fichiers entre serveurs. Nous allons l’utiliser pour garder nos miroirs synchronisés avec le directeur de miroirs. Rsync peut fonctionner sur SSH ou sur une URL publique + rsync: // +. Nous allons configurer l’option du démon rsync (l’URL). Nous devons d’abord créer un fichier de configuration:

nano /etc/rsyncd.conf

Ajoutons cette configuration. Le devrait être dans votre répertoire de téléchargement, et le peut être ce que vous voulez:

[main]
   path = /var/www/
   comment =
   read only = true
   list = yes

Enregistrez le fichier. Démarrez le démon rsync:

rsync --daemon --config=/etc/rsyncd.conf

Nous pouvons maintenant tester cela en exécutant ce qui suit sur un système * NIX. Vous pouvez utiliser un domaine qui résout votre serveur ou l’adresse IP de votre serveur:

rsync rsync:///main

Vous devriez voir une liste de vos fichiers.

Cinquième étape - Activer MirrorBrain

Maintenant que nos fichiers sont prêts, nous pouvons activer MirrorBrain. Nous avons d’abord besoin d’un utilisateur et d’un groupe MirrorBrain:

groupadd -r mirrorbrain
useradd -r -g mirrorbrain -s /bin/bash -c "MirrorBrain user" -d /home/mirrorbrain mirrorbrain

Créons maintenant le fichier de configuration MirrorBrain qui permettra à l’outil de gestion MirrorBrain de se connecter à la base de données:

nano /etc/mirrorbrain.conf

Ajoutez ensuite cette configuration. La plupart de ces paramètres servent à configurer la connexion à la base de données. Assurez-vous d’ajouter le mot de passe de l’utilisateur * mirrorbrain * à la base:

[general]
instances = main

[main]
dbuser = mirrorbrain
dbpass =
dbdriver = postgresql
dbhost = 127.0.0.1
dbname = mirrorbrain

[mirrorprobe]

Enregistrez le fichier. Maintenant, configurons notre fichier Apache VirtualHost pour MirrorBrain:

nano /etc/apache2/sites-available/.conf

Ajoutez ensuite cette configuration VirtualHost. Vous devrez modifier tous les emplacements où est utilisé votre propre domaine ou adresse IP qui sera résolu sur votre serveur. Vous devez également configurer votre propre adresse e-mail pour le paramètre. Assurez-vous d’utiliser le mot de passe de l’utilisateur * mirrorbrain * sur la ligne:

<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>

Il convient de regarder certaines des options MirrorBrain disponibles sous la balise Directory:

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).

Une liste complète des options de configuration est disponible à l’adresse sur le site Web MirrorBrain.

Si vous souhaitez plus d’informations sur les paramètres de base d’Apache VirtualHost, consultez la page https://www.digitalocean.com/community/tutorials/how-to-set-up-ap-apache-virtual-hosts-on-ubuntu-14-04-. lts [ce tutoriel].

  • Enregistrer et quitter le fichier. *

Assurez-vous que votre répertoire de journal existe:

mkdir  /var/log/apache2//

Faites un lien vers le fichier de configuration dans le répertoire des sites activés:

ln -s /etc/apache2/sites-available/.conf /etc/apache2/sites-enabled/.conf

Maintenant, redémarrez Apache:

service apache2 restart

Félicitations, MirrorBrain est maintenant opérationnel!

Pour vérifier que MirrorBrain fonctionne, commencez par visiter votre site de téléchargement dans un navigateur Web pour afficher l’index des fichiers. Cliquez ensuite sur l’un des fichiers pour l’afficher. Ajoutez «.mirrorlist» à la fin de l’URL. (Exemple d’URL: * http: //download.example.org/apples.txt.mirrorlist*.) Si tout fonctionne, vous devriez voir une page comme celle-ci:

image: https: //assets.digitalocean.com/tutorial_images/CPrIui0.png [Exemple de liste de miroirs MirrorBrain]

Configuration du travail périodique

Avant de pouvoir ajouter des miroirs, nous devons encore configurer des tâches de numérisation et de maintenance de miroirs. Commençons par configurer MirrorBrain pour qu’il vérifie les miroirs en ligne (à l’aide de la commande mirrorprobe) toutes les minutes:

echo "* * * * * mirrorbrain mirrorprobe" | crontab

Et un travail cron pour analyser le contenu des miroirs (pour la disponibilité et l’exactitude des fichiers) toutes les heures:

echo "0 * * * * mirrorbrain mb scan --quiet --jobs 4 --all" | crontab

Si le contenu change très rapidement, il serait sage d’ajouter plus d’analyses souvent, par exemple, "0,30 * * * * +" par demi-heure. Si vous avez un serveur très puissant, vous pouvez augmenter le nombre de ` - travaux` pour analyser simultanément plus de miroirs.

Nettoyez la base de données à 1h30 le lundi matin:

echo "30 1 * * mon mirrorbrain mb db vacuum" | crontab

Et mettez à jour les données GeoIP vers 2 h 30 environ le lundi matin (la déclaration de mise en veille vise à réduire les pointes de charge inutiles sur les serveurs GeoIP):

echo "31 2 * * mon root sleep $(($RANDOM/1024)); /usr/bin/geoip-lite-update" | crontab

Étape 6 - Mise en miroir du contenu sur un autre serveur

Maintenant que nous avons un directeur de miroir configuré, créons notre premier miroir. Vous pouvez suivre cette section pour chaque miroir que vous souhaitez ajouter.

Pour cette section, utilisez un serveur Ubuntu 14.04 différent, de préférence dans une région différente.

Une fois connecté (en tant qu’utilisateur root ou utilisateur), créez un répertoire de contenu miroir:

mkdir -p /var/www/

Copiez ensuite le contenu dans ce répertoire à l’aide de l’URL rsync que nous avons configurée précédemment:

rsync -avzh rsync:///main /var/www/

Si vous rencontrez des problèmes d’espace (erreur d’E / S) lors de l’utilisation de rsync, vous pouvez le contourner. Vous pouvez ajouter l’option permettant d’exclure des répertoires moins importants pour vos visiteurs. MirrorBrain analysera votre serveur et n’enverra pas les utilisateurs aux fichiers exclus, mais les enverra au serveur le plus proche contenant le fichier. Par exemple, vous pouvez exclure les anciens films et les anciennes chansons:

rsync -avzh rsync:///main /var/www/ --exclude "movies/old" --exclude "songs/old"

Ensuite, nous pouvons configurer votre serveur miroir pour qu’il se synchronise automatiquement avec le serveur principal toutes les heures à l’aide de cron (n’oubliez pas d’inclure les options + - exclude + si vous en avez utilisées):

echo '0 * * * * root rsync -avzh rsync:///main /var/www/' | crontab

Nous devons maintenant publier notre miroir sur HTTP (pour les utilisateurs) et sur rsync (pour le balayage MirrorBrain).

Apache

Si vous avez déjà un serveur HTTP sur votre serveur, vous devez ajouter un VirtualHost (ou équivalent) pour servir le répertoire + / var / www / +. Sinon, installons Apache:

apt-get install apache2

Ajoutons ensuite un fichier VirtualHost:

nano /etc/apache2/sites-available/.conf

Ajoutez le contenu suivant. Assurez-vous de définir vos propres valeurs pour les directives, et:

<VirtualHost *:80>
   ServerName
   ServerAdmin
   DocumentRoot /var/www/
</VirtualHost>

Enregistrez le fichier. Activer le nouveau VirtualHost:

ln -s /etc/apache2/sites-available/.conf /etc/apache2/sites-enabled/.conf

Maintenant, redémarrez Apache:

service apache2 restart

rsync

Ensuite, nous devons configurer le démon rsync (pour l’analyse de MirrorBrain). Commencez par ouvrir le fichier de configuration:

nano /etc/rsyncd.conf

Ajoutez ensuite la configuration en vous assurant que le path correspond à votre répertoire de téléchargement. Le commentaire peut être ce que vous voulez:

[main]
   path = /var/www/
   comment =
   read only = true
   list = yes

Enregistrez ce fichier.

Démarrez le démon rsync:

rsync --daemon --config=/etc/rsyncd.conf

Activer le miroir sur le directeur

Maintenant, * retour sur le serveur MirrorBrain *, nous devons ajouter le miroir. Nous pouvons utiliser la commande (en tant que root). Il y a pas mal de variables dans cette commande, nous allons l’expliquer ci-dessous:

mb new
      -H http://
      -R rsync:///main
      --operator-name= --operator-url=
      -a  -e
  • Remplacez-le par le surnom de ce miroir. Il n’a pas à résoudre

  • * -H * devrait résoudre sur votre serveur; vous pouvez utiliser un domaine ou une adresse IP

  • * -R * devrait résoudre sur votre serveur; vous pouvez utiliser un domaine ou une adresse IP

  • Les paramètres + - nom-opérateur +, + - opérateur-url +, + -a + et + -e + devraient être les informations de contact de l’administrateur que vous souhaitez publier.

Ensuite, analysons et activons le miroir. Vous devrez utiliser le même pseudo que celui utilisé dans la commande + new +:

mb scan --enable
Remarque: Si vous rencontrez une erreur telle que vous devriez revenir à la section * Step Two * et exécutez à nouveau `+ perl -MCPAN -e 'install Bundle

LWP' +`.

En supposant que l’analyse soit réussie (MirrorBrain peut se connecter au serveur), le miroir sera ajouté à la base de données.

Essai

Essayez maintenant de vous rendre à l’instance MirrorBrain sur le serveur directeur (par exemple, download.example.org - et non pas london1.download.example.org). Encore une fois, cliquez sur un fichier et ajoutez «.mirrorlist» à la fin de l’URL. Vous devriez maintenant voir le nouveau miroir répertorié sous la section des miroirs disponibles.

Vous pouvez ajouter plus de miroirs avec vos propres serveurs ailleurs dans le monde ou vous pouvez utiliser * mb new * pour ajouter un miroir qui est exécuté par quelqu’un d’autre.

Désactiver et réactiver les miroirs

Si vous souhaitez désactiver un miroir, il vous suffit de lancer:

mb disable

Réactivez le miroir en utilisant la commande + mb scan --enable + utilisée ci-dessus.

Related