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

この記事では、Windows Server フェールオーバー クラスターで FTP for Internet Information Services (IIS) 8.0 以降のバージョンを構成する方法について説明します。 この記事の手順は、FTP サービスにのみ適用されます。

注意

フェールオーバー クラスターで Web サービスを構成する方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

970759 Windows Server フェールオーバー クラスターでの IIS World Wide Web 発行サービスの構成

適用対象:   Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
元の KB 番号:   974603

フェールオーバー クラスタリングを使用して IIS FTP サーバーの高可用性を構成する

  1. すべてのクラスター ノードに Web サーバー ロールをインストールします。 Windows Server 2012にインストールする場合は、"FTP サーバー" ロールを含めないでください。 Windows Server 2012 R2 以降のバージョンにインストールする場合は、ボックス内の "FTP サーバー" ロールを含めます。 IIS 8 展開ガイドの詳細については、次の Web サイトを参照してください: IIS Manager (IIS 8) を開く

  2. フェールオーバー クラスタリング機能をすべてのクラスター ノードにインストールし、クラスターを作成します。 詳細については、次の Web サイトを参照 してください。

  3. IIS 共有構成に使用するファイル共有を設定します。

  4. すべてのクラスター ノードで IIS 共有構成を構成します。

  5. すべてのクラスター ノードで、IIS 共有構成用のオフライン ファイルを構成します。

  6. FTP サイトを構成し、そのコンテンツの場所を 1 つのクラスター ノードに指定します。

  7. フェールオーバー クラスタリングで汎用スクリプトを作成して、FTP サイトの高可用性を構成します。

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

  1. IIS 共有構成に使用される共有にアクセスするユーザーを作成します。

  2. ファイル共有を作成します。 この共有は、すべてのクラスター ノードで IIS 間で共有される IIS 共有構成を格納するために使用されます。 複数のオプションがあります。

  3. 手順 2. で作成した共有に対するアクセス許可を設定します。 手順 1 で作成したユーザーに、ファイル共有に対するフル コントロールアクセス許可と NTFS アクセス許可を付与します。

  4. すべてのクラスター ノードがファイル共有を参照できることを確認します。 ファイル共有のパスは \\<fileservername>\<sharename>.

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

クラスター ノードの 1 つで、共有構成をファイル共有にエクスポートします。

  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 で共有構成を設定する方法の詳細については、次の Microsoft Web サイトの「共有構成」を参照してください

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

各クラスター ノードで、オフライン ファイルを有効にします。

  1. デスクトップ エクスペリエンス機能をインストールします。 これを行うには、次の手順を実行します。

    1. [管理ツール] に移動し、サーバー マネージャー を選択します。
    2. 左側のウィンドウで、[ 機能] を選択します。
    3. 右側のウィンドウで [機能の追加] を選択します。
    4. Windows バージョンに応じて、次のいずれかの操作を行います。
  2. 次の手順を実行してください。
    Windows Server 2012、2012 R2、2016 の場合は、コントロール パネルで [同期センター] を選択し、[オフライン ファイルの管理] を選択します。

  3. [ オフライン ファイルを有効にする] を選択します。 この時点でコンピューターを再起動しないでください。

  4. キャッシュが読み取り専用に設定されていることを確認します。 これを行うには、管理者特権の cmd プロンプトで次のコマンドを実行します。

    REG ADD "HKLM\System\CurrentControlSet\Services\CSC\Parameters" /v ReadOnlyCache /t REG_DWORD /d 1 /f
    
  5. コンピューターを再起動します。

  6. コンピューターからファイル サーバーに移動します。 IIS 共有構成を含む共有を右クリックし、 Always Available Offline を選択します。

    注意

    IIS ノードをホストするのと同じフェールオーバー クラスターでファイル共有を高可用性に設定した場合、可用性の高いファイル サーバーをホストしているクラスター ノードの場合、共有を右クリックしても [Always Available Offline ] オプションは表示されません。 高可用性ファイル サーバー アプリケーションを別のノードに移動する必要があります。

  7. コントロール パネルで、オフライン ファイルを開きます。 [ 同期センターを開く] を選択し、[ スケジュール] を選択します。

  8. 毎日または要件に従ってオフライン ファイル同期をスケジュールします。 数分おきに実行するようにオフライン同期を構成することもできます。 スケジューラを設定していない場合でも、Applicationhost.config ファイル内の何かを変更すると、Web サーバーに変更が反映されます。

注意

IIS で共有構成用にオフライン ファイルを構成する方法の詳細については、「共有構成 用のオフライン ファイル」を参照してください。

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

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 の場合は、[ロール] を右クリックし、[ロールの構成] を選択して作成します。
  5. [ 汎用スクリプト] をクリックします。
  6. 次のパスからスクリプト ファイルを選択します。
    %systemroot%\System32\Inetsrv\Clusftp7.vbs
  7. クライアント アクセス ポイント (CAP) 名を、クライアントが高可用性 FTP サイトへの接続に使用する FTP サイト名に設定します。 FTP サイト CAP に使用する静的 IP を指定します。 動的ホスト構成プロトコル (DHCP) を使用している場合、このオプションは表示されません。
  8. [ストレージの選択] ステップで、FTP サイト コンテンツ ファイルが存在するクラスター共有ディスクを選択します。 クラスター上の他の高可用性アプリケーションでは、ストレージを使用しないでください。 IIS 共有構成に使用されるファイル共有が同じクラスターでホストされている場合は、ここで別のディスク リソースを使用する必要があります。
  9. 設定を確認すると、ウィザードによってクラスター グループ、クラスター リソース、およびリソース間の依存関係が作成され、リソースがオンラインになります。

注意

同じフェールオーバー クラスターで複数の高可用性 FTP サイトをホストするには、前述の手順と同じ手順に従います。 スクリプトをカスタマイズしなかった場合は、クラスター上のすべての FTP サイトに対して同じスクリプト ファイルをポイントできます。 ただし、個々の FTP サイトに固有の変更を行う場合は、FTP サイトごとに異なるスクリプト ファイルと異なるクラスター化された共有ストレージを使用します。 たとえば、最初の FTP サイトでは %systemroot%\System32\Inetsrv, useClusftp7.vbs 、2 番目の場合は Clftp7-2.vbs、3 番目の場合は Clftp7-3.vbs などです。 各スクリプト ファイルは、異なる FTP サイトを監視します。

重要

次のスクリプトはサンプルのみを目的としており、Microsoft では明示的にサポートされていません。 IIS 8.0 FTP クラスター環境でのこのスクリプトの使用は、自己責任で行われます。


'<begin script sample>

'This script provides high availability for IIS FTP websites
'The script is applicable to:
'   - Windows Server 2012: Microsoft FTP Service 7.5 for IIS 8.0 (available for download from microsoft.com)
'   - Windows Server 2012 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 needed


Option Explicit



'Helper script functions


'Start the FTP service on this node
Function 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/en-us/library/aa372846(VS.85).aspx

'Cluster resource Online entry point
'Make sure the FTP service is started
Function 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 = true

End Function


'Cluster resource LooksAlive entry point
'Check for the state of the FTP service
Function 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" Then
LooksAlive = True
    Else
LooksAlive = False
    End If

End 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 here
Function IsAlive()

    IsAlive = LooksAlive

End Function


'Cluster resource Open entry point
Function Open()

    Open = true

End Function


'Cluster resource Close entry point
Function Close()

    Close = true

End Function


'Cluster resource Terminate entry point
Function Terminate()

    Terminate = true

End Function