サーバに障害が発生すると、それが復旧するまでサービスを提供できません。そうならないように備えるならば、予備のサーバを複数台用意しておけばよさそうです。しかし、それだけで十分でしょうか。
サーバを複数台用意していたとしても障害の対処に時間がかかってしまうのであれば、結局は可用性要件を満たせていないことなります。つまり、障害の発生を認識し、データベースシステムやアプリケーションを一時停止した上で予備のサーバにストレージをつなぎ換えて、データベースシステムやアプリケーションをあらためて起動させる──。このような自動化の仕組みが必要になるでしょう。
この仕組みを実現するソフトウェアが「クラスタリングソフトウェア」です。クラスタリングソフトウェアは、データベースシステムを含むアプリケーションやCPU、メモリ、ストレージなどをリソースとして管理するソフトウェアです。具体的には、システムが正常に動いているかどうかを監視する「リソースの死活監視」を実施して、障害の発生を検知した場合には、自動的に予備のサーバへ切り替える仕組みを提供します。
このクラスタリング構成には「フェイルオーバー型クラスタリング」と「ロードバランス型クラスタリング」があります。
フェイルオーバー型クラスタリング構成では、シングルインスタンス構成と同じように1つのインスタンスが1つのデータベースを管理しています。シングルインスタンス構成との違いは、クラスタリングソフトウェアによってサーバ障害が検知されると、自動的に待機サーバでインスタンスが起動する仕組みが実装されていることです(図2)。
システムが自動的に障害の検知、リソースの切り替え、待機サーバでの復旧までを行うので、障害からは迅速に復旧できます。つまり、シングルインスタンス構成よりも「可用性の高い構成」といえます。
切り替えの時間は、「障害の検知」→「リソースの停止」→「リソースの切り替え」→「リソースの起動」の合計時間となります。その時間がシステムの可用性要件を満たすのであれば、シンプルな構成で高い可用性を持つデータベースシステムを構築できたということになります。
前述したフェイルオーバー型クラスタリング構成は、稼働する1台のノードで処理を行う構成でした。それに対して、構成するノードのリソースを全て使ってアプリケーションからの要求を処理するクラスタリング構成のことを、ロードバランス型クラスタリング構成と呼びます。データベースシステムでは、各ノードでインスタンスを起動し、共有ストレージ上のデータベースを管理する構成となります(図3)。
例えばOracle Databaseでは、「Oracle Real Application Clusters」と呼ばれるOracle Database独自のクラスタリング機能を用いて実装します。
ロードバランス型クラスタリング構成では、フェイルオーバー型クラスタリング構成と違い、あるノードでハードウェア障害が発生したとしても、他のノードに接続しているアプリケーションは障害の影響を受けずに処理を継続できます。また、障害が発生したノードにアクセスしていたアプリケーションも、他のノードに接続を切り替えればサービスを止めずに済みます。こうすることで高い可用性を実現します。
どちらのクラスタリング構成においても、シングルインスタンス構成時のハードウェアに加えて、複数台のサーバと共有ストレージ、クラスタソフトウェアが「ハートビート通信」(システムが正常に稼働していることを伝えるための信号と、それを認識する仕組み)を行うためのネットワークが必要となります。それぞれのハードウェアにSPOF(単一障害点:それに障害が発生すると、システム全体の障害につながってしまう箇所)が存在しないように実装することで、さらに可用性を高められます(図4)。
Copyright © ITmedia, Inc. All Rights Reserved.