序章


クラスタ化されたWebサーバーについて


クラスター化されたWebサーバーは、複数のマシンまたは「ノード」に負荷を分散するためにWebホスティング内で使用される手法です。 この手法の目的は、単一障害点を取り除き、Webサイトの可用性と稼働時間を増やすことです。 通常、Webクラスターは複数のバックエンドノードとフロントエンドノードを利用します。

クラスタリングは高価である必要はなく、開始するのは非常に簡単です。このガイドでは、NginxとVarnishを使用してラウンドロビン2ノードのクラスター化されたWebサーバーを作成する方法を示します。

ワニスについて


ワニスはHTTPアクセラレータです。 言い換えれば、キャッシングサーバーです。 これにより、Varnishによって維持および作成されたWebサイトの静的コピーをHTTP要求に送信することにより、Webサイトを高速化できます。

Nginxについて


Nginxは、Varnishのバックエンドサービスとして機能する軽量で高性能なHTTPサーバーです。 訪問者に直接Webサイトを提供することはありません。 ただし、キャッシュを構築する必要がある場合は常に、Varnishからの要求に応答します。

設定


このチュートリアルの手順を実行するには、 3つの液滴が必要です。これらはすべて、最小の512mbインスタンスにすることができます。

インスタンスのホスト名に次のように名前を付けることをお勧めします。

  • ワニス

  • nginx01

  • nginx02

もちろん、「nginx0x」をいくつでも追加できますが、このチュートリアルでは2を使用します。

新しく作成された3つのインスタンスへの最初のSSHで、次のコマンドを実行します。

sudo apt-get update

ステップ1-Nginxをインストールします


Nginxは、Varnishに当社のWebサイトを提供する責任を負うソフトウェアです。

ワニスインスタンスのこの手順をスキップします。これをnginx01およびnginx02インスタンスにインストールする必要があります。つまり、使用する各nginx0xサーバーでこのプロセスを繰り返します。

最新バージョンを確実に入手するために、Nginxをソースからインストールすることをお勧めします。

Nginxには、PCRE(Perl互換の正規表現ライブラリ)とzlib(圧縮ライブラリ)の2つの主要な依存関係があります。 このガイドを書いている時点での最新バージョンは次のとおりです。

Nginx :1.4.4

PCRE :8.34

zlib :1.2.8

上記のソースをダウンロードして、抽出してビルドする準備をする必要があります。 次の各コマンドを個別に入力します。

wget http://nginx.org/download/nginx-1.4.4.tar.gz

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz

wget http://zlib.net/zlib-1.2.8.tar.gz

tar -zxvf nginx-1.4.4.tar.gz

tar -zxvf pcre-8.34.tar.gz

tar -zxvf zlib-1.2.8.tar.gz

Nginxのビルドに進む前に、まず「Make」というプログラムとC++ソースコード「g++」のコンパイラを入手する必要があります。これは、インスタンスでNginxをビルドするために必要なすべてのコマンドを実行する役割を果たします。 apt-getから入手できます。

sudo apt-get install make g++

この段階で、先に進んでNginxをビルドできます/最初に、作成した抽出されたNginxフォルダーにディレクトリを変更します。

cd nginx-1.4.4

次に、特定のインスタンスのビルドオプションを構成する必要があります。

./configure --with-pcre=../pcre-8.34 --with-zlib=../zlib-1.2.8

次に、Nginxバイナリの作成に進むことができます。

make

最後に、Nginxをシステムにインストールできます。

sudo make install

ステップ2-ワニスをインストールします


ワニスは、訪問者に当社のWebサイトを提供する責任があります。

これは、varnishインスタンスにのみインストールする必要があります。

まず、リポジトリにアクセスするために提供されるGPGキーワニスを取得する必要があります。 次のコマンドを実行してダウンロードできます。

wget http://repo.varnish-cache.org/debian/GPG-key.txt

次に、キーをインストールします。

sudo apt-key add GPG-key.txt

次に、Varnishリポジトリリストをインスタンスソースリストに追加する必要があります。

echo "deb http://repo.varnish-cache.org/ubuntu/ precise varnish-3.0" | sudo tee -a /etc/apt/sources.list

次に、apt-getがVarnishパッケージを認識していることを確認します。

sudo apt-get update

最後に、Varnishをインストールします。

sudo apt-get install varnish

この段階で、NginxとVarnishの両方を構成して、外部にWebサイトを提供する準備が整いました。

ステップ3-Nginxを構成する


Nginxの構成をあまり変更する必要はありません。このガイドでは、デフォルトで問題ありません。 ただし、「Welcome to nginx」ページを変更して、VarnishにWebページを提供しているVPSを指定することをお勧めします。

Nginxウェルカムページが配置されているルートhtmlディレクトリに移動します。

cd /usr/local/nginx/html/

次にindex.htmlを編集します。

vim index.html

次のようにファイルを変更します。

nginx01

<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>I am nginx01</p>

nginx02

<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>I am nginx02</p>

これでNginxを起動できます(:このコマンドが出力を生成しない場合、正常に実行されています):

sudo /usr/local/nginx/sbin/nginx

ステップ4-ワニスを構成する


まず、ポート80で実行するようにVarnishを設定する必要があります。 これを行うには、デフォルトのVarnish構成ファイルを変更する必要があります。 まず、ディレクトリをこのファイルがある場所に変更します。

cd /etc/default

次に、を開く必要があります varnish ファイル:

sudo vim varnish

ファイル内で次のブロックを見つけます。

## Alternative 2, Configuration with VCL
#
# Listen on port 6081, administration on localhost:6082, and forward to
# one content server selected by the vcl file, based on the request.  Use a 1GB
# fixed-size cache file.
#
	DAEMON_OPTS="-a :6081 \
         -T localhost:6082 \
         -f /etc/varnish/default.vcl \
         -S /etc/varnish/secret \
         -s malloc,256m"

次のように変更します。

## Alternative 2, Configuration with VCL
#
# Listen on port 6081, administration on localhost:6082, and forward to
# one content server selected by the vcl file, based on the request.  Use a 1GB
# fixed-size cache file.
#
	DAEMON_OPTS="-a :80 \
         -T localhost:6082 \
         -f /etc/varnish/default.vcl \
         -S /etc/varnish/secret \
         -s malloc,256m"

次に、ロードバランサーを構成する必要があります。 ディレクトリをVarnish構成スクリプトがある場所に変更します。

cd /etc/varnish

次に、 default.vcl ファイル:

sudo vim default.vcl

を削除する必要があります backend default 次のように見えるこのファイル内のブロック:

backend default {
	.host = "127.0.0.1";
	.port = "8080";
}

次のように置き換えます。 nginx01とnginx02の.hostをそれぞれパブリック(またはインスタンスにこの機能がある場合はプライベート)に変更するようにしてください。DigitalOceanIP:

# define our first nginx server
backend nginx01 {
	.host = "192.168.0.100";
	.port = "80";
}

# define our second nginx server
backend nginx02 {
	.host = "192.168.0.101";
	.port = "80";
}

# configure the load balancer
director nginx round-robin {
	{ .backend = nginx01; }
	{ .backend = nginx02; }
}

# When a request is made set the backend to the round-robin director named nginx
sub vcl_recv {
	set req.backend = nginx;
}

ステップ5-可用性をテストする


Varnishサーバーを介してWebサイトにアクセスできるかどうかを確認しましょう。 開始したワニスインスタンスのパブリックIPを見つけて、Webブラウザを介してアクセスします。 次のテキストが表示された場合、すべてが機能しています。

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

I am nginx01

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

Nginxがサービスを提供していると報告しているサーバーでNginxをシャットダウンすることで、サイトがオンラインのままであるかどうかをテストできます。 私の場合、これはnginx01でした。nginxをシャットダウンするには、次のコマンドを実行できます。

/usr/local/nginx/sbin -s stop

VarnishパブリックIPを再試行してください。 オフにしたばかりのVPSがアクティブサーバーとして報告されている場合があります。 これは、Varnishがキャッシュを保持しているためです。 このキャッシュの有効期限が切れると、nginx02がコンテンツを提供していることがわかります。

Varnishにキャッシュを強制的にクリアするには、サービスを再起動します。

sudo service varnish restart

結論


この段階で、完全に構成されたVarnish負荷分散ラウンドロビンクラスターができました。 Nginxサーバーの構成に関する他のチュートリアルに従うことをお勧めします: Ubuntu 12.04にLinux、nginx、MySQL、PHP(LEMP)スタックをインストールする方法