何でも屋Hyper-V を使用した簡単なクラスタリング

Greg Shields

目次

Hyper-V をクラスタ化する
クラスタ化した Hyper-V を使用する
可用性を向上させる

IT 業界で働き始めて間もないころ、「何の仕事をされているのですか」という頻繁にたずねられる質問に対して、「コンピュータの修理をしています」と答えていました。しかし、長年その発言について気になっていました。というのも、まるでコンピュータがいつも壊れていて、それで私の生計が保障されていると言っているようで、仕事内容があまりにも後ろ向きなものであるように感じていたからです。そして、その質問に何度も答えるうちに、ようやくわかりました。私が、IT 技術者およびシステム管理者として本当に重視していたのは、コンピュータを修理することではなく、コンピュータの稼動状態を維持することだったのです。

それは今でも変わっていません。事実、ほとんどのビジネスの日常業務でコンピュータが欠かせないものになるにつれて、コンピュータを修理できることはそれほど重要ではなくなってきました。コンピュータの稼動状態を維持することの方がずっと重要になりました。これは、いわゆる何でも屋の IT プロフェッショナルの仕事において、最も重要なことです。最低限のリソースや縮小する予算でコンピュータの稼動状態を維持するには、多くの場合、簡単かつ確実に実行できる有益な方法が必要になります。

ただし、適切なテクノロジを組み合わせて使用すると、多くの費用をかけずにサーバーの可用性を向上させることができます。たとえば、物理サーバーを仮想サーバーに変換するだけで、次のような機能が提供されます。これにより、サーバーがダウンすることが少なくなり、ダウンした場合にもバックアップを簡単に復元できるようになります。

  • スナップショット。サーバーの状態を、ソフトウェアの更新や構成の変更によって問題が発生する前の時点に戻すことができます。
  • 仮想ハード ディスク。Windows サーバーに含まれている多数のファイルをバックアップ用の 1 つのファイルに統合することにより、ファイルを一元管理できるので、バックアップの信頼性が大幅に向上します。
  • ボリューム シャドウ コピー サービス (VSS) のサポート。VSS は Hyper-V に組み込まれているので、アプリケーションを復元しても、データの損失はなく、すぐに操作できます。
  • 移行機能。サービスをほとんど (または、まったく) 中断することなく仮想マシンのプロセスを新しいホストに再配置するメカニズムにより、予定されたダウンタイム時の動作が向上します。
  • フェールオーバー クラスタリング。仮想マシンのホストで障害が発生した場合に、仮想マシンは、処理を実行し続けることができる別の場所に自動的に移動されます。

難しいのは、展開する必要があるテクノロジ、そしてコストの面から使用することができるテクノロジを的確に特定することです。IT 環境に導入できる冗長性のレベルとコストの間には、直接的な関係があります。その点を考慮すると、Windows Server 2008 フェールオーバー クラスタリングは複雑なテクノロジとして認識されているので、このテクノロジを Hyper-V に追加するチャンスを逃してしまう可能性があります。しかし、抜群に信頼性が高くなくても、適度に信頼できる仮想化テクノロジならば、皆さんが考えるよりも簡単に実装することができます。

そこで、このコラムでは、これらの 2 つのテクノロジを統合する、非常にシンプルな 1 つの解決策を説明しましょう。この実装は、最高レベルの可用性をすぐに実現するものでなく、現時点で展開できる最もシンプルな解決策だという点にご注意ください。基本的なことを説明したら、さらに機能を追加するいくつかの方法についてご紹介します。さらに機能を追加するということは、当然、コストが高くなり、さらに複雑になります。そのため、追加機能を実装するかどうかは予算とご相談ください。

Hyper-V をクラスタ化する

まず、「Hyper-V ステップ バイ ステップ ガイド : Hyper-V とフェールオーバー クラスタリングをテストする」という記事を参照してください。ここでは、クラスタ化された構成を実装するために必要となる概要手順について説明します。各手順ごとの詳細な説明については、上記ステップ バイ ステップ ガイドを参照してください。

Hyper-V を使用して冗長性を実現する際には、そのサービスを複数のコンピュータ間でクラスタ化します。各コンピュータには Windows Server 2008 Enterprise Edition の x64 バージョンがインストールされている必要があります。また、サーバー 1 台につき最低 2 枚のネットワーク カードが搭載され、iSCSI 用のネットワーク カードが 1 枚以上搭載されている必要があります。この非常に簡単な例では、ネットワークを使用して、この 2 台のサーバーを、一連の共有 iSCSI ディスクをホストしている別のサーバーまたはデバイスに接続します。ここで iSCSI を使用する理由は、セットアップしやすく、追加の機器や専門のトレーニングがほとんど必要とされず、既存のネットワークで実行できるからです。

iSCSI ディスクに仮想マシン用のファイルを格納し、両方のホストから仮想マシンに直接アクセスできるようにします。図 1 に示すように、2 枚のネットワーク カードによって、各サーバーが 2 つの異なるネットワーク (クラスタのプライベート ネットワークと運用ネットワーク) に接続され、3 枚目のネットワーク カードによって iSCSI ディスクに接続されています。この例では、iSCSI 接続は運用トラフィックとは別のネットワークにあります。iSCSI 接続を通常のネットワーク トラフィックから分離することは、それぞれのトラフィックをもう一方のネットワークの輻輳から保護するうえで重要となります。

fig01.gif

図 1 クラスタの運用を開始するには、少なくとも 6 つのネットワーク接続が必要となる

この環境を準備する際には、まず、サーバーで Hyper-V の役割を実行できることを検証します。Hyper-V には、次の 3 つのハードウェア要件があります。

  • サーバーでは Windows OS の x64 バージョンを実行できる必要があります。
  • サーバーのプロセッサには、ハードウェア データ実行防止 (DEP) 機能が備わっている必要があります。
  • サーバーのプロセッサには、仮想化拡張機能が備わっている必要があります。

上記 3 つの要件は、どれもサーバーで使用できるプロセッサの機能によって決定されます。そして、サーバーがこれらの要件を満たしているかどうかを判断する方法は 2 つあります。サーバー ハードウェアの製造元から購入したサーバー クラスの機器については、サーバーのメーカーとモデルを Windows Server カタログで確認できます。このサイトで、左側の列にある Hyper-V というリンクをクリックすると、検索結果が絞り込まれ、Hyper-V が正常にサポートされることがテストで検証されているサーバーだけが表示されるようになります。

サーバーが Windows Server カタログに掲載されていない場合、またはサーバーが独自に設計されたものである場合は、SecurAble テスト ツールをダウンロードします。この小さなツールを使用すると、サーバーに搭載されているプロセッサの機能が上記の 3 つの要件を満たしているかどうかをテストできます。[Maximum Bit Length] (ビット長の最大値) が 64 で、[Hardware DEP] (ハードウェア DEP) と [Hardware Virtualization] (ハードウェア仮想化) の両方に "Yes" と表示された場合は、要件が満たされていることになります。

この処理の次の手順では、iSCSI 経由でネットワークに公開される、2 つのディスクを作成します。1 つ目は監視ディスク用で、ディスクのサイズは 512 MB です。一方、2 つ目のディスクのサイズは 1 台の仮想マシンの完全インストールに必要なサイズになります。この手順は、ディスクをホストするために使用している製品の種類によって異なります。ご使用の環境に iSCSI ハードウェアを設置している場合は、そのインターフェイスを使用して 2 つの新しいディスクを作成して公開します。iSCSI ハードウェアを設置していない場合は、インターネットから iSCSI ターゲット ソフトウェアを入手できます。このソフトウェアは、ご使用の環境にある 3 台目のサーバーにインストールして、iSCSI ハードウェアの代わりに使用できます。

ソフトウェア ベースの iSCSI を使用する必要がある場合は、使用できる機能を注意深く確認してください。マイクロソフトが提供するクラスタリング テクノロジでは、SCSI Primary Commands-3 (特に、永続的な予約) をサポートするために iSCSI が必要です。現在、この機能は、ほとんどの市販の iSCSI ソフトウェアでサポートされていますが、ほとんどのオープン ソースのソフトウェア パッケージで、この機能をサポートしているものはごくわずかです。

低価格で使いやすいソフトウェア パッケージの 1 つに、Rocket Division の StarWind iSCSI Target があります。無償の FREE Version のソフトウェアでは、複数のサーバーから同じディスクに接続することがサポートされていないので、クラスタ化には、有料バージョンのソフトウェアを使用する必要があります。これ以外にも選択肢はあります。しかし、現時点では、マイクロソフトが無償で提供している iSCSI ターゲット ソフトウェアはありません。

iSCSI 経由で、ネットワークにこれらの 2 つのディスクを作成して公開したら、クラスタを構成する各コンピュータで次の手順を実行して、ディスクに接続します。

  • 管理ツールの iSCSI イニシエータを起動します。このツールの初回使用時には、Microsoft iSCSI サービスを有効にして、ファイアウォール接続のブロックを解除することを 2 回要求されます。2 回とも [はい] をクリックして、コンソールを起動します。
  • ディスクを検索するには、[探索] タブをクリックし、[ポータルの追加] をクリックします。次の画面で、iSCSI ディスクの IP アドレスを入力し、[詳細設定] をクリックします。次に、ローカル アダプタをマイクロソフトの iSCSI アダプタに変更します。その後、ソース IP をディスクの接続に使用したネットワーク カードの IP アドレスに変更します。この時点で接続エラーが発生する場合は、ファイアウォールによってイニシエータがターゲットにアクセスできなくなる可能性があります。
  • ネットワーク経由でディスクに接続することに成功したら、[ターゲット] タブの下に各ディスクの名前が表示されます。次に、各ディスクにログオンします。そのためには、ディスクをクリックして、[ログオン] をクリックします。次の画面で、[コンピュータの起動時にこの接続を自動的に復元する] チェック ボックスをオンにして、[詳細設定] をクリックします。ここでも、ローカル アダプタをマイクロソフトの iSCSI アダプタに設定し、ソース IP を適切なネットワーク カードの IP アドレスに変更して、ターゲット ポータルを iSCSI デバイスの IP アドレスとポートに変更します。各ディスクで、この手順を繰り返します。正常にログオンすると、図 2 のような状態になります。
  • [お気に入りのターゲット] タブの [最新の情報に更新] をクリックします。お気に入りのターゲットの一覧に、ディスク名が表示されます。
  • [ボリュームとデバイス] タブの [自動構成] をクリックします。これまでのすべての手順が正しく完了している場合は、各ディスクへの参照がボックスに表示されます。

fig02.gif

図 2 iSCSI ディスクへの正常な接続

ディスクに接続したら、ディスクを初期化およびフォーマットして、使用する準備を進める必要があります。この処理は、サーバー マネージャの [記憶域] ノードの下にある [ディスクの管理] ノードで行います。この処理は各コンピュータで実行する必要がありますが、もう一方のコンピュータの電源がオフになっているときに実行する必要があります。この時点で、この処理を行い、ディスクの管理を起動します。ここで、各ディスクを右クリックし、ディスクをオンラインに切り替えます。その後、もう一度右クリックして、ディスクを初期化します。最後に、さらにもう一度右クリックして、新しいシンプル ボリュームを作成し、ディスクを NTFS 形式でフォーマットして、ドライブ文字を割り当てます。たとえば、クォーラム ドライブに Q を割り当て、仮想マシンのドライブに F を割り当てます。

1 台目のコンピュータの電源を切り、2 台目のコンピュータを起動します。2 台目のコンピュータのディスクには、1 台目のコンピュータに割り当てたのと同じドライブ文字を割り当てます。この処理が完了したら、両方のコンピュータの電源を入れることができます。これで、ディスクのクラスタ化の準備が整いました。

この処理の次の手順では、Hyper-V の役割とフェールオーバー クラスタリング機能をコンピュータにインストールします。この 2 つの手順は、サーバー マネージャから実行します。Hyper-V の役割をインストールする前に、更新プログラム 950050 をインストールして、サーバーの Hyper-V のコードを RTM 版にアップグレードします。この更新プログラムは、Windows Update のコントロール パネルで、推奨される更新プログラムとして表示されます。このコンポーネントをインストールしたら、コンピュータを再起動する必要があります。

残っている手順はあと 2 つです。まず、管理ツールのフェールオーバー クラスタ管理ユーティリティを起動して、クラスタを検証します。ここで、[構成の検証] をクリックします。この手順では、構成内容が適切であることを確認して、クラスタを正しく作成するための準備を整えます。構成が検証テストに合格したら、[クラスタの作成] をクリックします。ウィザードでは、クラスタ通信に使用するクラスタ メンバの名前と IP アドレスを入力ように要求されます。このアドレスはネットワーク上で使用されない IP アドレスなので、この手順では、これまでに使用した IP アドレスは使用しないでください。ウィザードを完了して、クラスタを作成します。

クラスタ化した Hyper-V を使用する

System Center Virtual Machine Manager を使用しないで Hyper-V を単独で使用する場合は、クラスタ化された仮想ホストの管理は 2 か所で行うことになります。仮想マシンは、Hyper-V マネージャで作成して使用しますが、クラスタ自体と必要なクラスタ リソースの構成には、フェールオーバー クラスタ管理を使用します。

新しい仮想マシンを作成するには、Hyper-V マネージャを起動して、[新規] をクリックし、[仮想マシン] をクリックします。ウィザードの指示に従い、仮想マシンのディスク ファイルが F ドライブに格納されるようにします。クラスタ化された仮想マシンと関連付けられているすべてのファイルは、常に共有ディスクに格納されている必要があります。仮想マシンを作成したら、仮想マシンを終了し、フェールオーバー クラスタ管理を起動します。この次の手順では、仮想マシンでクラスタが認識されるようにするのに必要なリソースを構成します。[サービスとアプリケーション] を右クリックし、[サービスまたはアプリケーションの構成] をクリックします。一覧の [仮想マシン] をクリックし、[次へ] をクリックします。この時点で、ウィザードの画面は図 3 のような状態になります。ここで、クラスタを認識する必要がある仮想マシンを選択します。実行中の仮想マシンや、ディスク ファイルが共有ドライブに格納されていない仮想マシンは選択できません。ウィザードを完了して、この処理を終了します。

fig03.gif

図 3 クラスタを認識する仮想マシンの選択

これで、クラスタを認識する仮想マシンが作成され、この仮想マシンでは Windows Server 2008 フェールオーバー クラスタリングによって提供される高可用性を活用できるようになりました。つまり、仮想マシンのホストで障害が発生した場合や、仮想マシンで問題が発生した場合に、仮想マシンは、もう一方のクラスタ ノード上で自動的に再起動されます。図 4 に、フェールオーバー クラスタ管理で仮想マシンを表示した場合の例を示します。

fig04.gif

図 4 フェールオーバー クラスタ管理でホストされている仮想マシン

クラスタ ホストのメンテナンスを行う必要がある場合は、[サービスとアプリケーション] で仮想マシンのインスタンスを右クリックし、[このサービスまたはアプリケーションを別のノードに移動] をクリックすることにより、その仮想マシンを他のノードに簡単に移行することもできます。[サービスとアプリケーション] では、この仮想マシン グループのプロパティで、仮想マシンをホストするのに適したノードをクラスタに通知する設定が用意されています。Windows フェールオーバー クラスタでは、優先所有者は、フェールオーバーの発生時に仮想マシンをホストするように指定したクラスタ ノードと同じになります。この設定は、2 つ以上のノードがあるクラスタに、より大きな影響があります。また、複数のノード間で仮想マシンの負荷を手動で分散する手段として使用できる場合もあります。

可用性を向上させる

上記の手順は、サーバーの可用性がどれほど簡単に向上できるかを示すためにご紹介しました。Windows Server 2008 Enterprise Edition のコピーが 2 つあり、iSCSI のハードウェア デバイスまたはソフトウェア インストールのどちらかがある場合は、上記の手順を実行すると、高可用性をサポートする基本的な Windows クラスタを作成できます。

しかし、このコラムの冒頭で説明したように、これは第一歩にすぎません。このアーキテクチャに追加することで、可用性をさらに向上させられるテクノロジは他にもあります。テクノロジを追加するごとに、ご使用の環境の回復性が少し向上しますが、コストや複雑性も少し増加します。ニーズと予算に基づいて、以下のアドオンの追加を検討してください。

サーバー クラスの機器: Windows カタログに掲載されていない機器を使用すると、サポートに影響する可能性があります。また、ご使用の仮想マシンの要件に最適な機器ではない場合があります。テスト済みの、サポートされているサーバー クラスの機器に移行することで、問題が発生した際に完全なサポートを受けることができます。

ネットワーク カードの冗長性: 最低要件である 3 枚のネットワーク カードを使用して、各クラスタ ノードをディスクやネットワークに接続すると、どの接続で障害が発生した場合も、サーバーの障害はクラスタ ノードの障害となります。iSCSI のマルチパスまたはネットワークに冗長性を持たせるためにネットワーク カードを追加することは、ハードウェアを追加する場合の第一の選択肢として検討する必要があります。また、NIC は安価なハードウェアです。最近の多くのサーバーでは、4 枚、6 枚、またはそれ以上のネットワーク カードを、安価にサポートできます。そのため、NIC を追加すると、予算に見合うだけの高い回復性を実現することができます。

ネットワーク パスの冗長性: 運用ネットワークで iSCSI を使用すると、パフォーマンスが大幅に向上する可能性があります。また、逆のことも言えます。というのも、従来のネットワーク トラフィックは、クラスタ ノードからディスクへの接続に影響する可能性があるからです。iSCSI トラフィックを専用のネットワーク パスに分離すると、トラフィックが専用のネットワーク セグメントに分離されるので、ネットワークの状態に変化が生じた場合にも可用性が完全に保証されます。

ハードウェア ベースの iSCSI を使用する: iSCSI ターゲット ソフトウェアは機能しますが、問題が発生する可能性があります。iSCSI ディスクをホストしているサーバーで障害が発生すると、クラスタ全体で障害が発生したことになります。サーバーはときどき再起動する必要があるため、通常、ハードウェア ベースの iSCSI を使用することで、さらに高いレベルの可用性を確保できます。

iSCSI の冗長性: iSCSI 接続でハードウェアまたはソフトウェアのどちらを使用している場合でも、冗長性がない場合は、依然としてどちらも単一障害点となります。iSCSI ディスクに冗長性を持たせる解決策を検討してください。

System Center Virtual Machine Manager: 複数のシステム間で Hyper-V を単独で使用することは、容易ではありません。さまざまな構成を行う必要があり、多くの手順では手動による操作が必要になります。System Center Virtual Machine Manager の管理機能を使用すると、仮想化環境の管理が簡略化され、間違いやコストのかかるダウンタイムが発生する可能性が低下します。

追加のクラスタ ノード: Windows Server 2008 Enterprise Edition の x64 バージョンでは、フェールオーバー クラスタで最大 16 個のノードをサポートできます。クラスタにさらにノードを追加するには、このコラムで説明した手順を新しいサーバーで実行して、そのサーバーをクラスタに追加する必要があります。新たにサーバーを追加すると、問題が発生した際に仮想マシンのフェールオーバー先となるもう 1 つの場所が増えたことになります。1 つのノードで発生した障害が仮想マシンのパフォーマンスに与える影響を考慮すると、この方法は特に簡単な対策です。たとえば、4 つの仮想マシンを 2 つのノードで構成されたクラスタの各クラスタ ノードに格納した場合、1 つのノードで障害が発生すると、8 つすべての仮想マシンが 1 つのノードに移動されます。このように多数の仮想マシンが 1 つのサーバーに配置されると、すべての仮想マシンのパフォーマンスに影響が生じます。

マルチサイト クラスタ: 従来のフェールオーバー クラスタは、ホストで発生した障害を防ぐたために設計されましたが、災害の場合にはうまく機能しません。すべてのクラスタ ノードの障害を一度に防ぐには、GeoCluster の構築を検討してください。GeoCluster は、複数のサブネットにまたがるため、さらに複雑な作業が必要になりますが、遠く離れた場所にあるデータ ソースとの同期には、レプリケーション テクノロジを活用できます。また、1 つのサイト全体で障害が発生した際に、仮想マシンは、ほんの少し停止するだけで自動的に別のサイトに移行されます。

上記のすべてのテクノロジでは、導入すると、ご使用の環境におけるコストが高くなり、その多くでは複雑さの度合いがかなり高くなります。しかし、これらのすべてのテクノロジでは、可用性の高いアーキテクチャが使用されるので、可用性はますます高くなります。

クラスタ化と Hyper-V に関してご意見がある場合、または低価格な仮想クラスタを構築した方で、その情報を共有したい場合は、gshields@concentratedtech.com (英語のみ) までご連絡ください。

Greg Shields (MVP) は、Concentrated Technology の共同経営者です。何でも屋である IT プロフェッショナル向けのヒントとテクニックについては、www.ConcentratedTech.com を参照してください。