Home > Windows にまつわる e.t.c.

MSFCとクイック マイグレーション


Windows Server 2008 実践ガイド」でカットした原稿です

MSFC

フェールオーバーの動作原理

MSFCに必要な環境

本書で構築する環境

クラスタ メンバ サーバの作成

MSFCのインストールと構成の検証

クラスタの作成とクォーラム ディスクの設定

クイック マイグレーション環境の作成

共有データ ディスクのマウント

子パーティションのクラスタ登録と子パーティションの起動

KB951308の適用

フェールオーバー テスト

MSFCのシャットダウン

子パーティションのシャットダウン

子パーティションの削除

ノード削除とクラスタの解除

付録:RocketEivision StarWind(3.5.4)でiSCSI 

MSFC

NLBやラウンドロビンはロードバランシングがメインで、各メンバー サーバはActive-Activeの関係で構成されている。NLBであれば、1台でもNLBのメンバーサーバが生きていれば縮退運転で機能提供し続けることが出来るが、仕組み上データを保持するサービスには向いていない。
データを持つサービスに対して有効なのが「フェールオーバー クラスター(MSFC)」だ。
Hyper-Vは、1台のサーバに複数のサーバ環境を構築するので、Hyper-Vをホストしているサーバ自身が壊れると、子パーティションで稼働している全てのサーバが停止するSPOF(Single Point of Failure)になってしまう。
この問題を解決できるのもMSFCだ。
MSFCは操作/設定項目がが多いので、本書では基本的な構築と操作に話を限定して解説する。

 

フェールオーバーの動作原理

MSFCは、複数のサーバで共有している「共有ディスク」にデータを配置して、稼働中のサーバがダウンした時は、待機しているサーバにサービス引き継いでサービスを稼働させ続ける仕組みだ。

MSFC

もう少し詳しく動作を説明すると、共有ディスクはActiveサーバからのみ見えるようになっており、Standbyサーバから共有ディスクを見るとオフラインになっている。
Activeサーバにフェールオーバーが必要な障害が起きると、Activeサーバから見えている共有ディスクがオフラインとなり、ActiveサーバはStandbyに移行する。
待機をしているStandbyサーバは、ActiveサーバがStandbyに移行したことを検知すると、共有ディスクをオンラインにし、Activeサーバへ移行しサービスが引き継がれるのだ。
注目してほしいのは、全てのメンバーサーバから共有ディスクがオフラインになっている瞬間がある点だ。この間はMSFC全体がサービスを停止しているので、完全無停止を提供しているわけではない。フェールオーバー中に運悪くサーバと通信していた場合は、通信切断となり仕掛中のデータは破棄されると考えていいだろう。
このサービス停止時間は、共有ディスクとクラスタのメンバーサーバ性能に大きく左右されるが、数秒から1分程度続くことになる。

フェールオーバー動作

Hyper-Vには、動作状態をハードディスクに記録して動作を停止することが出来る「保存」がサポートされている。
Hyper-VサーバをMSFC構成にすると、フェールオーバー発生時に子パーティションが共有ディスクに保存され、フェールオーバー先で復元される。このような動作をするので子パーティションの稼働状態を維持したままフェールオーバー動作が出来るのである。
Microsoft では、Hypre-VのMSFCを「クイック マイグレーション」と呼んでいる。クイック マイグレーションでは子パーティションの保存から復元までの間に一時的なHyper-V動作停止が発生するが、Windows Server 2008 R2では、この一時停止が発生しない「ライブマイグレーション」を提供する予定との事だ。

Hyper-Vのクイック マイグレーション

 

MSFCに必要な環境

MSFCを構成するには、いくつか条件があるのでそれを先らに説明しておこう。

 

本書で構築する環境

本書で構築するMSFCの環境は以下の通りだ

Hyper-Vのフェイルオーバー クラスタ環境

 

fc-hv01(クラスタ メンバー)
SAN: 172.16.0.11(iSCSI接続専用)
Main: 192.168.0.51(管理通信用)
Server: 全プロトコルOFF(子パーティション用)
OS: Windows Server 2008 Enterprise x64
役割: Hypre-V
機能: MSFC

fc-hv02(クラスタ メンバー)
SAN: 172.16.0.12(iSCSI接続専用)
Main: 192.168.0.52(管理通信用)
Server: 全プロトコルOFF(子パーティション用)
OS: Windows Server 2008 Enterprise x64
役割: Hypre-V
機能: MSFC

fc-hv00(MSFC仮想サーバ)
仮想IPアドレス 192.168.0.60

共有ディスク
IPアドレス 172.16.0.1
接続 iSCSI
Quorum 1GB
Disk1 30GB

Windows Server 2008のMSFCには共有するデータディスクの他に「クォーラムディスク」と呼ばれる、クラスタメンバー間で共有する管理用ディスクが必要だ。本書ではクォーラムディスク用に1GBのディスクをiSCSI上に構築している。

 

クラスタ メンバ サーバの作成

それでは、MSFCを構築しよう。まずはクラスタメンバーとなるノードサーバの構築だ。
OSをインストールしたら、ドメインに参加する前に各NICを設定する。

子パーティション用NICは全てのプロトコルをオフ

NICの設定が終わったら、ドメインに参加してドメインメンバーにする。
ドメインメンバー参加後にHyper-Vの役割をインストールするのだが、その際子パーティションに使用するNICは無指定でインストールし、Hyper-Vインストール後に子パーティションで使用するNICを指定する。

子パーティションで使用するNICを指定するために仮想ネットワークマネージャを起動

外部を追加

使用する物理NICを指定し仮想ネットワーク名を設定

作成された仮想NICの名前をわかりやすいものに変更

Hyper-Vのセットアップが完了したら、iSCSIの共有ディスク上に作成したクォーラムディスクをマウントする。マウントが完了するとハードディスクとして認識されるので、NTFSでフォーマットする。

iSCSIクライアント ツールであるiSCSIイニシエータを起動

自動起動を有効に

Windows ファイヤウォールの設定変更

iSCSIターゲットの追加

iSCSIターゲット指定

クォーラム ディスクを指定してログオン

自動復元を指定

マウントされたディスクをオンラインにする

初期化されていないので初期化する

ディスクの初期化

シンプル ボリュームの作成

ドライブレターの割り当て

ボリューム名を付けてフォーマット

もう一台のクラスタメンバーも同様にNIC設定、ドメイン参加、Hyper-Vインストール、クォーラムディスクをマウントする。
既にフォーマット済みなので、オンライにするとすぐに認識される。

クォーラム ディスクはフォーマット済みなので、もう一台のクラスタ メンバーではオンラインにするとボリューム名としてすぐ認識される

 

MSFCのインストールと構成の検証

MSFCは「機能」に分類されているので、機能の追加で全てのメンバーにインストールし、構成がMSFCに適しているかの構成検証をする。
この検証が失敗する構成だとMSFCは構成することが出来ない。ワーニングが出る場合はMSFCは構成できるが、指摘点が解消できるものであれば解消するに越したことは無い。いずれの場合もレポートが出力されるので、レポートを見ればいいようになっている。

[040501-90022.bmp/機能の追加]

 

フェールオーバー クラスタリングをチェック

MSFC管理

MSFCに適しているか構成の検証をする

クラスタ メンバーを参照

クラスタ メンバーを指定

メンバーが認識されたら次へ

全テストをする

検証項目確認

検証中

テスト合格

テストに失敗した状態でMSFCを構築すると、フェールオーバーが正常に機能しないので問題を解消しなくてはならない。場合よってはハードウェア交換が必要になることもあるので、運用環境でMSFCを構築する場合はWindows Server 2008のMSFCを正式にサポートしている機器で構成するのが妥当だろう。

 

クラスタの作成とクォーラム ディスクの設定

テストにパスすれば、クラスタの作成で引っかかることはまずないはずだ。クラスタ作成時にはクラスタが使用するホスト名とIPアドレスを設定する必要がある。
環境によってはDNSへの登録がエラーになる事があるが、どうやらこれは無視しても大丈夫そうである。ピュア環境で構成してもエラーになるので現状原因不明だが、何か情報がわかれば筆者のサイトで補足したいと思う。
クラスタが出来たら、クォーラムディスクを設定してMSFCの基本セットアップは完了だ。

クラスタの作成

クラスタのホスト名とIPアドレス設定

その他のアクション

クラスタクォーラム設定

推奨設定にする

クォーラム ディスクをチェック

 

クイック マイグレーション環境の作成

共有データ ディスクのマウント

MSFCの基本設定が終わったら、クォーラム ディスクがオンラインになっているActiveサーバでデータ用の共有ディスクをクォーラム ディスクと同じ手順でマウントし、NTFSでフォーマットする。
フォーマットしたデータ ディスクをクラスタに追加すればクラスタ用の子パーティション作成準備だ。

データ用共有ディスクをマウント

データ ディスクをフォーマット

データ ディスクをクラスタに追加

データ ディスクを指定

共有データ ディスクがクラスタに追加出来たら、Activeサーバで共有データディスク上に子パーティションを作成する。別のHyper-Vサーバで作成した子パーティションをエクスポートして、共有データディスクにコピーしてインポートしても良い。

 

子パーティションのクラスタ登録と子パーティションの起動

子パーティションの作成が完了したら、いよいよMSFCへの登録だ。子パーティションを指定すると、Hyper-V上に登録されている子パーティションが表示されるので、クラスタに登録する子パーティションを選択する。

サービスまたはアプリケーションの構成

仮想マシンを指定

クラスタに登録する子パーティションを指定

クラスタに登録された子パーティションの起動/停止はMSFC管理から操作する。Hyper-Vマネージャで子パーティションを停止しても、MSFCがダウンと判定して子パーティションを再起動してしまう。
子パーティションが起動したら、ActiveサーバのHyper-Vマネージャを開いてみよう。子パーティションが無事に稼働しているはずだ。

クラスタ上の子パーティションを起動

Activeサーバで見ると子パーティションが稼働している

 

KB951308の適用

MSFC管理からはリソースのオンライン/オフライン程度の操作しかできないので、Hyper-Vを操作するのは使い勝手が悪いが、この使い勝手を良くするパッチがKB951308として提供されている。
執筆時点でWindows Update提供にはなっておらず、個別ダウンロードが必要であった。

Increased functionality and virtual machine control in the Windows Server 2008 Failover Cluster Management console for the Hyper-V role
http://support.microsoft.com/kb/951308/

Windows Server 2008 x64 Edition 用の更新プログラム (KB951308)
http://www.microsoft.com/downloads/details.aspx?FamilyID=c614376d-477a-4bd9-8559-3c8b91f90998&DisplayLang=ja

バッチを適用すると、子パーティションに対して起動(Start)/停止(Turn Off)/シャットダウン(Shut Down)/保存(Save)が出来る様になる。

KB951308を適用すると操作性が良くなる

 

フェールオーバー テスト

子パーティションが稼働したら、手動でフェールオーバー動作をさせてみよう。

手動フェールオーバー(現在の所有者がfc-hv02になっているに注目)

フェールオーバー中

現在の所有者がfc-hv01に変わった

フェールオーバーはActiveサーバがシャットダウンしたり、重要な障害が起きると自動的に開始される。

 

MSFCのシャットダウン

MSFC全体をシャットダウンする場合は、まずクラスタ機能をシャットダウンし、各クラスタ メンバーサーバをシャットダウンする。

その他のアクション

クラスタのシャットダウン

 

子パーティションのシャットダウン

子パーティションそのものでシャットダウンしても、フェイルオーバー クラスタが再起動してしまうので、子パーティションのシャットダウンは、フェイルオーバー クラスタのShut Downを使ってシャットダウンする必要がある。

子パーティションのシャットダウン

 

子パーティションの削除

クラスタ登録した子パーティションを削除するには、サービスとアプリケーションで登録した子パーティションを削除する。削除すると仮想マシンも削除されるので、必要であれば削除前にインポートしておくと良いだろう。

子パーティションの削除

 

ノード削除とクラスタの解除

MSFCメンバであるノードを追加する時であってもフェイルオーバー クラスタの停止は不要だ。フェイルオーバー クラスタそのものを解除するときには、ノードを全て削除し、最後のノードで「クラスタの破壊」をする。

ノード削除

クラスタの解除

 

付録:RocketEivision StarWind(3.5.4)でiSCSI

Windows Server 2008のMSFCがサポートしている共有ディスク インターフェイスは、SAS/iSCSI/ファイバーチャネルだけだ。
運用環境であればこれらの機材を購入するのは問題ないだろうが、動作試験だと話は別だ。比較的安価であるiSCSIであっても、iSCSIデバイスを購入するだけで軽く100万円を超えてしまう。
蛇足だが、ローエンドiSCSI製品であるバッファローの「TraStation IS」は、1ターゲットに対して複数イニシエータをサポートしていないし、無理矢理複数イニシエータを認識させても、構成の検証でSCSI-3がエラーになり共有ディスクとして使用することはできない。(2008年9月現在の製品)
Linux上で稼働するiSCSIターゲットもあるにはあるが、使い慣れたWindows上で稼働するiSCSIターゲットを使いたいと願う読者は多いだろう。
運用環境には向かないが、RocketEivision(http://www.rocketdivision.com/)のStarWindは数少ないWindows上で動作する有償のiSCSIターゲットだ。嬉しいことに、StarWindには30日の試用期間があるので、動作テストをするだけならこれで事足りる。
共有ディスクとして使うのなら、Server以上のエディションを使う必要がある。

StarWindの動作環境は、Windows XPとWindows Server 2003なので、Windows Server 2003 Standard Edition R2上に構築する手順を紹介しよう。

StarWindのインストールは通常のアプリケーションと同様なので解説の必要はないだろう。インストールしたStarWindを起動し、localhostに接続する。デフォルトパスワードはIDと同じ「test」だ。
接続したら、Add deviceでiSCSIディスクを作成する。サポートされる形式は色々あるが、イメージ ファイルを使うのが一番お手軽だ。
イメージファイルの場所とサイズを指定し、クラスタ用の複数接続を有効にすれば共有ディスクとして使用することが出来る。

子パーティションとしてStarWindでiSCSI環境を作成すると、Hyper-Vの中だけでMSFCの動作確認をすることが可能だ。子パーティションにHyper-Vをインストールすることが出来ないので、Hyper-VサーバのMSFCのテストできないが、ファイルサーバ等のMSFCであれば動作を確認することが可能だ。

localhostに接続

デフォルトパスワードはユーザ名と同じ

Add deviceでiSCSIディスクを作成

イメージファイルがお手軽

イメージの作成

イメージの作成先を選択

フォルダを指定し、でイメージ名(.img)を指定

サイズを指定

共有ディスクにするため複数接続を許可

ターゲット名を指定

StarWindはお手軽ではあるが、試用期間の制限があるので、ランニングテストをするには購入をする必要があるのが悩ましい。パフォーマンスがもっと出れば購入しても良いのだが、筆者の環境ではiSCSIのスループットがあまり出なかった。
2009/5からTechNet/MSDN サブスクリプションで、Windows Storage Server 2008(WSS08)が提供されるようになった。ランニングテストをするのであれば、WSS08でiSCSIターゲットを作るのが良いだろう。WSS08の構築については本書では割愛させて頂く。

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.