ロードバランサにソーリーサーバを追加

[更新: 2016年04月14日]

ロードバランサのVIPに対してソーリーサーバを設定しておくことにより、障害時(サーバダウン)や、ロードバランサ配下の仮想サーバから一定時間内に応答がなかった場合は、ソーリーサーバに振り分けられます。

本項目では、ソーリーサーバの作成手順とロードバランサの設定手順について解説します。

1. 今回の構成

今回は、以下の構成をもとに解説します。

loadbalancer-add-sorry-01.png

ロードバランサのVIPに対して2台のWebサーバを実サーバとして設定し、同一スイッチ上にソーリーサーバを配置します。実サーバとして設定されたWebサーバ2台ともに応答がない場合、VIPに対するHTTPリクエストはすべてソーリーサーバに転送します。

また、ロードバランサの設定および実サーバの設定につきましては 【TIPS】さくらのクラウドでAuto Scaling も併せてご参照ください。

2. ソーリーサーバの作成

コントロールパネルの左メニューの[サーバ]をクリックし、さらに[追加]ボタンをクリックしてサーバ追加画面を開きます。

loadbalancer-add-sorry-02.png

[シンプルモード]のチェックを外します。

[NIC]では「スイッチに接続」を選択し、ロードバランサとWebサーバが接続されているスイッチを選択します。

loadbalancer-add-sorry-03.png

DSR方式で動作するロードバランサに対応するため、スタートアップスクリプト「lb-dsr」を使用して設定を行います。

テキストボックスにはVIPを入力します。

loadbalancer-add-sorry-04.png

右下の[作成]ボタンをクリックします。

[マップ]画面で見ると以下のような構成になります。

loadbalancer-add-sorry-05.png

3. ソーリーサーバの構築

ソーリーサーバにSSHログインし設定を行います。SEO対策のため、HTTPレスポンス503を返すWebサーバとして構築します。

Apacheをインストールします。

yum -y install httpd

ドキュメントルートにソーリーページを作成します。

vi /var/www/html/index.html

※ソース

<html>
<body>
Sorry, Current service is stopping.
</body>
</html>

httpd.confに以下行を挿入し、HTTPレスポンス503を返却するように設定します。


vi /etc/httpd/conf/httpd.conf

※ソース:末尾に追記

ErrorDocument 503 /index.html

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/index.html
  RewriteRule ^.*$ - [R=503,L]
</IfModule>

<IfModule mod_headers.c>
  Header set Retry-After "Mon, 1 Dec 2014 9:00:00 GMT"
</IfModule>

Apacheを起動し、システム起動時にApacheも起動されるよう設定します。

/etc/init.d/httpd start
chkconfig httpd on

4. ロードバランサの設定

左メニューの[ロードバランサ]をクリックし、対象のロードバランサをダブルクリックします。

loadbalancer-add-sorry-06.png

[VIP設定]タブをクリックし、対象のVIPの右端にある鉛筆アイコンをクリックします。

loadbalancer-add-sorry-07.png

ソーリーサーバのIPアドレスを入力し[更新]をクリックします。

loadbalancer-add-sorry-08.png

5. 挙動の確認

ロードバランサが設定された全ての実サーバでダウンを検知するとソーリーサーバが応答します。Webブラウザでアクセスした際に、ソーリーページが表示されることを確認します。

また、HTTPレスポンス503を返しているか確認します。Chromeでは、タブに下記URIを入力することで、HTTPセッションのログが確認できます。

chrome://net-internals/

以下のログより、ソーリーページが表示された際のHTTPレスポンスは以下の通り503を返していることがわかります。

82455: URL_REQUEST
http://as.k26.jp/
HTTP_TRANSACTION_READ_RESPONSE_HEADERS
                        --> HTTP/1.1 503 Service Temporarily Unavailable

通常のWebサイトが表示されている際は以下のようなログが出力され、HTTPレスポンス200が返されていることがわかります。

82913: URL_REQUEST
http://as.k26.jp/
HTTP_TRANSACTION_READ_RESPONSE_HEADERS
                        --> HTTP/1.1 200 OK

最後に注意点として、本番環境にソーリーサーバを投入する際はWebサーバダウン時にソーリーサーバへのアクセスが集中し高負荷になるため、比較的スペックの高いサーバを利用するようにしてください。