さくらのクラウドでソーリーサーバを設定してみよう – 「楽しいさくらのクラウド」(16)

こんにちは。さくらインターネット クラウドチームの大喜多です。

このたび、さくらのクラウドが提供するGSLB(広域負荷分散アプライアンス)においてソーリーサーバを設定できるようになりました。GSLBにソーリーサーバを設定しておくことにより、障害時(サーバダウン)や、ロードバランサ配下の仮想サーバから一定時間内に応答がなかった場合は、ソーリーサーバに振り分けられます。本記事では、ソーリーサーバの作成手順とGSLBの設定手順について解説します。

※注記:さくらのクラウドでは、DSR(Direct Server Return)方式に対応したロードバランサアプライアンスも提供しております。こちらもソーリーサーバに対応しておりますので、詳細はさくらのクラウドニュース:【TIPS】ロードバランサにソーリーサーバを追加をご覧ください。

1. システム構成

本記事では、以下の構成をもとに解説します。

GSLBに対して東京第1ゾーンに作成した2台のWebサーバを実サーバとして設定し、石狩第2ゾーンにソーリーサーバを配置します。実サーバとして設定されたWebサーバ2台ともに応答がない場合、GSLBに対するHTTPリクエストはすべてソーリーサーバが受け付けるようになります。

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

Webサーバを東京第1ゾーンに2台、石狩第2ゾーンに1台構築します。東京第1ゾーンに構築するWebサーバの構築手順については割愛し、石狩第2ゾーンに構築するソーリーサーバの構築について解説します。

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

ソーリーサーバにSSHログインし設定を行います。SEOを考慮し、HTTPレスポンス503を返すWebサーバとして構築します。OSはCentOSの6系最新版を使用する前提とします(本記事執筆時はCent6.8)。

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も起動されるよう設定します。

service httpd start
chkconfig httpd on

4. GSLBの設定

サーバの準備ができましたらGSLBの設定を行います。さくらのクラウドのコントロールパネルの左メニューから[GSLB]をクリックし、右上の[追加]をクリックします。

下記画像の赤枠部分[監視方法]のドロップダウンリストをクリックし、[http]を選択します。

監視方法を選択すると、画面上には監視方法に対応した入力項目が追加表示されます。ここではhttpを選択しましたので、「Hostヘッダ」「パス」「レスポンスコード」が追加されています。

それぞれ以下の通り指定します。

Hostヘッダ Webサーバでバーチャルホストを使用している際は入力(今回は空欄とします)
パス /index.html
レスポンスコード 200

ソーリーサーバには、「3. ソーリーサーバの構築」にて構築したソーリーサーバのグローバルIPアドレスを指定します。IPアドレスを直接入力するか、[サーバから選択]ラジオボタンをクリックして、表示されるサーバの一覧から選択します。各項目の入力が完了したら右下の[作成]をクリックします。

左メニューの[GSLB]をクリックすると、GSLBの一覧が表示されます。今回作成したGSLBの行の上にカーソルを移動させ、ダブルクリックします。

[実サーバ]タブをクリックします。

ロードバランシング対象のWebサーバを2台追加します。右下の[追加]ボタンをクリックします。

表示されたダイアログ上にて、IPアドレスを直接入力するか、[サーバから選択]ラジオボタンをクリックして、表示されるサーバの一覧から選択します。[有効/無効]ラジオボタンは[有効]をクリックします。重み値は2台とも未入力(デフォルト値である1を使用)とします。各項目の入力が完了したら右下の[作成]をクリックします。

この作業を2回行い、下記のように2台の実サーバが登録されていることを確認し、右上の[反映]をクリックします。

5. DNSの設定

GSLBの作成・設定が完了しましたら、続いてDNSサーバの設定を行います。今回はDNSサーバとして、さくらのクラウドのDNS(アプライアンス)を使用します。

DNSの一覧画面から、設定するゾーンの行の上にカーソルを移動させ、ダブルクリックします。

[リソースレコード]タブをクリックし、右下の[追加]をクリックします。

[タイプ]のドロップダウンリストから「CNAME」を選択します。このレコードを追加することで、www.■■■.netにアクセスするとGSLBに転送され、ロードバランシングされるようになります。

GSLBのFQDNを直接入力するか、[GSLBから選択]ラジオボタンをクリックして、表示されるGSLBの一覧から選択します。TTLは最短の「10(秒)」とします。各項目の入力が完了したら右下の[作成]をクリックします。

GSLBのFQDNはGSLBの詳細画面から確認できます(赤枠部分)。直接入力する際は末尾に.を付与するのを忘れないようにしてください。

6. 動作確認

www.■■■.netにアクセスし、Webページが表示されれば設定は完了です。

また、digコマンドを使用することにより、リクエストに対して返しているIPアドレスの値を確認することができます。

ここでは、実際にGSLBが機能しているか確認するテストパターンをご紹介します。

Webサーバ2台とも稼働している場合

この状態でwww.■■■.netにアクセスすると、稼働しているWebサーバ2台にリクエストがバランシングされコンテンツが表示されます。

Webサーバ2台のうち1台がダウンしている場合

2台のうち1台のWebサーバをシャットダウンします。この状態でwww.■■■.netにアクセスすると、稼働しているWebサーバに転送されコンテンツが表示されます。

Webサーバが2台ともダウンしている場合

2台のWebサーバをシャットダウンします。この状態でwww.■■■.netにアクセスすると、ソーリーサーバに転送され、ソーリーサーバ上のコンテンツが表示されます。

夏のトライアルキャンペーン 開催中!

ただ今、「さくらのクラウド 夏のトライアルキャンペーン」を開催しています。(2016年7月7日(木)~2016年7月31日(日)お申し込み分まで)
さくらのクラウドおよびオブジェクトストレージのサービスを2万円分無償でご利用頂けるクーポンをプレゼントしています。
是非、この機会にさくらのクラウドを体験してみてください!

キャンペーンの詳細はこちら
https://cloud.sakura.ad.jp/news/2016/07/07/summer_campaign_2016/