Ubuntu 14.04でMirrorBrainを使用してミラーディレクターをセットアップする方法

前書き

ミラーリングはダウンロードサイトをスケーリングする方法であるため、ダウンロードの負荷は世界の多くの場所の多くのサーバーに分散できます。 ミラーはファイルのコピーをホストし、ミラーディレクタによって管理されます。 ミラーディレクターは、ミラーシステムの中心です。 ユーザーがより迅速にダウンロードできるように、最も近い適切なミラーにトラフィックを誘導します。

ミラーリングは、独自の利点と欠点を持つ独自のシステムです。 DNSベースのシステムとは異なり、ミラーリングはより柔軟です。 DNSを待つ必要も、ミラーリングサーバーを信頼する必要もありません(ミラーディレクターはミラーをスキャンして、その有効性と完全性を確認できます)。 これが、多くのオープンソースプロジェクトがミラーを使用してISPとサーバー所有者の寛大さを利用し、ダウンロードのためにオープンソースプロジェクトのサーバーから負荷を取り除く1つの理由です。

残念ながら、ミラーリングシステムでは、HTTP要求のオーバーヘッドが増加します。これは、要求が実際のファイルにリダイレクトされる前にミラーディレクタに移動する必要があるためです。 そのため、ミラーリングは一般的にダウンロードのホスティング(単一の大きなファイル)に使用されますが、Webサイト(多くの小さなファイル)には推奨されません。

このチュートリアルでは、1台のサーバーにMirrorBrainインスタンス(機能が豊富な一般的なミラーディレクター)とrsyncサーバー(rsyncによりファイルをディレクターと同期させる)を設定する方法を示します。 次に、別のサーバーに1つのミラーをセットアップします。

必須:

  • 異なる地域にある2つのUbuntu 14.04ドロップレット。 1つのディレクターと少なくとも1つのミラー。

[[step-one-- setting-up-apache]] === ステップ1-Apache Apacheのセットアップ

まず、MirrorBrainをコンパイルしてインストールする必要があります。 このチュートリアルの最初の部分はすべて、* mirror director *サーバーで実行する必要があります。 ミラーに切り替えるタイミングをお知らせします。

これらの手順を* root *として実行します。 必要に応じて、sudoを使用してルートシェルにアクセスします。

sudo -i

MirrorBrainは大きなApacheモジュールであるため、ファイルを提供するにはApacheを使用する必要があります。 まず、Apacheと必要なモジュールをインストールします。

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

GeoIPは、ロケーションサービスへのIPアドレスであり、ユーザーを最適なダウンロード場所にリダイレクトするMirrorBrainの機能を強化します。 GeoIPの構成ファイルを変更して、MirrorBrainで動作するようにする必要があります。 最初に構成ファイルを開きます。

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

次のように変更します。 行を追加し、行のコメントを解除して、設定を追加します。

<IfModule mod_geoip.c>
       GeoIPEnable On

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

ファイルを閉じて保存します(* Ctrl-x y Enter *)。

GeoIPデータベースを、MirrorBrainが予想する場所にリンクします。

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

次に、インストールして構成したばかりのモジュールを有効にします。

a2enmod dbd
a2enmod geoip

geoipモジュールはすでに有効になっている場合があります。それはいいです。

ステップ2-MirrorBrainのインストールとコンパイル

次にMirrorBrainモジュールをコンパイルする必要があります。 最初にいくつかの依存関係をインストールします。

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

pip install cmdln

Perlを使用して、さらにいくつかの依存関係をインストールします。

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

ここで尋ねられる質問に注意してください。 * Enter を押すか、 y *と言ってデフォルトを受け入れることができるはずです。

次の行で終わる、かなりの出力が表示されるはずです。

 /usr/bin/make install  -- OK

警告またはエラーが表示された場合は、コマンドを再実行して構成を再度実行することができます。

最後の依存関係をインストールします。

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

これで、MirrorBrainソースをダウンロードして抽出できます。

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

次に、Formsモジュールのソースを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

これで、MirrorBrainおよびformsモジュールをコンパイルして有効にできます。

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

そして、MirrorBrain autoindexモジュール:

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

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

ヘルパーをコマンドディレクトリにコピーします。

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

他の内部ツールをインストールします。

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

次に、mirrorprobeのログファイルを追加します(mirrorprobeは、ミラーがオンラインであることを確認します)。

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

これで、MirrorBrainコマンドライン管理ツールをインストールできます。

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

ステップ3-PostgreSQLのインストール

MirrorBrainはPostgreSQLを使用します。これはUbuntuで簡単にセットアップできます。 まず、PostgreSQLをインストールしましょう。

apt-get install postgresql postgresql-contrib

では、PostgreSQL管理シェルに進みましょう。

sudo -i -u postgres

MirrorBrainデータベースユーザーを作成しましょう。 このユーザーのパスワードを作成し、後で必要になるのでメモします。

createuser -P mirrorbrain

次に、MirrorBrainのデータベースをセットアップします。

createdb -O mirrorbrain mirrorbrain
createlang plpgsql mirrorbrain

言語が既にインストールされているという通知を受け取った場合、それは問題ありません。

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

ローカルマシンからデータベースのパスワード認証を許可する必要があります(これはMirrorBrainで必要です)。 最初に構成ファイルを開きます。

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

次に、行90を見つけます(次のような2行目です)。

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

md5ベースのパスワード認証を使用するように更新します。

local   all             all

変更を保存し、PostgreSQLを再起動します。

service postgresql restart

PostgreSQLシェルを終了します(* Ctrl-D *)。

次に、MirrorBrainのデータベーススキーマをインポートして、データベースのセットアップを完了します。

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

プロンプトが表示されたら、以前に設定した* mirrorbrain *データベースユーザーのパスワードを入力します。

出力は次のようになります。

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

初期データを追加します。

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

期待される出力:

INSERT 0 1
INSERT 0 6
INSERT 0 246

これで、MirrorBrainがインストールされ、データベースがセットアップされました。

ステップ4-ミラーの公開

次に、いくつかのファイルをミラーに追加します。 ドメインにちなんでダウンロードディレクトリに名前を付けることをお勧めします。 これらのファイルを提供するディレクトリを作成しましょう(まだルートとして):

mkdir /var/www/

そのディレクトリに入ります:

cd /var/www/

次に、いくつかのファイルを追加する必要があります。 サーバーに既にファイルがある場合は、次のフォルダーに入れるか、このフォルダーに入れます。

cp * /var/www/

使用できる別のサーバー上にある場合(ミラーディレクターサーバーには、他のサーバーへのSSHアクセスが必要です):

scp @:

他のファイルと同様に、新しいファイルをアップロードすることもできます。たとえば、https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh [SSHFS]またはhttps:// wwwを使用します。 digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server[SFTP]。

テストのために、次の3つのサンプルファイルを追加できます。

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

次に、rsyncを設定する必要があります。 rsyncは、サーバー間でファイルを同期できるようにするUNIXツールです。 これを使用して、ミラーをミラーディレクタと同期させます。 Rsyncは、SSHまたはパブリックの「+ rsync:// +」URLで動作できます。 rsyncデーモン(URL)オプションを設定します。 まず、構成ファイルを作成する必要があります。

nano /etc/rsyncd.conf

この構成を追加しましょう。 これはダウンロードディレクトリにある必要があり、必要なものは何でもかまいません。

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

ファイルを保存してください。 rsyncデーモンを起動します。

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

これで、* NIXシステムで次のコマンドを実行して、これをテストできます。 サーバーに解決されるドメイン、またはサーバーのIPアドレスを使用できます。

rsync rsync:///main

ファイルのリストが表示されます。

ステップ5-MirrorBrainを有効にする

ファイルの準備ができたので、MirrorBrainを有効にできます。 まず、MirrorBrainユーザーとグループが必要です。

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

それでは、MirrorBrain管理ツールがデータベースに接続できるようにするMirrorBrain構成ファイルを作成しましょう。

nano /etc/mirrorbrain.conf

次に、この構成を追加します。 これらの設定のほとんどは、データベース接続をセットアップするためのものです。 設定には、必ず* mirrorbrain *データベースユーザーのパスワードを追加してください。

[general]
instances = main

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

[mirrorprobe]

ファイルを保存してください。 それでは、MirrorBrain用のApache VirtualHostファイルをセットアップしましょう。

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

次に、このVirtualHost構成を追加します。 サーバーに解決される独自のドメインまたはIPアドレスを持つために使用されるすべての場所を変更する必要があります。 また、設定用に独自のメールアドレスを設定する必要があります。 行で必ず* mirrorbrain *データベースユーザーのパスワードを使用してください。

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

Directoryタグの下で使用可能なMirrorBrainオプションのいくつかを見る価値があります。

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

設定オプションの完全なリストは、http://svn.mirrorbrain.org/viewvc/mirrorbrain/trunk/mod_mirrorbrain/mod_mirrorbrain.conf?view = markup [MirrorBrain Webサイト]にあります。

Apache VirtualHostの基本設定の詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-を確認してください。 lts [このチュートリアル]。

ファイルを保存して終了します。

ログディレクトリが存在することを確認します。

mkdir  /var/log/apache2//

有効なサイトディレクトリにある構成ファイルへのリンクを作成します。

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

次に、Apacheを再起動します。

service apache2 restart

おめでとうございます、これでMirrorBrainが起動して実行されました!

MirrorBrainが機能していることをテストするには、まずWebブラウザーでダウンロードサイトにアクセスして、ファイルインデックスを表示します。 次に、いずれかのファイルをクリックして表示します。 URLの末尾に「.mirrorlist」を追加します。 (URLの例:* http://download.example.org/apples.txt.mirrorlist*。)すべてが機能している場合、次のようなページが表示されます。

image:https://assets.digitalocean.com/tutorial_images/CPrIui0.png [MirrorBrain Mirror List Example]

Cronジョブの構成

ミラーの追加を開始する前に、ミラースキャンとメンテナンスcronジョブを設定する必要があります。 最初に、MirrorBrainを設定して、どのミラーがオンラインになっているかを(mirrorprobeコマンドを使用して)毎分確認します。

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

1時間ごとにミラーのコンテンツをスキャンする(ファイルの可用性と正確性について)cronジョブ:

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

コンテンツを非常にすばやく変更する場合は、たとえば30分ごとに「0,30 * * * * +」など、より多くのスキャンを追加することをお勧めします。 非常に強力なサーバーを使用している場合は、 `-jobs`の数を増やして、より多くのミラーを同時にスキャンできます。

月曜日の午前1:30にデータベースをクリーンアップします。

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

また、月曜日の午前2時30分頃にGeoIPデータを更新します(スリープステートメントは、GeoIPサーバーの不必要な負荷スパイクを減らすことです)。

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

ステップ6-別のサーバーでコンテンツをミラーリングする

ミラーディレクターがセットアップされたので、最初のミラーを作成しましょう。 追加するすべてのミラーについて、このセクションをたどることができます。

このセクションでは、できれば別の地域にある別のUbuntu 14.04サーバーを使用してください。

(ルートまたはを使用して)ログインしたら、ミラーコンテンツディレクトリを作成します。

mkdir -p /var/www/

次に、前に設定したrsync URLを使用して、そのディレクトリにコンテンツをコピーします。

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

rsyncの使用中にスペースの問題(IOエラー)が発生した場合は、回避策があります。 訪問者にとってそれほど重要ではないディレクトリを除外するオプションを追加できます。 MirrorBrainはサーバーをスキャンし、ユーザーを除外ファイルに送信せず、代わりにファイルがある最も近いサーバーに送信します。 たとえば、古い映画や古い曲を除外できます。

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

その後、cronを使用して1時間ごとにメインサーバーと自動的に同期するようにミラーサーバーを設定できます(使用する場合は、 `+-exclude +`オプションを含めることを忘れないでください)。

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

次に、HTTP(ユーザー用)およびrsync(MirrorBrainスキャン用)でミラーを公開する必要があります。

アパッチ

サーバーにすでにHTTPサーバーがある場合は、VirtualHost(または同等のもの)を追加して、 `+ / var / www / +`ディレクトリを提供する必要があります。 それ以外の場合は、Apacheをインストールしましょう。

apt-get install apache2

次に、VirtualHostファイルを追加しましょう。

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

次の内容を追加します。 、、およびディレクティブに独自の値を設定してください。

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

ファイルを保存してください。 新しいVirtualHostを有効にします。

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

次に、Apacheを再起動します。

service apache2 restart

rsync

次に、rsyncデーモンをセットアップする必要があります(MirrorBrainスキャン用)。 最初に構成ファイルを開きます。

nano /etc/rsyncd.conf

次に、_path_がダウンロードディレクトリと一致することを確認して、構成を追加します。 _comment_には任意のものを指定できます。

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

このファイルを保存してください。

rsyncデーモンを起動します。

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

ディレクターでミラーを有効にする

さて、* MirrorBrainサーバーに戻り*、ミラーを追加する必要があります。 このコマンドを(rootとして)使用できます。 このコマンドには非常に多くの変数があります。以下で説明します。

mb new
      -H http://
      -R rsync:///main
      --operator-name= --operator-url=
      -a  -e
  • このミラーのニックネームに置き換えます。 解決する必要はありません

  • * -H *はサーバーに解決されるはずです。ドメインまたはIPアドレスを使用できます

  • * -R *はサーバーに解決されるはずです。ドメインまたはIPアドレスを使用できます

  • 「-operator-name +」、「-operator-url 」、「-a 」、および「 -e +」の設定は、公開したい管理者の連絡先情報になります

次に、ミラーをスキャンして有効にします。 `+ new +`コマンドで使用したのと同じニックネームを使用する必要があります。

mb scan --enable
注:エラーが発生した場合は、*ステップ2 *セクションに戻って、 `+ perl -MCPAN -e 'install Bundle

LWP' +`を再度実行する必要があります。

スキャンが成功したと仮定すると(MirrorBrainはサーバーに接続できます)、データベースにミラーが追加されます。

テスト

次に、directorサーバーのMirrorBrainインスタンス(london1.download.example.orgではなく、download.example.orgなど)に移動してみてください。 もう一度、ファイルをクリックして、URLの末尾に「.mirrorlist」を追加します。 これで、使用可能なミラーセクションの下に新しいミラーが表示されます。

世界の他の場所にある自分のサーバーにミラーを追加したり、* mb new *を使用して他の誰かが実行しているミラーを追加したりできます。

ミラーの無効化と再有効化

ミラーを無効にしたい場合、それは実行するのと同じくらい簡単です:

mb disable

上記で使用した `+ mb scan --enable +`コマンドを使用して、ミラーを再度有効にします。

Related