Windows Server 장애 조치(failover) 클러스터에서 IIS용 FTP를 구성하는 방법

이 문서에서는 Windows Server 장애 조치(failover) 클러스터에서 IIS(인터넷 정보 서비스) 8.0 이상 버전에 대한 FTP를 구성하는 방법을 설명합니다. 이 문서의 절차는 FTP 서비스에만 적용됩니다.

참고

장애 조치(failover) 클러스터에서 웹 서비스를 구성하는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 확인합니다.

970759 Windows Server 장애 조치(failover) 클러스터에서 IIS World Wide Web Publishing Service 구성

적용 대상: Windows Server 2019, Windows Server 2016, Windows Server 2012 R2
원본 KB 번호: 974603

장애 조치(failover) 클러스터링을 사용하여 IIS FTP 서버에 대한 고가용성 구성

  1. 모든 클러스터 노드에 웹 서버 역할을 설치합니다. Windows Server 2012 설치하는 경우 "FTP 서버" 역할을 포함하지 마세요. Windows Server 2012 R2 이상 버전에 설치하는 경우 기본 제공 "FTP 서버" 역할을 포함합니다. IIS 8 배포 가이드에 대한 자세한 내용은 IIS 관리자 열기(IIS 8) 웹 사이트를 참조하세요.

  2. 모든 클러스터 노드에 장애 조치(failover) 클러스터링 기능을 설치하고 클러스터를 만듭니다. 자세한 내용은 다음 웹 사이트를 참조하세요. 장애 조치(failover) 클러스터 배포 가이드

  3. IIS 공유 구성에 사용할 파일 공유를 설정합니다.

  4. 모든 클러스터 노드에서 IIS 공유 구성을 구성합니다.

  5. 모든 클러스터 노드에서 IIS 공유 구성에 대한 오프라인 파일을 구성합니다.

  6. FTP 사이트를 구성하고 하나의 클러스터 노드에서 해당 콘텐츠의 위치를 지정합니다.

  7. 장애 조치(failover) 클러스터링에서 일반 스크립트를 만들어 FTP 사이트에 대한 고가용성을 구성합니다.

IIS 공유 구성에 사용할 파일 공유 설정

  1. IIS 공유 구성에 사용할 공유에 액세스할 사용자를 만듭니다.

  2. 파일 공유를 만듭니다. 이 공유는 모든 클러스터 노드에서 IIS 간에 공유되는 IIS 공유 구성을 저장하는 데 사용됩니다. 여러 옵션이 있습니다.

  3. 2단계에서 만든 공유에 대한 권한을 설정합니다. 1단계에서 만든 사용자에게 파일 공유 및 NTFS 권한에 대한 모든 권한 권한을 부여합니다.

  4. 모든 클러스터 노드가 파일 공유를 탐색할 수 있음을 확인합니다. 파일 공유의 경로는 입니다 \\<fileservername>\<sharename>.

모든 클러스터 노드에서 IIS 공유 구성 구성

클러스터 노드 중 하나에서 공유 구성을 파일 공유로 내보냅니다.

  1. 관리 도구로 이동한 다음 IIS(인터넷 정보 서비스) 관리자를 선택합니다.
  2. 왼쪽 창에서 서버 이름 노드를 선택합니다.
  3. 공유 구성 아이콘을 두 번 클릭합니다.
  4. 공유 구성 페이지의 작업 창(오른쪽 창)에서 구성 내보내기를 선택하여 로컬 컴퓨터에서 다른 위치로 구성 파일을 내보냅니다.
  5. 구성 내보내기 대화 상자의 실제 경로 상자에 파일 공유(\\<fileservername>\<sharename>)의 경로를 입력합니다.
  6. 다른 이름으로 연결을 선택한 다음 공유 구성이 저장된 공유에 액세스할 수 있는 사용자 계정의 사용자 이름과 암호를 입력한 다음 확인을 선택합니다. 이 계정은 공유에 액세스하는 데 사용됩니다. 도메인 관리자가 아닌 제한된 Active Directory 계정을 사용해야 합니다.
  7. 구성 내보내기 대화 상자에서 암호화 키를 보호하는 데 사용할 암호를 입력한 다음 확인을 선택합니다.
  8. 공유 구성 페이지에서 공유 구성 검사 사용 상자를 선택합니다.
  9. 이전에 입력한 실제 경로, 사용자 계정 및 암호를 입력한 다음 작업 창에서적용을 선택합니다.
  10. 암호화 키 암호 대화 상자에서 이전에 설정한 암호화 키 암호를 입력한 다음 확인을 선택합니다.
  11. 공유 구성 대화 상자에서 확인을 선택합니다.
  12. 확인을 선택합니다.

다른 각 클러스터 노드에서 방금 파일 공유로 내보낸 공유 구성을 사용합니다.

  1. 관리 도구로 이동한 다음 IIS(인터넷 정보 서비스) 관리자를 선택합니다.
  2. 서버 이름 노드를 선택합니다.
  3. 공유 구성 아이콘을 두 번 클릭합니다.
  4. 공유 구성 페이지에서 공유 구성 검사 사용 상자를 선택합니다.
  5. 이전에 입력한 파일 공유(\\<fileservername>\<sharename>), 사용자 계정 및 암호의 실제 경로를 입력한 다음 작업 창에서적용을 선택합니다.
  6. 암호화 키 암호 대화 상자에서 이전에 설정한 암호화 키 암호를 입력한 다음 확인을 선택합니다.
  7. 공유 구성 대화 상자에서 확인을 선택합니다.
  8. 확인을 선택합니다.

참고

IIS에서 공유 구성을 설정하는 방법에 대한 자세한 내용은 다음 Microsoft 웹 사이트 공유 구성을 참조하세요.

모든 클러스터 노드에서 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 노드를 호스트하는 동일한 장애 조치(failover) 클러스터에서 파일 공유를 고가용성으로 설정하면 사용 가능한 클러스터 노드가 고가용성 파일 서버를 호스팅하는 경우 공유를 마우스 오른쪽 단추로 클릭할 때 항상 사용 가능한 오프라인 옵션이 표시되지 않습니다. 고가용성 파일 서버 애플리케이션을 다른 노드로 이동해야 합니다.

  7. 제어판 오프라인 파일을 엽니다. 동기화 센터 열기를 선택한 다음, 일정을 선택합니다.

  8. 매일 또는 요구 사항에 따라 오프라인 파일 동기화를 예약합니다. 몇 분마다 실행되도록 오프라인 동기화를 구성할 수도 있습니다. 스케줄러를 설정하지 않더라도 Applicationhost.config 파일에서 변경한 내용이 웹 서버에 반영됩니다.

참고

IIS에서 공유 구성에 대해 오프라인 파일을 구성하는 방법에 대한 자세한 내용은 공유 구성을 위한 오프라인 파일을 참조하세요.

FTP 사이트를 구성하고 하나의 클러스터 노드에서 해당 콘텐츠의 위치를 지정합니다.

FTP 사이트 콘텐츠 파일이 상주할 클러스터 디스크 리소스를 소유하는 클러스터 노드를 찾습니다.

  1. 관리 도구로 이동한 다음 장애 조치(failover) 클러스터 관리자를 선택합니다.
  2. 클러스터에 연결합니다. 클러스터 노드 중 하나에 있는 경우 클러스터가 목록에 자동으로 표시됩니다.
  3. "스토리지"에서 FTP 사이트 콘텐츠가 상주할 디스크 리소스를 찾습니다. 이렇게 하려면 디스크 리소스에 대한 스토리지 트리를 확장합니다. 스토리지가 클러스터의 다른 고가용성 애플리케이션에서 사용되지 않는지 확인합니다. "사용 가능한 스토리지"에서 스토리지를 찾을 수 있습니다.
  4. 이 리소스가 온라인 상태인 클러스터 노드를 확인합니다. 해당 클러스터 노드에서 IIS를 구성합니다.
  5. 클러스터 디스크 리소스 이름을 확인합니다. 콘텐츠 파일에 사용합니다.

리소스가 온라인 상태인 클러스터 노드에서 FTP 사이트 콘텐츠에 공유 디스크를 사용하도록 FTP 서버를 구성합니다.

  1. 관리 도구로 이동한 다음 IIS(인터넷 정보 서비스) 관리자를 선택합니다.
  2. 왼쪽 창에서 서버 이름 노드를 확장합니다.
  3. 사이트를 확장하고 사이트를 마우스 오른쪽 단추로 클릭한 다음 FTP 사이트 추가를 선택합니다.
  4. FTP 사이트 추가 대화 상자에서 사이트 이름을 입력합니다. 콘텐츠 디렉터리에 FTP 사이트 콘텐츠 파일이 있는 위치를 입력합니다. 이전 절차의 5단계에서 설명한 클러스터 디스크 리소스의 위치입니다.
  5. 나머지 FTP 사이트 설정을 구성합니다.
  6. 완료를 선택합니다.

장애 조치(failover) 클러스터 관리자에서 일반 스크립트를 만들어 FTP 사이트에 대한 고가용성 구성

FTP 사이트에 대한 고가용성을 구성하는 마지막 단계에서는 FTP 서비스를 모니터링하는 데 사용할 일반 스크립트 리소스를 설정합니다.

  1. 각 클러스터 노드에서 이 문서의 끝에 있는 스크립트를 에 복사합니다 Windows\System32\inetsrv\Clusftp7.vbs.
  2. 관리 도구로 이동한 다음 장애 조치(failover) 클러스터 관리자를 선택합니다.
  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. 설정을 확인한 후 마법사는 클러스터 그룹, 클러스터 리소스 및 리소스 간의 종속성을 만든 다음 리소스를 온라인으로 가져옵니다.

참고

동일한 장애 조치(failover) 클러스터에서 여러 고가용성 FTP 사이트를 호스트하려면 앞에서 언급한 것과 동일한 단계를 수행합니다. 스크립트를 사용자 지정하지 않은 경우 클러스터의 모든 FTP 사이트에 대해 동일한 스크립트 파일을 가리킬 수 있습니다. 그러나 개별 FTP 사이트와 관련된 변경을 하는 경우 각 FTP 사이트 및 다른 클러스터형 공유 스토리지에 대해 다른 스크립트 파일을 사용합니다. 예를 들어 %systemroot%\System32\Inetsrv, useClusftp7.vbs 첫 번째 FTP 사이트의 경우, 두 번째 사이트에는 Clftp7-2.vbs, 세 번째 사이트에는 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