クラスタサーバ
0.更新履歴
- 2001.09.17 新規作成
1.はじめに
このドキュメントでは,クラスタサーバについて説明する.
2.クラスタサーバ,クラスタシステムとは
クラスタサーバ(以降クラスタ)とは,高信頼性を持つサーバを構築する技法の1つで,複数台のサーバで構成され,そのうちの1つが故障(ダウン)してもサービスを提供しつづけられるシステムの事である.
このようなシステムの事をHA(High Availabity:高可用性)ともいう.
また,複数台のサーバを仮想的な1つのサーバとしてみなす事で,処理を分散化させシステム全体のパフォーマンスを向上させる分散処理クラスタという考え方もある. OracleのPalallel Serverは,この分散処理クラスタとなり,拡張性のLayerd Scalabilityシステムともいう.
3.クラスタの種類
クラスタの種類には,次のようなものがある.
3.1.ホットスタンバイ
常時2台以上のサーバが電源ONの状態で稼動している.

ホットスタンバイの例
通常稼動側(Active)で障害が発生した場合,基本的にソフトウェアが自動的に感知してアプリケーションを切り替える.
3.2.コールドスタンバイ
ホットスタンバイと同様の仕組みであるが,待機側(Passive)は電源OFFの状態である.

コールドスタンバイの例
Active側が故障した場合,手動で電源を入れるか,あるいはActive側がハード故障の場合,Passive側から部品を取り出して使うなどの手段をとることもできる.
3.3.相互切り替え方式
スタンバイの場合,いわば遊んでいるサーバが存在する事になり,これを無駄と考える場合は,相互に業務を稼動させて,それぞれおが切り替わる方式をとることができ,これを相互乗り換えという.(適切な英語は知らん)

相互切り換え方式の例
相互切り換え方式では,切り替え時に両方の業務が稼動しても良いように,各リソース(CPU,メモリ等)を設計しておかないと,切り替わった先でCPUパワー不足,メモリ不足などで動かなくなる可能性もあり,設計が難しいとされる.
3.4.n対1方式
これまでのクラスタ構成では,ActiveとPassiveが1対1であったが,これをn対1とする方式である.

n対1方式の例
複数台のActive側の何れかがダウンした場合に乗り変わるようになる.
サーバ機の利用効率からすると,相互乗り換えの次に良い方式であるが,Active系の各サーバと同じアプリケーションを備えていなければならないため,同じソフトウェア構成のサーバでなければソフトウェアの互換性等で実際の切り替えは難しそうである.
4.ディスク装置に関係するモデル
4.1.共有ディスクモデル
Microsoft Cluster Server(MSCS)等で一般的な方式で,ホットスタンバイ形式となる.
共有ディスクは,Active/PassiveサーバからはSCSIやSANなどで物理的に同時に接続しておき,Active側のサーバからディスクの内容を参照する事ができるようになっている.

共有ディスクモデルの例
故障などで1号機がダウンした場合,1号機の共有ディスクが切り離され,2号機で共有ディスクが参照できるようになる.
アプリケーションやその設定ファイル,データを共有ディスクに入れておけば,切り替わった2号機で共有ディスク上のデータを使ってプログラムの起動やデータベースのデータ保証が行える.
しかし,共有ディスクは,それ専用の装置で,さらにクラスタリングソフトで認定されたハードウェアで無ければならず,一般的にこの認定されたハードウェアは高価である.
4.2.ディスクミラーリングモデル
共有ディスクを使わないモデルで,ハードディスク上のデータをリアルタイムレプリケートする事によって双方向のマシンを稼動系として利用する方法である.

ディスクミラーリングモデルの例
専用ハードディスクがいらない分,ハードウェア予算は削減されるが,レプリカデータのトラフィックと負荷がかかるため,レプリカ専用のネットワークを構築する必要がある.
5.提供されるサービスの範囲
クラスタサーバ,クラスタサービスといっても,提供されるサービスの違いがある.
クラスタサーバでは,各ノードがダウンした時に何をするか定義する機能があり,その中で引き継ぐリソースや実行する処理を定義する事になる.
OS側のみで対応しているクラスタリングでは,ほとんどがIPアドレスの引き継ぎ,共有ディスクの引継ぎ(Windows系の場合はコンピュータ名),稼動しているアプリケーションの引継ぎがあるが,処理中の業務は廃棄される.
高可用性の仕組みが組み込まれたアプリケーションサーバでは,常時メモリコピー等を行う機能等で,セッション情報の引継ぎまで実現しているものもある.
6.仕組み
6.1.クライアントからみた接続先
クラスタサーバでは,クラスタノードと呼ばれる仮想的なサーバを定義し,クライアントからの接続はくラスタノードに対して行うよう設定する.

クラスタノードを使った接続
たとえば,上記の例では,IPアドレス1.1.1.1と1.1.1.2で構成されるサーバに対して,クラスタノード1.1.1.3というアドレスを与える.
クライアントは,クラスタノードの1.1.1.3に対して接続を行うため,クラスタサーバのどちらがダウンしてどちらが稼動しているかにかかわらず接続を行うことができる.
6.2.ハートビート
クラスタサーバのハードウェアには,ハートビートと呼ばれる専用のネットワークが構築されており,このルートを使って,お互いのサーバの状態を通信している.

ハートビートの概念?図
このハートビートは,定期的に行われており,1分〜3分が多いようである. 間隔が短すぎるとサーバ負荷による瞬断まで拾う可能性もあり,長すぎるとクラスタの切り替わり終了までの時間がかかることになる.
ハートビートにはその間隔と同じく,リトライ回数も設定できる事が多いため,サーバのCPU負荷等が問題なければ間隔を短くしても良いと思われる.
1996年ごろまでは,RJ-11のようなモジュラーケーブルを用いた専用カードを使ったものが多かった(それ以前はしらない)が,最近ではより汎用的で安価に手に入るようになったためEthernetカードを使っているものが多い.(データは少量しか流れないが100M Etherを使っているものが多い・・・もったいない)
クラスタソフトによっては,このハートビートはフロントのネットワークカードに共存させる事もできるが,メーカはネットワークのトラフィックの問題などで誤検知する可能性があるので推奨していない.
7.クラスタリングソフト
次のようなものがある.
- OS関連
- CoStandbyServer
- NetJapan(Legato)
- ソフトウェアメーカなだけに,ハードウェアに依存しないのが良い. 一番安価だとおもうが,nノード対応はしていない.
- ClusterPerfect
- TOSHIBA
- UNIXにまで対応している. 色々な形態が取れるが,CPU価格なのでマシン構成によっては割高.個人的には(金額面以外で)一番気に入ってる.
- ClusterPro
- NEC
- 以前日経コンピュータ?にMAZDAで使われているといってたが. 1998年頃には唯一?実用的な面で実績があったようである.
- SalfCluster
- Fujitsu
- これもUNIXにまで対応している. メーカの人を呼んだら,他社製品で稼動する際には検証が必要だがシンプルなので稼動すると可能性が高いといわれた.
- Veritus Cluster Server
- Veritus
- Solarisの世界では標準的. Windows版も2001年10月頃に出るとか?
- Microsoft Cluster Server
- Microsoft
- WindowsNT4.0 Enterprise Edition,Windows2000 Advanced Serverに無料で付属. 共有ディスクモデル専用となるため,認定ハードウェアが必須.
- CoStandbyServer
- アプリケーション
- Tuxedo
- BEA
- TPモニタでは世界標準. セッションの引継ぎまで可能. WebLogicでも可能か?
- WebSphere
- IBM
- Application ServerでBEAのWebLogicと競合. ロードバランス機能などを実装.セッション引継ぎまでできるかは知らない.
- Oracle Fale Salf
- Oracle
- Oracle 8.0.5以降くらいから可能. 単純にOracleを待機ノードで起動するだけ.
- 無料ソフト. 待機側のOracleライセンスは不要.
- Oracle Standby Server
- Oracle
- コールドスタンバイに近い形で,アーカイブログを転送して適用することで,できるだけ最新のデータ内容を保持しようとする方式.
- スタンバイサーバ側のライセンスは不要.
- Tuxedo