다음을 통해 공유


시작되지 않는 Azure Cloud Services(추가 지원) 역할 인스턴스 문제 해결

이 문서에서는 Azure Cloud Services(추가 지원) 역할 인스턴스의 시작 실패 문제를 해결하는 방법을 설명합니다.

문제 해결 검사 목록

역할 인스턴스에서 발생하는 문제를 진단하려면 다음 옵션 중에서 선택합니다.

옵션 1: 사용자 지정 오류 끄기

전체 오류 정보를 보려면 웹 역할에 대한 Web.config 파일을 열고 사용자 지정 오류 모드를 <a0/>로 설정한 다음 서비스를 다시 배포합니다.

  1. Visual Studio에서 솔루션을 엽니다.

  2. 솔루션 탐색기 Web.config 파일을 엽니다.

  3. system.web 섹션에서 다음 XML 코드를 추가합니다.

    <customErrors mode="Off" />
    
  4. 파일을 저장합니다.

  5. 서비스를 다시 패키지하고 다시 배포합니다.

서비스를 다시 배포한 후 서비스에 대해 수신할 수 있는 오류 메시지에는 누락된 어셈블리 또는 DLL의 이름이 포함됩니다.

옵션 2: PowerShell을 사용하여 역할 인스턴스 상태 보기

역할 인스턴스의 런타임 상태에 대한 정보를 얻으려면 Get-AzCloudServiceRoleInstanceView cmdlet을 실행합니다.

$roleInstanceView = @{
    CloudServiceName = "<cloud-service-name>"
    ResourceGroupName = "<resource-group-name>"
    RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView

역할 인스턴스의 상태는 다음 예제 출력과 같이 첫 번째 열에 나열됩니다.

Statuses            PlatformFaultDomain PlatformUpdateDomain
--------            ------------------- --------------------
{RoleStateStarting} 0                   0

옵션 3: Azure Portal을 사용하여 역할 인스턴스 상태 보기

Azure Portal에서 역할 인스턴스에 대한 상태 정보를 보려면 다음 단계를 수행합니다.

  1. Azure Portal에서 클라우드 서비스(추가 지원)를 검색하여 선택합니다.

  2. 클라우드 서비스 목록에서 클라우드 서비스의 이름을 선택합니다.

  3. 메뉴 창에서 설정 아래를 살펴본 다음 역할 및 인스턴스를 선택합니다.

  4. 역할 인스턴스의 이름을 선택합니다.

  5. 역할 인스턴스 창에서 상태 필드에 있는 역할 인스턴스의 상태를 확인합니다.

옵션 4: 원격 데스크톱을 사용하여 오류 정보 보기

역할에 액세스하고 전체 오류 정보를 보려면 다음 단계를 수행하여 RDP(원격 데스크톱 프로토콜)를 사용합니다.

  1. Azure Cloud Services용 원격 데스크톱 확장(추가 지원)을 추가합니다.

  2. Azure Portal에서 클라우드 서비스 인스턴스에 준비 상태가 표시되면 원격 데스크톱을 사용하여 클라우드 서비스에 로그인합니다. 자세한 내용은 원격 데스크톱을 사용하여 역할 인스턴스에 연결을 참조 하세요.

  3. 원격 데스크톱을 설정하는 데 사용한 자격 증명을 사용하여 VM(가상 머신)에 로그인합니다.

  4. 명령 프롬프트 창을 엽니다.

  5. ipconfig 명령을 실행합니다. IPv4 주소에 대해 반환된 값을 복사합니다.

  6. 웹 브라우저를 엽니다.

  7. 주소 표시줄에 IPv4 주소를 붙여넣은 다음 슬래시와 웹 애플리케이션 기본 파일의 이름을 추가합니다. 예들 들어 http://<ipv4-address>/default.aspx입니다.

지금 웹 사이트로 이동하면 자세한 정보가 포함된 오류 메시지가 표시됩니다. 예를 들어 다음과 같습니다.

‘/’ 애플리케이션의 서버 오류

파일 또는 어셈블리 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' 또는 해당 종속성 중 하나를 로드할 수 없습니다. 시스템은 지정된 파일을 찾을 수 없습니다.

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류에 대한 자세한 내용 및 코드에서 어디에 기반하는지는 스택 추적을 검토합니다.

예외 세부 정보: System.IO.FileNotFoundException

옵션 5: 컴퓨팅 에뮬레이터 사용

Azure Compute Emulator를 사용하여 누락된 종속성 및 Web.config 오류 문제를 진단하고 해결할 수 있습니다. 이 방법을 사용하여 문제를 진단할 때 최상의 결과를 얻으려면 Windows를 새로 설치한 컴퓨터 또는 VM을 사용합니다.

Azure Compute 에뮬레이터를 사용하여 문제를 진단하려면 다음을 수행합니다.

  1. Azure SDK설치합니다.

  2. 개발 컴퓨터에서 클라우드 서비스 프로젝트를 빌드합니다.

  3. 파일 탐색기 클라우드 서비스 프로젝트에서 bin\debug 폴더로 이동합니다.

  4. 문제를 디버깅하는 데 사용한 컴퓨터에 .csx 폴더 및 .cscfg 파일을 복사합니다.

  5. 정리 컴퓨터에서 Azure SDK 명령 프롬프트 창을 엽니다.

  6. 명령 프롬프트에서 다음 명령을 실행합니다 csrun .

    csrun.exe /devstore:start
    
  7. 다음 명령을 실행합니다.

    run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
    

    역할이 시작되면 웹 브라우저에 자세한 오류 정보가 표시됩니다.

추가 진단이 필요한 경우 표준 Windows 문제 해결 도구를 사용할 수 있습니다.

옵션 6: IntelliTrace 사용

참고 항목

Visual Studio 2022에서는 IntelliTrace를 사용할 수 없습니다. Visual Studio 2019, 2017 또는 2015를 사용하는 경우에도 IntelliTrace를 사용할 수 있습니다.

.NET Framework 4를 사용하는 작업자 및 웹 역할의 경우 IntelliTrace를 사용할 수 있습니다. IntelliTrace는 Visual Studio Enterprise에서 사용할 수 있습니다.

IntelliTrace가 켜져 있는 동안 클라우드 서비스를 배포하려면 다음을 수행합니다.

  1. Azure SDK 1.3 이상 버전이 설치되어 있는지 확인합니다.

  2. Visual Studio에서 솔루션을 배포합니다. 배포를 설정할 때 .NET 4 역할에 IntelliTrace 사용 확인란을 선택합니다.

  3. 역할 인스턴스가 시작되면 서버 탐색기를 엽니다.

  4. Azure\Cloud Services 노드를 펼칩니다.

  5. 역할 인스턴스를 나열하려면 배포를 확장합니다. 그런 다음 역할 인스턴스를 마우스 오른쪽 단추로 클릭합니다.

  6. IntelliTrace 로그 보기를 선택합니다.

  7. IntelliTrace 요약에서 예외 데이터이동하여 해당 노드를 확장합니다.

  8. 예외 목록에서 System.IO.FileNotFoundException의 Type 열 값이 포함된 행을 찾습니다. 해당 메시지 열 값은 다음 텍스트와 유사합니다.

    파일 또는 어셈블리 'Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>' 또는 해당 종속성 중 하나를 로드할 수 없습니다. 시스템은 지정된 파일을 찾을 수 없습니다.

원인 1: RoleInstanceStartupTimeoutError로 인해 클라우드 서비스 작업이 실패함

Azure Cloud Services(추가 지원)의 역할 인스턴스 중 하나 이상이 시작 속도가 느려질 수 있습니다. 또는 역할 인스턴스가 재활용 중이거나 사용 중인 상태에서 중단되어 예상대로 시작되지 않을 수 있습니다. 이 경우 RoleInstanceStartupTimeoutError 역할 애플리케이션 오류 메시지가 나타납니다.

역할 애플리케이션에는 역할 재생을 유발할 수 있는 두 부분이 있습니다.

역할이 중지되면 PaaS(Platform as a Service) 에이전트가 역할을 다시 시작합니다.

문제가 시작 작업으로 인해 발생했는지 확인하려면 다음 단계를 따릅니다.

  1. 원격 데스크톱을 사용하여 문제가 있는 역할 인스턴스에 연결해 보세요.

  2. 역할 인스턴스에 연결한 후 시작을 선택한 다음 작업 관리자를 검색하여 선택합니다.

  3. 프로세스 목록을 보려면 작업 관리자에서 세부 정보 탭을 선택합니다.

  4. WaIISHost.exe(WebRole의 경우) 또는 WaWorkerHost.exe(WorkerRole의 경우)에 대한 프로세스가 있는지 확인합니다. 이러한 두 프로세스가 모두 없으면 시작 작업이 실패한 것일 수 있습니다.

문제가 시작 작업으로 인해 발생했는지 확인할 수 있나요? 그렇다면 다음 솔루션을 적용할 수 있습니다. 그러나 이 솔루션은 시작 작업이 단순한 작업 또는 포그라운드 작업인 경우에만 사용할 수 있습니다. 솔루션은 백그라운드 시작 작업에 적용되지 않습니다. 이는 역할 시작과 동시에 비동기적으로 실행됩니다.

솔루션: 시작 작업 스크립트 디버그

시작 작업 실패 문제를 해결하려면 VM 시작 중에 실행되는 스크립트를 디버그합니다. 이 시작 작업 스크립트는 Startup.cmd 파일입니다. 스크립트의 문제를 조사하는 데 도움이 되도록 다음 옵션 중에서 선택할 수 있습니다.

  • C:\Resources\WaHostBootstrapper.log 로그 파일을 봅니다. 이 파일은 WaHostBootstrapper.exe 프로세스에 대한 로그입니다. 이 프로세스는 시작 작업을 담당합니다. Windows Azure 클래식 VM 아키텍처의 워크플로에 설명되어 있습니다. 그런 다음 Startup.cmd 실행과 관련된 오류 또는 예외를 검색합니다. 특히 종료 코드 가 0인지 확인합니다. 0이 아닌 경우 시작 작업이 완료되었지만 오류가 있는 것입니다. 스크립트의 종료 코드와 관련된 로그가 없으면 시작 작업이 계속 실행 중인 것입니다.

  • 예상되는 비즈니스 영향으로 인해 시작 작업 스크립트를 프로덕션 환경에서 자유롭게 실행할 수 없는 경우 명령줄에서 로깅 메커니즘을 사용자 지정합니다. 예를 들어 스크립트 명령의 키 정보 출력을 파일로 리디렉션할 수 있습니다. 이 작업을 수행하는 한 가지 방법은 명령의 끝에 추가하는 > "%TEMP%\StartupLog.txt" 것입니다.

  • 명령줄에서 수동으로 시작 작업 스크립트를 실행합니다. WebRole 또는 WorkerRole 역할에 대한 이 스크립트의 위치는 다음 표에 나와 있습니다.

    역할 스크립트 위치
    WebRole E:\approot\bin\Startup.cmd
    WorkerRole E:\approot\Startup.cmd

원인 2: DLL 또는 어셈블리가 없습니다.

응답하지 않는 역할 인스턴스 및 상태 간을 순환하는 역할 인스턴스는 누락된 DLL 또는 어셈블리로 인해 발생할 수 있습니다.

다음은 DLL 또는 어셈블리 누락의 몇 가지 증상입니다.

  • 역할 인스턴스는 초기화, 사용 중중지 상태를 순환합니다.

  • 역할 인스턴스가 준비 상태로 이동했지만 웹 애플리케이션에는 페이지가 표시되지 않습니다.

웹 사이트가 웹 역할에 배포되었지만 DLL이 없는 경우 다음 서버 런타임 오류 메시지가 표시될 수 있습니다.

‘/’ 애플리케이션의 서버 오류

런타임 오류

설명: 서버에서 애플리케이션 오류가 발생했습니다. 이 애플리케이션에 대한 현재 사용자 지정 오류 설정은 보안상의 이유로 애플리케이션 오류의 세부 정보를 원격으로 볼 수 없습니다. 하지만 로컬 서버 컴퓨터에서 실행 중인 브라우저로 볼 수 있습니다.

세부 정보: 원격 컴퓨터에서 이 특정 오류 메시지의 세부 정보를 볼 수 있도록 하려면 현재 웹 애플리케이션의 루트 디렉터리에 있는 "web.config" 구성 파일을 사용하여 태그를 만드 <customErrors> 세요. 그런 다음 이 <customErrors> 태그의 "mode" 특성이 "Off"로 설정되어야 합니다.

해결 방법: 누락된 DLL 및 어셈블리 해결

누락된 DLL 및 어셈블리의 오류를 해결하려면 다음을 수행합니다.

  1. Visual Studio에서 솔루션을 엽니다.

  2. 솔루션 탐색기 References 폴더를 엽니다.

  3. 오류 메시지에서 식별되는 어셈블리를 선택합니다.

  4. 속성에서 로컬 복사 속성을 True설정합니다.

  5. 클라우드 서비스를 다시 배포합니다.

오류가 더 이상 표시되지 않는지 확인한 후 서비스를 다시 배포합니다. 배포를 설정할 때 .NET 4 역할에 IntelliTrace 사용 확인란을 선택하지 마세요.

다음 단계

자세한 정보

클래식 Cloud Service의 초기 구성, 실행 및 시작 작업의 예제에 대한 자세한 내용은 다음 문서를 참조하세요.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.