Open棟梁Project - マイクロソフト系技術情報 Wiki

* 目次 [#r0998a59]
#contents

*前提知識 [#a7bd928c]
-[[NLB]]
-[[MSCS/WSFC]]

*NLBとMSCS/WSFCの同居 [#me2ea6a1]

**要件 [#i823a1cf]
IISと
-ファイル・サーバ(以下FS)
-プリンタ・サーバ(以下PS)
-SQL Server
-JP1

を筐体の数を抑えるため、

>これらを1つの筐体に詰めてクラスタ化したい場合にこの要件が上がる。

**実現可能性 [#dd6eb709]
できません(実現不可能)。

MSCS と NLB の相互運用性~
-MSCS と NLB の相互運用性~
http://support.microsoft.com/kb/235305/ja~

>クラスタ サービスとネットワーク負荷分散の両方をインストールしたコンピュータを~
サポートする必要がある場合、いずれか一方のコンポーネントを削除する必要があります。

>これらのコンポーネントのいずれかをアンインストールするには、以下のうち適切な方法を実行します。

--クラスタ サービスを実行する必要があるコンピュータ~
コンピュータがサーバー クラスタでクラスタ サービスを実行する必要がある場合、~
[ネットワークとダイヤルアップ接続] ツールから NLB を削除します。 

--NLB を実行する必要があるコンピュータ~
コンピュータで NLB を実行する必要がある場合、クラスタ サービスを削除します。

*L7負荷分散 [#u97da140]
この問題をクリアするために、L7負荷分散を実現する

>Application Request Routing (ARR)という

モジュールがIIS7.0から導入されているようです。

高い可用性とスケーラビリティの実現 - ARR および NLB~
http://technet.microsoft.com/ja-jp/library/ee886284.aspx

>ARR では、コンテンツ サーバーに対して~
高い可用性とスケーラビリティを提供していますが、~
展開全体の可用性とスケーラビリティは高くありません。

>これには、次の理由があります。
--ARR は単一障害点である。 
--コンテンツ サーバーのスケーラビリティが、~
単一の ARR サーバーの最大容量によって制限されている。 

>上記の課題を克服するために、管理者はNLBと組み合わせた~
複数の ARR サーバーの使用を検討することができます。

>ARR は、
--アクティブ/パッシブ モードで展開して、高可用性のみ実現できます。
--または、アクティブ/アクティブ モードで展開して、~
高い可用性とスケーラビリティの両方を実現できます。

>このホワイトペーパーでは、ARR と NLB を一緒に展開して、
--ARR のコア シナリオを有効にし、
--かつ、全体的に高い可用性とスケーラビリティを実現する

>方法について説明しています。

>NLB は、Windows Server 2008 のすべてのSKU(製品ラインアップ)で使用できます。

*IISをMSCS/WSFC環境上でクラスタ化 [#mb3cc61b]

**概要 [#v8af0a5e]
ステートレスなIISは、一般的にはNLBクラスタを選択するべきです。~

Webアプリケーションが
-セッション・ステートレスでない場合も、
-(セッション・ステートフルである場合)

Session状態を
-State Service Mode
-SQL Server Mode
-Custom Session Provider
--Oracle Providers for ASP.NET
---セッション状態プロバイダ
--.etc

に退避するようにする事で、NLBクラスタに対応させることができます。

ただし、NLBとMSCS/WSFCの同居ができないので、~

IISを負荷分散クラスタ化せず、~
フェイル・オーバー・クラスタ化する場合に限って、~
KB970759のスクリプトを使用してMSCS/WSFCクラスタ化します。

**問題点 [#n7156f5e]

***KB970759のスクリプトが標準で付属していない [#m2893d0a]
Windows Server 2008 R2 からはスクリプトが標準で付属しないようなので、~
以下のURL(KB970759)にあるスクリプトの内容を理解して、

>Microsoft Windows Server 2008 フェールオーバー クラスターで~
IIS 7.0 World Wide Web 発行サービスを構成する~
http://support.microsoft.com/kb/970759/ja

必要に応じて書き替えて構成・検証するしかなさそうです。~

Windows Server 2008 以降でクラスター化された IIS を作成 « SE の雑記~
http://engineermemo.wordpress.com/2011/05/15/windows-server-2008-%e4%bb%a5%e9%99%8d%e3%81%a7%e3%82%af%e3%83%a9%e3%82%b9%e3%82%bf%e3%83%bc%e5%8c%96%e3%81%95%e3%82%8c%e3%81%9f-iis-%e3%82%92%e4%bd%9c%e6%88%90/

-MSCS / WSFCクラスタとNLBクラスタは共存ができないため、~
MSCS / WSFCクラスタ環境で IIS を冗長化した構成で使う場合には、~
[汎用スクリプト] を登録してMSCS / WSFCクラスタ化された IIS を作成していました。

-2008 では 2003 で使用していたスクリプトが含まれてしまっているのですが、~
使用せずに以下の技術情報 (KB970759) のスクリプトを使用します。~
>2008 R2 では含まれなくなっています。

***KB970759のスクリプトの手修正が必要になる。 [#p2796e28]

-KB970759のスクリプトの内容を確認すると「既定のWebサイト」のみの対応なので、~
Active-Acitve構成に対応させようとした場合、スクリプトの手修正が必要になる。

-サポートはされるが、スクリプト側は自己責任になる。~
サポート問合せの時、+使用しているスクリプトの提供が必要になる。

***理解が不十分で運用中に問題となる可能性がある。 [#p12d526c]
以下の様な不具合が報告されています。

Windows Server TechCenter > Windows Server フォーラム >  Windows Server 2008 全般~
 >  Windows2008 IIS7.0のクラスタ(WSFC)環境で、新しく作成した仮想ディレクトリにアクセスするとHTTP 404エラーが表示される。~
http://social.technet.microsoft.com/Forums/ja/windowsserver2008ja/thread/2b8aa4b0-e8ac-49c0-a267-1a01d1f248f6

>http://support.microsoft.com/kb/970759
>>の情報を元に、IISをクラスタのリソースとして登録しました。セットアップは問題なく完了し、動作も良好でした。しかし、後からIISの仮想ディレクトリを作成したところ、作成は問題なく行えるのですが、クライアントからアクセスすると「サーバーエラー 404 ファイルまたはディレクトリが見つかりません」となってしまう場合があります。「場合」について切り分けができていません。ある日は問題なくアクセスできたのに、数日後は404エラーが表示される、といった具体で、一旦ダメになると、サーバを再起動するまでアクセスできないままになります。原因が分かりましたらご教示頂けますでしょうか。

*検証 [#nf69fef5]
*IISのMSCS/WSFCクラスタを検証 [#nf69fef5]

**懸念 [#tcbd7b38]

***(1)IISの設定情報は共有されるか? [#bee89e14]

-IISの設定情報はクラスタ・ノード間で共有されるか?
--IIS6:メタベース(MetaBase.xml)
--IIS7:applicationHost.config

-メタベースを共有ディスクに入れる必要があるか?

***(2)JITコンパイルは問題ないか? [#mb5e29c9]
KB970759の手順に共有構成をエクスポートして共有ディスクに入れる手順があるが、~
JITコンパイルで生成されるアセンブリなどが、何処にどう格納されるのか?~
など動き(のディティール)が良く解らない所がある。

>通常、JITコンパイルされるものは以下に格納される。~
%windir%\system32\inetsrv\ASP Compiled Templates

フェールオーバー後、
-正しくJITコンパイルしてくれるのか?
-若しくはプリコンパイルする必要があるのか?

***(3)仮想ディレクトリを共有ディスクに入れることができるか? [#xa02af3e]

-仮想ディレクトリを共有ディスクに入れる手順も書かれていない。

-仮想ディレクトリを共有ディスクに入れ~
仮想ディレクトリにプリコンパイルしたものを入れておけば良い?

-なお、仮想ディレクトリに、FSの共有フォルダを指定することは可能である模様。~
(実際は、クラスタ化されたFSの共有フォルダを指定する)

--UNC指定でもマウントしたフォルダでも可能の模様ですが、~
ユーザ・プロファイルの話が有るのでUNC指定が良いようです。

--アクセス許可設定だけは注意が必要、以下のいずれかを選択。
---フォルダのアクセス許可にコンピュータ・アカウントを足す。
---アプリケーション・プールのアカウントをADアカウントに変更する。

***(4)その他、スクリプトを使用しない方法 [#u5f0302d]
-FSを、クラスタ・アプリケーションに設定。
-IISは、クラスタ・アプリケーションに設定しない。

-この状態で、1つのクラスタ・グループのクラスタ・リソースに~

++フロントNIC×1と仮想IP×2(FS用とIIS用)のセットを~
追加して、フェイル・オーバー、フェイル・バックできるか?
++以下を追加して、フェイル・オーバー、フェイル・バックできるか?
---フロントNIC×1に仮想IP×1(IIS用)のセットを追加
---バックNIC×1に仮想IP×1(FS用)のセットを追加

-NICを監視することで障害時に対応する仮想IPを2号機へフェイル・オーバー。~
(なお、仮想IPは1つのNICに対して複数指定することもできる筈)

-後処理スクリプトで2号機のIISを起動~
(Stanby側のIISは通常時は停止しているため)
>これは、特定のIPをListeningする場合は、~
Listeningする仮想IPがフェイル・オーバーしないとIISが起動しないため。~
全てのIPをListeningする場合は、起動・停止の制御は不要であるものと思われる。

-IISやUP障害時(フリーズも含む)は切り替えできない。
>フロントNICのみを監視しているため。~
上記ではフェイル・オーバーのトリガにならない。

**結果 [#q6723d4c]

***(1)の検証結果 [#c5356aa4]
***(2)の検証結果 [#z268b8d6]
***(3)の検証結果 [#z3602110]
***(4)の検証結果 [#b14fb510]

-同じクラスタ・グループのクラスタ・リソースに、
++NIC×1に仮想IP×2を複数指定して追加できた。
++(NIC×1に仮想IP×1を指定して、)×2を追加できた。

--ただし、

---クラスタ・グループのクラスタ・リソースに追加したNICは、~
クラスタネット・ワーク通信を許可する必要がある。

---この場合、既定でクラスタ・アプリケーションでは双方のNIC、仮想IPが使用される。

--なお、IPアドレスは、DHCPでも、固定でも、可能だった。

-IISが、全てのIPをListeningする設定の場合は、netstatで見る限り~
IISは、TCP 0.0.0.0:80(0.0.0.0)でListeningしており、起動・停止の制御は不要。

-仮想ディレクトリに、FSの共有フォルダを指定することは可能だが、~
IIS→FSの共有フォルダへのアクセスには、以下の両方のアクセス権が必要。
--ノード2台のコンピュータ・アカウント(IISとFSがクロスした時用)
--IIS AppPool\DefaultAppPool(自IISから自FSへアクセスする時用)


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS