この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "Microsoft Clustering Service"
MSCS(MicroSoft Clustering Service)とはマイクロソフトにより開発された、Windowsのサーバ用オペレーティングシステム (OS) にて構築するフェイルオーバー型クラスタリング技術を言う。Windows Server 2008以降では「Windows Server Failover Cluster (WSFC)」という名称に変更されている。 (追加インストールの形で)Windows NT 4.0 Enterprise Editionで実装された。その後Windows 2000 Advanced Server及びDatacenter Serverより標準実装された。Windows Server 2003ではEnterprise Edition、Datacenter Editionで利用できる。一般にクラスタリングサービスは別売のクラスタリング専用のソフトを必要としていたが、OSにクラスタリング機能を標準的に実装していることから普及した。 ここではWindows Server 2003シリーズにおけるMSCSの挙動について説明する。構成図は2台のサーバ、SCSI又はファイバーチャネルを用いたSAN (Storage Area Network) での共有ディスクを用いた一般的なクラスタの構成を示している。2台のサーバ間には他ノードの生死確認を含むハートビート通信が行われる。この通信は本来のサービス用とは別のネットワークを用いることが推奨されている。共有ディスクには構成情報を含むクォーラムと呼ばれる情報が置かれており、障害時はこのクォーラムへの接続を持たないノードのサービスを終了することでスプリットブレインシンドロームに陥ることを防ぐ。 最小構成は1台のサーバで構成するローカルクォーラムクラスタだが、これはフェイルオーバーが行えず、ソフトウェアのテスト等に用いる。Windows Server 2003のMSCSより、サーバ2台以上で共有ディスクを用いないマジョリティセットノード構成がサポートされた。これは障害で生き残ったサーバのうち過半数(クラスタを構成する全サーバ数/2+1台以上)のサーバを含むパーティション(ネットワーク接続を保ったサーバ群)がサービスを継続する仕組みとなっている。特徴としては、過半数の判定部分からわかるように、サーバ2台(=2ノード)で構成すると1ノードの障害で残る1サーバもサービス継続を行えなくなることがあげられる。SANがコスト的な問題等で用意できない場合や、ノードが遠隔地にありSANに接続できない場合に主に用いられる。 Windows NT 4.0にて実装された時は、待機系はフェイルオーバーが発生しない限り待機しか行えず(片方向スタンバイ)、ハードウェア、ソフトウェアともにリソースに無駄が多かった。また、平常時に利用しない為、パッチ適用等の運用コストも重かった。更に設定が難しく、Windows NT 4.0の保守性の低さに起因する問題も多かった。Windows 2000において双方向スタンバイとなり、平常時においてそれぞれ別の業務アプリケーションを実行させることが可能となった。 一般的なクラスタの特徴だが、障害発生からその認識、フェイルオーバーの完了までの間サービスは停止する。アプリケーション側ではこのサービス停止を意識した設計と実装が必要となる。.mw-parser-output .asbox{position:relative;overflow:hidden}.mw-parser-output .asbox table{background:transparent}.mw-parser-output .asbox p{margin:0}.mw-parser-output .asbox p+p{margin-top:0.25em}.mw-parser-output .asbox{font-size:90%}.mw-parser-output .asbox-note{font-size:90%}.mw-parser-output .asbox .navbar{position:absolute;top:-0.90em;right:1em;display:none}
概要
構成構成例
性能
.mw-parser-output .hlist ul,.mw-parser-output .hlist ol{padding-left:0}.mw-parser-output .hlist li,.mw-parser-output .hlist dd,.mw-parser-output .hlist dt{margin-right:0;display:inline-block;white-space:nowrap}.mw-parser-output .hlist dt:after,.mw-parser-output .hlist dd:after,.mw-parser-output .hlist li:after{white-space:normal}.mw-parser-output .hlist li:after,.mw-parser-output .hlist dd:after{content:" ・\a0 ";font-weight:bold}.mw-parser-output .hlist dt:after{content:": "}.mw-parser-output .hlist-pipe dd:after,.mw-parser-output .hlist-pipe li:after{content:" |\a0 ";font-weight:normal}.mw-parser-output .hlist-hyphen dd:after,.mw-parser-output .hlist-hyphen li:after{content:" -\a0 ";font-weight:normal}.mw-parser-output .hlist-comma dd:after,.mw-parser-output .hlist-comma li:after{content:"、";font-weight:normal}.mw-parser-output .hlist-slash dd:after,.mw-parser-output .hlist-slash li:after{content:" /\a0 ";font-weight:normal}.mw-parser-output .hlist dd:last-child:after,.mw-parser-output .hlist dt:last-child:after,.mw-parser-output .hlist li:last-child:after{content:none}.mw-parser-output .hlist dd dd:first-child:before,.mw-parser-output .hlist dd dt:first-child:before,.mw-parser-output .hlist dd li:first-child:before,.mw-parser-output .hlist dt dd:first-child:before,.mw-parser-output .hlist dt dt:first-child:before,.mw-parser-output .hlist dt li:first-child:before,.mw-parser-output .hlist li dd:first-child:before,.mw-parser-output .hlist li dt:first-child:before,.mw-parser-output .hlist li li:first-child:before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child:after,.mw-parser-output .hlist dd dt:last-child:after,.mw-parser-output .hlist dd li:last-child:after,.mw-parser-output .hlist dt dd:last-child:after,.mw-parser-output .hlist dt dt:last-child:after,.mw-parser-output .hlist dt li:last-child:after,.mw-parser-output .hlist li dd:last-child:after,.mw-parser-output .hlist li dt:last-child:after,.mw-parser-output .hlist li li:last-child:after{content:")\a0 ";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li:before{content:" "counter(listitem)" ";white-space:nowrap}.mw-parser-output .hlist dd ol>li:first-child:before,.mw-parser-output .hlist dt ol>li:first-child:before,.mw-parser-output .hlist li ol>li:first-child:before{content:" ("counter(listitem)" "}.mw-parser-output .navbar{display:inline;font-size:75%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}.mw-parser-output .infobox .navbar{font-size:88%}.mw-parser-output .navbox .navbar{display:block;font-size:88%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}