このたび、さくらのクラウドが提供するロードバランサにおいてVIP(仮想IP)毎にソーリーサーバを設定できるようになりました。
ロードバランサの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サーバダウン時にソーリーサーバへのアクセスが集中し高負荷になるため、比較的スペックの高いサーバを利用するようにしてください。