仮想化技術を利用して複数のサーバーを1台のサーバー・マシンに集約したら,ホストとなるサーバーのハードウエア障害対策を検討しなければならない場合がある。ここでは,Virtual Server 2005 R2を使ったホスト・クラスタ(ホスト・サーバーのクラスタ化)について解説する。

 クラスタとは一般に,複数台のサーバーを1台の仮想的なサーバーに見立て,ディスクを共有したシステムを指す。クラスタの目的は,(1)科学技術計算などの膨大な計算を並列処理する用途(計算クラスタ),(2)トランザクションやネットワークといったシステムへの負荷を分散させる用途(リソース共有クラスタ,Webクラスタ),(3)システムの可用性を高める用途(高可用性クラスタ),に分けられる。マイクロソフトの「マイクロソフト・クラスタ・サービス(MSCS)」は高可用性クラスタを構築するためのシステムである。ここでは,Virtual Server 2005 R2で稼働する仮想サーバーの可用性を向上させるために,MSCSを使って,ホスト・クラスタを構築する方法を説明する。

可用性を高めるホスト・クラスタ

 高可用性クラスタでは,同じ構成のサーバーを複数台用意する。ハードウエアやアプリケーションに何らかの障害が発生した場合,あるいは計画的なメンテナンスなどで一時的にサーバーを停止するとき,システムがサーバーの停止を検知して,別のサーバーに全く同じサービスを引き継がせる。これによってシステム全体としては,連続稼働できるようになる。

 ここで,あるサーバーがダウンしたときに,サービスを別のサーバーに引き継ぐことを「フェイル・オーバー」と呼ぶ。また,クラスタを構成する個々のサーバーを「ノード」と呼び,通常サービスを提供するノードを「アクティブ・ノード」,障害時にサービスを引き継ぐために待機しているノードを「スタンバイ・ノード」と呼ぶ。

 Virtual Server 2005 R2のホスト・クラスタは,仮想マシンの可用性を高めることが目的である。例えばホストのハードウエアやソフトウエアの保守など,計画的な停止であれば,ホスト・クラスタを構築することで,仮想マシンのOSやアプリケーションを稼働させたままフェイル・オーバーが可能である(図1)。また,複数の仮想マシンを実行している環境であれば,ほかのノードに仮想マシンを移動させて,ハードウエアの負荷分散も図れる。

図1●ホスト・クラスタを構築すると,仮想マシンが稼働中にフェイル・オーバーが可能
図1●ホスト・クラスタを構築すると,仮想マシンが稼働中にフェイル・オーバーが可能

MSCSを利用してクラスタを構成

 Virtual Server 2005 R2でホスト・クラスタを構築するためには,まず2台のサーバー・マシン(ノード)を使ってMSCSを構築しなければならない。MSCSの構築自体は,ウィザードに従って操作するだけなので難しくない。ここでは,既にMSCSが構築してあるものとして話を進める。

 注意したいのは,Virtual Serverのサービス自体がMSCSに対応していないことだ。そこで,クラスタ・システムは一般に「共有ディスク」を備えていることを利用する。

 まず,Virtual Serverのホスト・サーバー間で共有するディスク上に仮想マシンを配置する。仮想マシンをフェイル・オーバーするときに,ホスト・サーバーにあらかじめ登録したスクリプトによって共有ディスク上に仮想マシンの状態を保存し,アクティブ・ノードからスタンバイ・ノードに引き継ぐ。MSCSでは,フェイル・オーバーする直前と直後に,それぞれあらかじめ登録したスクリプトを実行できる。

 Virtual Server 2005 R2のホスト・クラスタを構築するには,各ノードにVirtual Server 2005 R2をインストールする。ただし,ホスト・クラスタを利用できるOSは,Windows Server 2003 SP1および同R2のEnterprise EditionまたはDatacenter Editionである。32ビット版と64ビット版のどちらでも利用できるが,それぞれのバージョンに対応したVirtual Server 2005 R2を用意する必要がある。

 ホスト・クラスタを構築する手順は次の通りだ。(1)シャットダウン・スクリプトを作成,(2)各Virtual Serverに仮想マシンを登録,(3)MSCSに仮想マシン制御スクリプトを登録,という3ステップである。順に説明しよう。