Windows Server 2008 または Windows Server 2008 R2 上で IIS (WWW サービスと FTP サービス) をクラスタリング構成する方法について


はじめまして。
日本マイクロソフト、デベロッパー サポート DSI の澤田です。

今回は、お問い合わせの多い、IIS (WWW サービスと FTP サービス) のクラスタリング (フェールオーバークラスタリング) についてお知らせしたいと思います。これから Windows Server上で IIS のクラスター環境の構築をされる方、あるいは、既にクラスター環境で IIS を使用し、フェールーオーバーする障害が発生している方は、是非そのまま最後まで目を通してください。

Windows Server 2008 または Windows Server 2008 R2 上で IIS をクラスタリングするための技術文書

Windows Server 2008 または Windows Server 2008 R2 上では IIS のクラスタリングがサポートされています。環境構築手順は以下の技術文書にあります。

文書番号: 970759
タイトル: Microsoft Windows Server 2008 フェールオーバー クラスターで IIS 7.0 World Wide Web 発行サービスを構成する
http://support.microsoft.com/kb/970759/ja-jp

文書番号: 974603
タイトル: Windows Server 2008 フェールオーバー クラスターで FTP 7.5 を構成する方法
http://support.microsoft.com/kb/974603/ja-jp

また、以下の修正プログラムの適用を強くお勧めします。

// Windows Server 2008 環境の場合
文書番号: 2163398
タイトル: A memory leak occurs in the Rhs.exe process when you configure IIS 7.0 World Wide Web Publishing Service in a Windows Server 2008 failover cluster
http://support.microsoft.com/kb/2163398/en-us

// Windows Server 2008 R2 SP1 環境の場合
文書番号: 2618982 
タイトル: FIX: Memory leak in Rhs.exe after you configure the IIS 7.5 W3SVC service in a Windows Server 2008 R2 SP1 failover cluster
http://support.microsoft.com/kb/2618982/en-us

Windows Server での IIS のクラスタリングとは

技術文書には、IIS をクラスタリングする際の環境構築手順として、大きく以下の 2 つの要素があります。

  •  共有構成を有効化し、オフライン ファイル機能を有効する。
  •  汎用スクリプト リソースをクラスター リソースとして追加する。

しかし、クラスターの仮想サーバー名を利用して IIS にアクセスするためには、実は、このどちらの設定も不要です。IIS 7.x および FTP 7.x 以後の IIS では、クラスター固有の機能は提供していません。つまり、クラスター環境で動作しているかどうかに IIS は関与しないのです。各要素の目的は以下の通りです。

共有構成を有効化し、オフライン ファイル機能を有効する。

クラスター環境を始めとする負荷分散をしている IIS は全てのノードを同じ構成にして利用することが推奨されます。IIS の構成情報は既定で %systemdrive%\system32\inetsrv\config フォルダ以下の applicationHost.config に保存されており、各ノードがローカルに構成情報を保持することになります。各ノードで構成情報を容易に統一する方法として、共有構成の機能があります。

これにより、IIS の構成情報である applicationHost.config は 1 つの共有フォルダ上で一元管理されるようになります。サーバー管理者は、どれか 1 台の Web サーバーまたは FTP サーバーで、インターネット インフォメーション サービス マネージャーや appcmd.exe を使用して IIS の構成を変更すると、全てのノードで自動的にその変更が反映されます。

汎用スクリプト リソースをクラスター リソースとして追加する。

IIS はクラスター環境で動作しているかどうかは関与しないため、それらにおいて障害が発生しても自動的に別のノードにフェール オーバーすることはありません。

IIS において障害が発生した時に、自動的に別のノードにフェール オーバーさせる機能は、クラスターの汎用スクリプト リソースによって実現しています。技術文書にあるサンプルのスクリプトでは、Web サイトやアプリケーション プールが開始状態にあるかどうか、また、FTP サービスが “RUNNING” の状態にあるかどうかをチェックしています。

このスクリプトをクラスターの汎用スクリプト リソースに登録することにより、クラスターの機能にて定期的に IsAlive/LooksAlive メソッドが呼ばれ、各メソッド内で実装している Web サイト、アプリケーション プール、または、FTP サービスの状態をチェックする処理が行われます。

クラスタリング環境でのフェールオーバーの原因

技術文書にあるサンプル スクリプトを利用した場合、Web サイトやアプリケーション プールが開始状態にない、または、FTP サービスが “RUNNING” の状態にないと、「障害」が発生したと検知され、フェールオーバーします。

例えば、ワーカープロセスが短期間に異常終了を繰り返し、ラピッドフェール保護機能が働いてアプリケーション プールが停止した場合や CPU 監視機能を有効化しており、設定した期間内、ワーカープロセスがCPU を占有したために、CPU 監視機能が働いてアプリケーション プールが停止した場合などは、汎用スクリプト リソースに登録したスクリプトによって「障害」が検知されフェールオーバーします。このような場合は、一般的に、ラピッドフェール保護機能が働いたことや CPU 監視機能が働いたことがイベント ログから確認できます。

また、W3SVC サービスや FTPSVC サービスが停止した場合も、同様に、汎用スクリプト リソースに登録したスクリプトによって「障害」が検知されフェールオーバーします。

しかし、このような機能によりアプリケーション プールが停止したことや、あるいは、W3SVC サービス、 FTPSVC サービスが停止したことをイベント ログから確認することができず、代わりに、以下のようなエラーが記録され、その直後にフェールオーバーしている場合があります。また、フェールオーバーのタイミングで以下のようなエラーが記録され、フェールオーバーが繰り返される (フェールバックする) 場合もあります。

上記イベントは、共有構成を有効にしている IIS および FTP が共有フォルダ上にある構成情報 applicationHost.config を読み取れなかったことを意味します。これは、多くの場合、IIS の構成情報を配置している共有フォルダを、同じクラスター環境上にあるクラスター ディスクに作成している場合に発生します。以下に主な理由と対策を説明します。

理由: 共有フォルダに対して、オフライン ファイルの機能を有効化していない。

共有フォルダがあるクラスター ディスクを保持するクラスター リソースがフェールオーバーするタイミングで、一時的に共有フォルダへのアクセスができない状態が発生します。この時、オフライン ファイルの機能を有効化していないと、Windows Process Activation サービス (以下 WAS) や FTP サービスは構成情報を読み取ることができず、サービスを開始することはできません。

対策: 共有構成を有効にする場合は、必ず、オフライン ファイルの機能を有効にする必要があります。

理由:構成情報を配置している共有フォルダがあるクラスター ディスクが自身のノードで Active になるタイミングとそのサーバーの WAS や FTP の起動タイミングが重複している。

共有フォルダがあるクラスター ディスクのディスク リソースと WAS や FTP のサービスには依存関係はありません。例えば、全てのクラスター ノードの OS がシャットダウンしている状態で、ある単一のクラスター ノードの OS を起動することを想定します。この時、ディスク リソースのオンライン化より WAS や FTP のサービス開始の方が先に行われる可能性があり、このタイミングでは共有フォルダへのアクセスができません。

この場合、オフライン ファイルの機能を有効にしていても、共有フォルダ \\FileServer\ConfigShare のディスクはローカル ディスクであるため、オフライン ファイルが利用されることがありません。

対策: 構成情報を配置している共有フォルダを同じクラスター環境上のクラスター ディスクではなく、スタンドアロン サーバーや、別のクラスター環境上のクラスター ディスクに配置します。これにより、WAS や FTP サービスが構成情報を読み取るタイミングで、確実に共有フォルダへのアクセスができる、または、アクセスできなくてもオフライン ファイルが利用できるようになります。構成情報を配置している共有フォルダを同じクラスター環境上のクラスター ディスクに配置する場合は、クラスター ディスクのディスク リソースがオンラインになってから、WAS や FTP のサービスを再起動します。

Windows Server 2012 でのクラスタリングのサポート・環境構築の変更点について

Windows Server 2012 上で IIS 8.0 および FTP 8.0 のクラスタリング構成はサポートされます。
*ただし、Microsoft では高可用性を目的とした Web サーバー、FTP サーバー環境は Microsoft Failover Cluster (MSFC) を利用するのではなく、Network Load Balancing (NLB) を利用することを推奨しています。

 Windows Server 2012 上で IIS をクラスタリング構成する手順は上述の技術文書から以下の 2 点が変更されています。

  •  オフライン ファイルの有効化
  •  フェールオーバー クラスター マネージャーでのリソースの追加

オフライン ファイルの有効化

オフライン ファイルを利用するためには、デスクトップ エクスペリエンスをインストールする必要があります。Windows Server 2012 ではサーバー マネージャーの [機能] - [ユーザー インターフェイスとインフラストラクチャー] を展開すると、デスクトップ エクスペリエンスがあります。

 

Windows Server 2012 ではオフライン ファイルと同期センターが統合されています。デスクトップ エクスペリエンスをインストール後、コントロール パネルからオフライン ファイルを有効化するためには、同期センターを開き、左ペインのオフライン ファイルの管理リンクをクリックします。

 

フェールオーバー クラスター マネージャーでのリソースの追加

Windows Server で IIS をクラスタリング構成する際は、技術文書のサンプルのような Web サイト、アプリケーション プール、FTP サービスの状態を監視するスクリプト (clusweb7.vbs や clusftp7.vbs) を汎用スクリプト リソースとして追加します。
*汎用サービスと間違い易いので注意してください。汎用サービスに W3SVC サービスや FTP サービスを登録することはサポートされていません

Windows Server 2012 ではフェールオーバー クラスター マネージャーのユーザー インターフェイスが変更されています。汎用スクリプト リソースを追加する時は、フェールオーバー クラスター マネージャーを起動し、[ロール] を右クリックして、[ロールの構成] メニューを選択します。

 


それでは、またの機会に。

 

Skip to main content