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

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

注:

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

970759 Windows Server フェールオーバー クラスターでの IIS World Wide Web Publishing Service の構成

適用対象: 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 マネージャーを開く (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. [管理ツール] に移動し、[インターネット インフォメーション サービス (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 サイトごとに異なるスクリプト ファイルを使用し、異なるクラスター化された共有ストレージを使用します。 たとえば、最初の %systemroot%\System32\Inetsrv, useClusftp7.vbs FTP サイトでは、2 番目の FTP サイトでは 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