Windows Server フェールオーバー クラスターで IIS の FTP を構成する方法

適用対象: Windows Server 2012 FoundationInternet Information Services 10.0Internet Information Services 8.5 詳細

はじめに


この資料では、Windows Server フェールオーバー クラスターでインターネット インフォメーション サービス (IIS) 7.0 以降のバージョンの FTP を構成する方法について説明します。 この資料の手順は、FTP サービスにのみ適用されます。  

フェールオーバー クラスターで Web サービスを構成する方法の詳細については、以下のサポート技術情報番号をクリックしてください。
 
970759 Windows Server フェールオーバー クラスターで IIS World Wide Web 発行サービスを構成する
 

詳細


インターネット インフォメーション サービスの以前のバージョンでは、Microsoft クラスター インフラストラクチャを使用して、高可用性 Web サーバー インスタンスをサポートするための汎用のリソース モニター コンポーネントを提供していました。 しかし、このソリューションの可能性を完全に実現するにはカスタム コードが必要でした。 さらに、マイクロソフトが提供していた汎用のスクリプトはお客様のニーズを満たしていませんでした。 クラスター化された環境で Windows Server フェールオーバー クラスタリングを使用して IIS 7.0 以降のバージョンの FTP を構成するには、カスタム (スクリプト) コードを使用してそのような高可用性シナリオを実現する必要があります。 これを行うと、ユーザーは自社の要件を満たすように設定をカスタマイズできます。 これにより、可用性の高い Web アプリケーションの統合を完全に制御することができます。 さらに、FTP for IIS 7.0 で導入された管理と監視のためのスクリプト インターフェイスには、以前のバージョンで提供されていたスクリプトよりも高機能な環境が用意されています。

注: IIS 7.0 以降のバージョンのインストール ファイルには、IIS 6.0 の IIS クラスター管理タスクで使用される Clusweb.vbs および Clusftp.vbs スクリプト ファイルが誤って含まれています。 これらのスクリプトを IIS 7.0 以降のバージョンで使用しないでください。
 

次の手順を実行して、フェールオーバー クラスターを使用して IIS FTP サーバーの高可用性を構成します。

  1. すべてのクラスター ノードに Web サーバーの役割をインストールします。 Windows Server 2008 上にインストールする場合は、"FTP サーバー" の役割を含めないでください。 Windows Server 2008 R2 以降のバージョンにインストールする場合は、受信トレイの "FTP サーバー" の役割を含めてください。 IIS 7 展開ガイドについては、次の Web サイトを参照してください。 Windows Server 2008 上にインストールする場合は、次のいずれかの場所から FTP 7.5 をダウンロードしてインストールします。
  2. すべてのクラスター ノードにフェールオーバー クラスタリング機能をインストールしてクラスターを作成します。 詳細については、以下の Web サイトを参照してください。
  3. IIS 共有構成で使用されるファイル共有を設定します。
  4. すべてのクラスター ノード上で IIS 共有構成を構成します。
  5. すべてのクラスター ノード上で IIS 共有構成のオフライン ファイルを構成します。
  6. FTP サイトを構成し、1 つのクラスター ノードの上の FTP サイトのコンテンツの場所を指定します。
  7. フェールオーバー クラスタリング内に汎用スクリプトを作成することによって FTP サイトの高可用性を構成します。

IIS 共有構成で使用されるファイル共有を設定する

  1. IIS 共有構成のために使用される共有にアクセスするユーザーを作成します。
  2. ファイル共有を作成します。 この共有は、すべてのクラスター ノード上の IIS で共有される IIS 共有構成を格納するために使用されます。 次のようないくつかのオプションがあります。
     
    • フェールオーバー クラスターに含まれていないスタンドアロン サーバー上にファイル共有を作成します。
    • 別の Windows Server フェールオーバー クラスター上に高可用性のファイル共有を作成します。 詳細については、次のマイクロソフト Web サイトを参照してください。
    • 高可用性 FTP サイトをホストする同じフェールオーバー クラスター上に、高可用性のファイル共有を作成します。 詳細については、次のマイクロソフト Web サイトを参照してください。
  3. 手順 2. で作成した共有のアクセス許可を設定します。 手順 1. で作成したユーザーに、ファイル共有に対するフル コントロールのアクセス許可と NTFS アクセス許可を付与します。
  4. すべてのクラスター ノードがファイル共有を参照できることを確認します。 ファイル共有のパスは、\\<fileservername>\<sharename> です。

すべてのクラスター ノード上で IIS 共有構成を構成する

いずれかのクラスター ノードで、共有構成をファイル共有にエクスポートします。
 
  1. [管理ツール] に移動し、[インターネット インフォメーション サービス (IIS) マネージャー] を選択します。 
  2. 左側のウィンドウで、サーバー名のノードを選択します。
  3. [共有構成] アイコンをダブルクリックします。
  4. [共有構成] ページの [アクション] ウィンドウ (右側のウィンドウ) で、[構成のエクスポート] を選択し、ローカル コンピューターから別の場所に構成ファイルをエクスポートします。 
  5. [構成のエクスポート] ダイアログ ボックスで、[物理パス] ボックスにファイル共有のパス (\\<fileservername>\<sharename>) を入力します。
  6. [ユーザー名を指定して接続] を選択し、共有構成が保存されている共有にアクセスできるユーザー アカウントのユーザー名とパスワードを入力して、[OK] を選択します。  このアカウントは、共有にアクセスするために使用されます。 ドメイン管理者ではない制限された Active Directory アカウントを使用する必要があります。
  7. [構成のエクスポート] ダイアログ ボックスで、暗号化キーを保護するために使用するパスワードを入力し、[OK] を選択します。
  8. [共有構成] ページで、[共有構成の有効化] チェック ボックスをオンにします。
  9. 前に入力した物理パス、ユーザー アカウント、およびパスワードを入力し、[アクション] ウィンドウの [適用] を選択します。
  10. [暗号化キー パスワード] ダイアログ ボックスで、前に設定した暗号化キーのパスワードを入力し、[OK] を選択します。
  11. [共有構成] ダイアログ ボックスで [OK] を選択します。
  12. [OK] を選択します。 
他の各クラスター ノード上で、ファイル共有にエクスポートした共有構成を使用します。
 
  1. [管理ツール] に移動し、[インターネット インフォメーション サービス (IIS) マネージャー] を選択します。
  2. サーバー名のノードを選択します。
  3. [共有構成] アイコンをダブルクリックします。 
  4. [共有構成] ページで、[共有構成の有効化] チェック ボックスをオンにします。
  5. 前に入力したファイル共有の物理パス (\\<fileservername>\<sharename>)、ユーザー アカウント、およびパスワードを入力し、[アクション] ウィンドウの [適用] を選択します。
  6. [暗号化キー パスワード] ダイアログ ボックスで、前に設定した暗号化キーのパスワードを入力し、[OK] を選択します。
  7. [共有構成] ダイアログ ボックスで [OK] を選択します。
  8. [OK] を選択します。
注: IIS での共有構成の設定方法については、以下のマイクロソフト Web サイトを参照してください。

すべてのクラスター ノード上で IIS 共有構成のオフライン ファイルを構成する

各クラスター ノード上でオフライン ファイルを有効にします。
 
  1. デスクトップ エクスペリエンス機能をインストールします。 それには、以下の手順を実行します。
     
    1. [管理ツール] に移動し、[サーバー マネージャー] を選択します。
    2. 左側のウィンドウで [機能] を選択します。
    3. 右側のウィンドウで [機能の追加] を選択します。
    4. 使用している Windows バージョンに応じて、次のいずれかを実行します。
    • Windows Server 2016 の場合は、Microsoft Docs Web サイトの「デスクトップ エクスペリエンス搭載サーバーのインストール」トピックを参照します。 
    • Windows Server 2012 および 2012 R2 の場合は、機能一覧の [ユーザー インターフェイスとインフラストラクチャ] で [デスクトップ エクスペリエンス] を選択します
    • Windows Server 2008 および 2008 R2 の場合は、[デスクトップ エクスペリエンス] を選択します。
    1. [インストール] を選択して、デスクトップ エクスペリエンスをインストールします。
    2. コンピューターを再起動します。
  2. 以下のいずれかの手順を実行します。
    • Windows Server 2012、2012 R2、および 2016 の場合は、[コントロール パネル] で [同期センター] を選択し、[オフライン ファイルの管理] を選択します。 
    • Windows Server 2008 および 2008 R2 の場合は、[コントロール パネル] の [オフライン ファイル] を選択します。
  3. [オフライン ファイルの有効化] を選択します。 この時点ではコンピューターを再起動しないでください。
  4. キャッシュが読み取り専用に設定されていることを確認します。 このためには、管理者特権を持つコマンド プロンプトで次のコマンドを実行します。
    REG ADD "HKLM\System\CurrentControlSet\Services\CSC\Parameters" /v ReadOnlyCache /t REG_DWORD /d 1 /f 
  5. コンピューターを再起動します。
  6. コンピューターからファイル サーバーを参照します。 IIS 共有構成が含まれる共有を右クリックして、[常にオフラインで使用する] を選択します。

    注: IIS ノードをホストしている同じフェールオーバー クラスター上で高可用性を実現するためにファイル共有を設定する場合、操作しているクラスター ノードが高可用性ファイル サーバーをホストしていると、共有を右クリックしたときに [常にオフラインで使用する] オプションが表示されません。 高可用性ファイル サーバー アプリケーションを別のノードに移動する必要があります。
  7. コントロール パネルで、[オフライン ファイル] を開きます。 [同期センターを開く] を選択し、[スケジュール] を選択します。
  8. 毎日または必要な間隔で実行されるようにオフライン ファイルの同期をスケジュールします。 数分ごとに実行されるようにオフライン同期を構成することもできます。 スケジューラを設定しない場合でも、Applicationhost.config ファイルの内容を変更すると、その変更が Web サーバーに反映されます。
注: IIS での共有構成のオフライン ファイルの構成方法については、次のマイクロソフト Web サイトを参照してください。

FTP サイトを構成し、1 つのクラスター ノードの上の FTP サイトのコンテンツの場所を指定する

FTP サイトのコンテンツ ファイルが置かれるクラスター ディスク リソースを所有しているクラスター ノードを見つけます。
 
  1. [管理ツール] に移動し、[フェールオーバー クラスター マネージャー] を選択します。 
  2. クラスターに接続します。 いずれかのクラスター ノード上で操作している場合は、そのクラスターが自動的に一覧に表示されます。
  3. [記憶域] の下で、FTP サイトのコンテンツが置かれるディスクス リソースを見つけます。 これを行うには、ディスク リソースの記憶域ツリーを展開します。 クラスター上の他の高可用性アプリケーションによってその記憶域が使用されていないことを確認します。 この記憶域は [使用可能記憶域] の下に表示されます。
  4. このオンラインになっているリソースが置かれているクラスター ノードをメモします。 そのクラスター ノード上で IIS を構成します。
  5. クラスター ディスク リソース名をメモします。 このリソースを使用してコンテンツ ファイルを格納します。
オンラインになっているこのリソースが置かれているクラスター ノード上で、FTP サイト コンテンツの共有ディスクを使用するように FTP サーバーを構成します。
 
  1. [管理ツール] に移動し、[インターネット インフォメーション サービス (IIS) マネージャー] を選択します。
  2. 左側のウィンドウで、サーバー名のノードを展開します。
  3. [サイト] を展開し、[サイト] を右クリックして、[FTP サイトの追加] を選択します。 
  4. [FTP サイトの追加] ダイアログ ボックスで、サイト名を入力します。 コンテンツ ディレクトリに対して、FTP サイトのコンテンツが置かれている場所を入力します。 これは、前の手順の手順 5. でメモしたクラスター ディスク リソースの場所です。
  5. 残りの FTP サイトの設定を構成します。
  6. [完了] を選択します。

フェールオーバー クラスター マネージャーで汎用スクリプトを作成することによって FTP サイトの高可用性を構成する

FTP サイトの高可用性を構成するための最後の手順として、FTP サービスを監視するために使用する汎用スクリプト リソースを作成します。
 
  1. 各クラスター ノード上で、この資料の最後にあるスクリプトを Windows\System32\inetsrv\Clusftp7.vbs にコピーします。
  2. [管理ツール] に移動し、[フェールオーバー クラスター マネージャー] を選択します。
  3. クラスターに接続します。 いずれかのクラスター ノード上で操作している場合は、そのクラスターが自動的に一覧に表示されます。
  4. 以下のいずれかの手順を実行します。
    • Windows Server 2012、2012 R2、および 2016 の場合は、[役割] を右クリックし、[役割の構成] を選択して作成します。 
    • Windows Server 2008 および 2008 R2 の場合は、クラスターを右クリックし、[サービスまたはアプリケーションの構成] を選択します。 ウィザードによって高可用性ワークロードが作成されます。
  5. [汎用スクリプト] をクリックします。
  6. 次のパスからスクリプト ファイルを選択します。
    %systemroot%\System32\Inetsrv\Clusftp7.vbs
  7. クライアント アクセス ポイント (CAP) 名を、クライアントが高可用性 FTP サイトに接続するために使用する FTP サイト名に設定します。 FTP サイトの CAP で使用する静的 IP を指定します。 DHCP (Dynamic Host Configuration Protocol) を使用している場合、このオプションは表示されません。
  8. [記憶域の選択] の手順で、FTP サイトのコンテンツ ファイルが置かれるクラスター共有ディスクを選択します。 クラスター上の他の高可用性アプリケーションによって使用されていない記憶域を選択する必要があります。 IIS 共有構成によって使用されているファイル共有が同じクラスター上でホストされている場合、ここでは別のディスク リソースを使用する必要があります。
  9. 設定を確認した後で、ウィザードによってクラスター グループ、クラスター リソース、およびリソース間の依存関係が作成され、その後でリソースがオンラインになります。
注: 同じフェールオーバー クラスター上で複数の高可用性 FTP サイトをホストするには、上記と同じ手順を実行します。 スクリプトをカスタマイズしていない場合は、クラスター上のすべての FTP サイトについて同じスクリプト ファイルを指定できます。 しかし、個別の FTP サイトに固有な変更を加えた場合は、各 FTP サイトについて異なるスクリプト ファイルと異なるクラスター化された共有記憶域を使用します。 たとえば、%systemroot%\System32\Inetsrv 内で、最初の FTP サイト用に Clusftp7.vbs を、2 番目の FTP サイト用に Clftp7-2.vbs を、3 番目の FTP サイト用に Clftp7-3.vbs を使用し、以下同様にします。 各スクリプト ファイルは異なる FTP サイトを監視ます。

重要: 次のスクリプトは、サンプルの目的でのみ提供されており、マイクロソフトは明示的にサポートしていません。 IIS 7.0、IIS 7.5、または IIS 8.0 の FTP クラスター環境でこのスクリプトを使用する場合は、自己責任で行ってください。
'<begin script sample>'This script provides high availability for IIS FTP websites'The script is applicable to:'   - Windows Server 2008: Microsoft FTP Service 7.5 for IIS 7.0 (available for download from microsoft.com)'   - Windows Server 2008 R2 or a later version: FTP Service in the box'More thorough and application-specific health monitoring logic can be added to the script if neededOption Explicit'Helper script functions'Start the FTP service on this nodeFunction StartFTPSVC()    Dim objWmiProvider    Dim objService    Dim strServiceState    Dim response    'Check to see if the service is running    set objWmiProvider = GetObject("winmgmts:/root/cimv2")    set objService = objWmiProvider.get("win32_service='ftpsvc'")    strServiceState = objService.state    If ucase(strServiceState) = "RUNNING" Then        StartFTPSVC = True    Else        'If the service is not running, try to start it        response = objService.StartService()        'response = 0  or 10 indicates that the request to start was accepted        If ( response <> 0 ) and ( response <> 10 ) Then            StartFTPSVC = False        Else            StartFTPSVC = True        End If    End If    End Function'Cluster resource entry points. More details here:'http://msdn.microsoft.com/ja-jp/library/aa372846(VS.85).aspx'Cluster resource Online entry point'Make sure the FTP service is startedFunction Online( )    Dim bOnline    'Make sure FTP service is started    bOnline = StartFTPSVC()    If bOnline <> True Then        Resource.LogInformation "The resource failed to come online because ftpsvc could not be started."        Online = False        Exit Function    End If    Online = true End Function 'Cluster resource offline entry point'On offline, do nothing.Function Offline( )    Offline = trueEnd Function'Cluster resource LooksAlive entry point'Check for the state of the FTP serviceFunction LooksAlive( )    Dim objWmiProvider    Dim objService    Dim strServiceState     set objWmiProvider = GetObject("winmgmts:/root/cimv2")    set objService = objWmiProvider.get("win32_service='ftpsvc'")    strServiceState = objService.state    if ucase(strServiceState) = "RUNNING" ThenLooksAlive = True    ElseLooksAlive = False    End IfEnd Function'Cluster resource IsAlive entry point'Do the same health checks as LooksAlive'If a more thorough than what we do in LooksAlive is required, this should be performed hereFunction IsAlive()       IsAlive = LooksAliveEnd Function'Cluster resource Open entry pointFunction Open()    Open = trueEnd Function'Cluster resource Close entry pointFunction Close()    Close = trueEnd Function'Cluster resource Terminate entry pointFunction Terminate()    Terminate = trueEnd Function