連載
» 2008年12月03日 00時00分 公開

Windowsクラスタリング入門:第1回 MSCS導入の準備〜サーバ・クラスタの基礎知識〜 (2/5)

[高橋郷,著]

サーバ・クラスタとは何か

 サーバ・クラスタは別名フェイルオーバー・クラスタ、HAクラスタ(High Availabilityクラスタ)などとも呼ばれる。“HA”が示すとおり、サーバ・クラスタは高可用性ソリューションである。つまり、限りなくサーバを停止させずに稼働させることが目的である。

 さて、高可用性でいうところの「限りなく」とはどのようなものを指すのか。一般的にITでいう高可用性は99〜99.99%(最近では99.999%と定義することもある)の年間稼働率を求めることを指す。一見99.99%というと、ほとんど止まらないように思えるが、1年間で約1時間の停止が見込まれることになる。

 安定稼働してしまえば、それほどサーバは停止しないと思うかもしれないが、ビルなどの停電対応やセキュリティ・パッチの適用、ハードウェア・メンテナンスなど、停止する機会は案外と多い。そのようなサーバを停止せざるを得ない作業について、停止時間を極力短くしようというのが高可用性の考え方である。高可用性ソリューションを適用する場合には、ある程度の停止時間を考慮し、設計、構築、運用する必要がある。ちなみに、99.999%以上の稼働率のシステムは、High Availability(ハイ・アベイラビリティ)システムに対して、Fault Tolerance(フォルト・トレランス)システムと呼ばれる。

稼働率 停止時間(年間) 補足
99.9999% 32秒 Fault Tolerance:宇宙飛行・航空管理・高度医療などで求められる。高コスト
99.999% 5分15秒
99.99% 52分34秒 High Availability:多くのビジネス・アプリケーションで使用。低コスト
99.9% 8時間46分
99% 87時間36分
表2 稼働率と停止時間

 クラスタを直訳すると「群れ・集団・集合体」という意味で、サーバ・クラスタとはサーバの集合体を意味する。クライアントへは共通のインターフェイス(仮想サーバ)を提供することで、あたかも1台のサーバに見せ掛けている。そして、複数台あるサーバのうち、いずれかのサーバが稼働していれば、クライアントにサービスを提供できる状態にすることで高可用性を実現する。

 サービスを提供するサーバの切り替えは、サーバ単位やアプリケーション単位などある程度自由に構成が可能だ。例えば、ノードAとノードBという名前の2台のサーバでサーバ・クラスタを構築し、かつデータベース・サービスを構成しているとする。そして、DBServerという仮想サーバ名を付けたとしよう。この場合、クライアントはDBServerという名前でアクセスすることで、ノードAとノードBのどちらのサーバがデータベース・サービスを提供しているかを意識せずにアクセスできる。

 なお、複数台のサーバが同じサービスを提供するためには、情報(データ・ファイル)の共有が必要となるため、サーバ間で共有使用できる共有ディスクが必要となる。

一般的なサーバ・クラスタ構成
クライアントに対して仮想サーバを提供することで、複数台あるサーバをあたかも1台のサーバに見せ掛ける。これにより、いずれかのサーバが稼働していればクライアントにサービスが提供でき、高可用性が実現可能となる。
 (1)クライアントからの要求は仮想サーバが受け付ける。
 (2)仮想サーバが受け付けたリクエストを適切なサーバで処理する。
 (3)複数のサーバからの共有ディスクへの要求を調整してアクセスする。

負荷分散システムとの違い

 サーバ・クラスタがどのようなシステムやアプリケーションで利用されているかを説明する前に、サーバ・クラスタと似たような構成である負荷分散システム(ロード・バランシング・システム)との違いについて明確にしておこう。負荷分散システムは、サーバ・クラスタと同じく複数台のサーバで1台の仮想サーバを構成し、クライアントからの処理をいずれかのサーバで応答する。ここまでは、サーバ・クラスタとほとんど同じである。

 ではいったい何が異なるのか。決定的な違いは、共有ディスクを持つか持たないかである。共有ディスクを持つということは、データをリアルタイムで共有できるということである。複数のノードからデータが更新されたとしても、同じディスクを参照しているため、不整合は発生しない。しかし、負荷分散システムでは、通常この共有ディスクは持たないため、データの書き込みに対応できない。その代わり負荷分散システムでは、静的なデータで構成し、クライアントからの要求を振り分けるだけなので 、サーバ台数の拡張(スケールアウト)が比較的容易に行える。このため、クライアントからの要求を分散して処理するのに優れている。主に、静的な情報を提供するWebサーバなどのアプリケーション・サーバでよく利用される。

 一方、サーバ・クラスタのような共有ディスクを保持する仕組みは、複数のサーバからのディスク書き込みを制御するため複雑化しやすく、負荷分散システムと比べスケールアウトは容易ではない。負荷を分散する目的としては不適切である。従って主な用途としては、データ更新が必要なデータベース・サーバ、メール・サーバ、ファイル・サーバなどが挙げられる。

 整理すると、サーバ・クラスタは、データ更新が必要なシステムの高可用性を実現し、負荷分散システムは読み取り専用の負荷分散と高可用性を提供するシステムといえる。一般的な構成としては、次の図のように、Webサーバのようなフロント・サイドは負荷分散システムで構成し、そこから発生する書き込みはサーバ・クラスタで行う構成を採用することが多い。

目的ごとによる負荷分散とサーバ・クラスタの混在構成例
目的によって負荷分散とサーバ・クラスタを使い分けるとよい。
 (1)Webサーバは4台のサーバで処理を振り分けることで負荷分散する。
 (2)データベース・サーバは2台のサーバで共有ディスクを制御し、可用性を高める。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。