ロードバランサにソーリーサーバを追加
[更新: 2016年04月14日]
ロードバランサのVIPに対してソーリーサーバを設定しておくことにより、障害時(サーバダウン)や、ロードバランサ配下の仮想サーバから一定時間内に応答がなかった場合は、ソーリーサーバに振り分けられます。
本項目では、ソーリーサーバの作成手順とロードバランサの設定手順について解説します。
1. 今回の構成
今回は、以下の構成をもとに解説します。

ロードバランサのVIPに対して2台のWebサーバを実サーバとして設定し、同一スイッチ上にソーリーサーバを配置します。実サーバとして設定されたWebサーバ2台ともに応答がない場合、VIPに対するHTTPリクエストはすべてソーリーサーバに転送します。
また、ロードバランサの設定および実サーバの設定につきましては 【TIPS】さくらのクラウドでAuto Scaling も併せてご参照ください。
2. ソーリーサーバの作成
コントロールパネルの左メニューの[サーバ]をクリックし、さらに[追加]ボタンをクリックしてサーバ追加画面を開きます。

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

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

右下の[作成]ボタンをクリックします。
[マップ]画面で見ると以下のような構成になります。

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. ロードバランサの設定
左メニューの[ロードバランサ]をクリックし、対象のロードバランサをダブルクリックします。

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

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

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サーバダウン時にソーリーサーバへのアクセスが集中し高負荷になるため、比較的スペックの高いサーバを利用するようにしてください。