4.ロードバランサをSorry構成にしました


オーララインのM.Hです。
Webサーバは毎日休み無く働いてくれるのが理想です。
しかしながら現実的にはメンテナンスや不測の障害が発生することにより、やむなく一時サービス停止せざるを得ない状況も発生しうります。
そのような場合に備え、今回は「メンテナンス中です」等のSorryメッセージを表示させる構成を組んでみたいと思います。そこで役に立つのがロードバランサです。

前回はロードバランシング構成を構築しただけですので、今回はこのSorryメッセージを出す構成に変更してみます。

 

■準備
まず、代替となるWEBページを表示するため、当然WEBサーバが必要になります。
外部WEBサーバも使用可能ですが、今回はクラウド上にSorryサーバを構築しました。
静的ページを表示するだけの簡素なWEBサーバです。

Sorryサーバ

モデル ベースモデル
OS CentOS 5 (64bit)
サーバ名 任意の名前 (ここでは sorry とします)
CPU 1vCPU
CPUリソース保証 ベストエフォート型
メモリ 1GB
ディスク 40GB (固定)
初期インストールオプション Apache 2.2
台数 1

サーバにログインし、Sorryページも設置しましょう。
ファイルは可能であれば SCP などでアップロードしてもかまいません。

/var/www/html/index.html
※ソース↓
<html>
<body>
Sorry, Current service is stopping.
</body>
</html>

ブラウザで実際に表示されるか確認します。一行で「Sorry, Current service is stopping.」と表示されれば成功です。

これで準備が整いました。

 

■ロードバランサ設定に Sorryページを追加する
今回は前回のLB構成に対しSorryページを追加することにします。
※ロードバランサポートは、”80” を指定してください。

1. ロードバランサ一覧からロードバランサ名をクリックし、詳細ページに進みます。

2. 下の「ロードバランサ・サーバ変更」ボタンをクリックします。

3. ロードバランサ変更画面が表示されるので間違った設定や、変更したい箇所などを修正します。入力項目は作成時と同じです。

「SorryページURL」に準備したSorryページのURLを記述します。
外部のURLも指定可能ですので外部サーバを使用している場合はそちらを指定してもかまいません。

変更後、一覧で「処理中」となっていますので5分ほど待って「ステータス更新」をしてみてください。「正常」となれば成功です。

これでSorry構成になりました。

 

■サーバを切り離してみよう・停止してみよう

設定が完了したのでSorry構成の動作を早速試してみましょう

WEBサーバを切り離す

1. ロードバランサ一覧で切り離したいサーバのクイック操作から「切断」をクリックします。まず「lbtest1」から切り離してみましょう。

2. 「ロードバランサから切断します。よろしいですか?」とダイアログ表示されたら「OK」をクリックします。

3. しばらく待ったあと、「ロードバランサステータス」は「縮退」と表示、「ロードバランサ設定の状態」が「切断中」となれば切り離しは成功です。

4. バーチャルIPをブラウザで何度更新しても片系のみの表示となります。先ほど切り離したサーバが「lbtest1」でしたので、「lbtest2」しか表示されませんね。

5. 1~4をサーバの台数分繰り返すと、すべて切り離した状態となるので「ロードバランサステータス」は「全断」と表示されます。バーチャルIPをブラウザで確認すると Sorry ページが表示されます。

6. 切戻しはクイック操作から「接続」をクリックすると切断状態から復帰します。

WEBサーバを落とす

今度は切り離しではなく、サーバ自体を停止させ、擬似的な障害を起こしてみましょう。
ロードバランサの設定でヘルスチェックを「http」にしているのでApacheを直接停止することにします。
他の設定にしている場合はそのプロセスを停止もしくは、サーバをシャットダウンしてください。

1. WEBサーバに SSHログインし、Apacheを停止します。

# /etc/init.d/httpd stop
Stopping httpd:                      [ OK ]

2. ロードバランサ名をクリックし、ロードバランサ詳細の接続先サーバ情報を確認します。

3. 停止したサーバのヘルスチェックステータスが「異常」となっているはずですね。またバーチャルIPをブラウザで確認すると縮退運転に切り替わっています。

4. 全てのWEBサーバも停止し、バーチャルIPをブラウザで確認するとSorryページが表示されました。ヘルスステータスもすべて「異常」になりましたね。

5. 再度Apacheを立ち上げてしばらくするとステータスは「正常」に戻り、何事も無かったかのようにWEBサーバのページが表示されます。ステータスも正常に戻りましたね。

# /etc/init.d/httpd start
Startting httpd:                      [ OK ]

これで一通りSorry構成を確認することが出来ました。
これで「サーバが見つかりません」メッセージで恥ずかしい思いをしなくて済みますね。

 

■Sorryサーバを使いまわしたい

一つのサービスに対し、Sorryサーバ1台という構成で表示はHTMLが1枚のみというのは少々勿体無いかもしれません。
ならば、ネームベースで VirtualHost を複数設定し、共有してしまうのはどうでしょうか。


※httpd.confの例

<VirtualHost ***.***.***.***:80>
DocumentRoot /var/www/html
ServerName sub1.example.**.jp
ServerAlias sub1.example.**.jp
</VirtualHost>

<VirtualHost ***.***.***.***:80>
DocumentRoot /var/www/html
ServerName sub2.example.**.jp
ServerAlias sub2.example.**.jp
</VirtualHost>

<VirtualHost ***.***.***.***:80>
DocumentRoot /var/www/html
ServerName sub3.example.**.jp
ServerAlias sub3.example.**.jp
</VirtualHost>

<VirtualHost ***.***.***.***:80>
DocumentRoot /var/www/html
ServerName sub4.example.**.jp
ServerAlias sub4.example.**.jp
</VirtualHost>


サブドメインであれば、DNS登録だけですみますし、リソースが有効に活用できるかと思います。
ただし、HTTPS通信には向かない(というわけではないが別途IPが必要)、複数のサービス向けに行うことで、Sorry自体を停止することが出来なくなる、といったリスクも考えなくてはなりませんね。

以上、Sorryメッセージを表示させる構成についてご紹介しました。メンテナンスや不測の障害発生への備えに少しでもご参考になれば幸いです。

※追伸:
sorryページを表示させる場合、ポート:80以外では動作しません。
ご注意ください。

 

お問い合わせ

BIGLOBEクラウドホスティングについて、もっと知りたい方、質問がある方、まずはBIGLOBE法人コンタクトセンターへお電話、または下記のお問い合わせフォームからお問い合わせください。phoneotoiawase

カテゴリー: 技術情報 タグ: , , , パーマリンク