「Windows Server 2008 実践ガイド」でカットした原稿です
付録:RocketEivision StarWind(3.5.4)でiSCSI
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を構築するにはドメイン環境が必須となっている。
サーバOS
MSFCは、Windows Server 2008 Enterprise と Datacenter
の2エディションのみだ。ドメインコントローラはStandardでも構わないが、MSFCのメンバーサーバにはEnterpriseかDatacenterのいずれかを使う必要がある。
同一ハードウェア構成
MSFCを構成するメンバーサーバは、ほぼ同じ構成のハードウェア構成である必要がある。
共有ディスク
Windows Server 2008のMSFCがサポートする共有ディスクインターフェイスは、SASとSAN(iSCSI/ファイバーチャネル)のみだ。
レガシ―SCSIやSATAはサポートされていない。
NIC
MSFC自体は1NICで構築できるが、iSCSIを使う場合には専用のNICが必要だ。更にHyper-Vは子パーティション専用NICを使うのが推奨されている。
本書では、iSCSIを共有ディスクとしたHyper-VサーバのMSFCを構成するので、クラスタメンバーサーバは3NIC搭載にしている。
クラスタ用IPアドレスとホスト名
MSFCは、1台の仮想サーバとして稼働するので、仮想サーバ用のIPアドレスとホスト名が必要だ。本書ではHyper-Vをクラスタ構成にしているので、フェールオーバー サーバだけがホスト名とIPアドレスを消費するが、ファイルサーバ等のサービスをクラスタ構成にする場合は、サービスごとに仮想サーバが作られるので、仮想サーバごとのIPアドレスとホスト名が必要だ。
本書で構築するMSFCの環境は以下の通りだ
Hyper-Vのフェイルオーバー クラスタ環境
fc-hv01(クラスタ メンバー)
fc-hv02(クラスタ メンバー)
fc-hv00(MSFC仮想サーバ)
共有ディスク
|
Windows Server 2008のMSFCには共有するデータディスクの他に「クォーラムディスク」と呼ばれる、クラスタメンバー間で共有する管理用ディスクが必要だ。本書ではクォーラムディスク用に1GBのディスクをiSCSI上に構築している。
それでは、MSFCを構築しよう。まずはクラスタメンバーとなるノードサーバの構築だ。
OSをインストールしたら、ドメインに参加する前に各NICを設定する。
Main
管理通信用のNICなので、IPアドレス/サブネットマスク、デフォルトゲートウェイ、DNSを設定する。
SAN
iSCSI専用のNICなので、IPアドレス/サブネットマスクの設定だけで構わない。本書で使用したiSCSIはIPv4のみのサポートなので、IPv6はオフにしている。
Server
子パーティション通信が使用するNICなので、全プロトコルをOFFにする
子パーティション用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は構成できるが、指摘点が解消できるものであれば解消するに越したことは無い。いずれの場合もレポートが出力されるので、レポートを見ればいいようになっている。
[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サーバで見ると子パーティションが稼働している
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全体をシャットダウンする場合は、まずクラスタ機能をシャットダウンし、各クラスタ メンバーサーバをシャットダウンする。
その他のアクション
クラスタのシャットダウン
子パーティションそのものでシャットダウンしても、フェイルオーバー クラスタが再起動してしまうので、子パーティションのシャットダウンは、フェイルオーバー クラスタのShut Downを使ってシャットダウンする必要がある。
子パーティションのシャットダウン
クラスタ登録した子パーティションを削除するには、サービスとアプリケーションで登録した子パーティションを削除する。削除すると仮想マシンも削除されるので、必要であれば削除前にインポートしておくと良いだろう。
子パーティションの削除
MSFCメンバであるノードを追加する時であってもフェイルオーバー クラスタの停止は不要だ。フェイルオーバー クラスタそのものを解除するときには、ノードを全て削除し、最後のノードで「クラスタの破壊」をする。
ノード削除
クラスタの解除
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の構築については本書では割愛させて頂く。
Copyright © MURA All rights reserved.