Azure Cloud Service(클래식) 역할이 재활용되는 일반적인 문제
Important
이제 Cloud Services(클래식)는 2024년 9월 1일부터 모든 고객을 대상으로 더 이상 사용되지 않습니다. 기존 실행 중인 배포는 Microsoft에서 중지 및 종료되며 데이터는 2024년 10월부터 영구적으로 손실됩니다. 새 배포에서는 새로운 Azure Resource Manager 기반 배포 모델인 Azure Cloud Services(추가 지원)를 사용해야 합니다.
이 문서에서는 배포 문제의 일반적인 몇 가지 원인을 설명하고 이러한 문제를 해결하기 위한 문제 해결 팁을 제공합니다. 애플리케이션에 문제가 있다는 것을 역할 인스턴스가 시작에 실패하거나 초기화, 사용 중, 및 중지 상태를 반복할 경우에 알 수 있습니다.
Azure 문제와 관련된 정보가 이 문서에 없을 경우 Microsoft Q&A 및 Stack Overflow에서 Azure 포럼을 방문합니다. 이러한 포럼이나 Twitter의 @AzureSupport에 문제를 게시할 수 있습니다. 또한 Azure 지원 요청을 제출할 수 있습니다. 지원 요청을 제출하려면 Azure 지원 페이지에서 지원 받기를 선택합니다.
런타임 종속성 누락
애플리케이션의 역할이 .NET Framework 또는 Azure 관리된 라이브러리의 일부가 아닌 어셈블리를 사용하는 경우 애플리케이션 패키지에 해당 어셈블리를 명시적으로 포함해야 합니다. 다른 Microsoft 프레임워크는 기본적으로 Azure에서 사용할 수 없다는 점을 유념해야 합니다. 역할이 이러한 프레임워크를 사용하는 경우 애플리케이션 패키지에 해당 어셈블리를 추가해야 합니다.
애플리케이션을 빌드하고 패키지하기 전에 다음 문이 사실인지 확인합니다.
- Visual Studio를 사용하는 경우 Azure SDK 또는 .NET Framework에 속하지 않는 프로젝트의 참조된 각 어셈블리에 대해 로컬 복사 속성이 True로 설정되어 있는지 확인합니다.
- web.config 파일이 컴파일 요소에서 사용되지 않은 어셈블리를 참조하지 않도록 합니다.
- 모든 .cshtml 파일의 빌드 작업은 콘텐츠로 설정합니다. 이 설정을 사용하면 파일이 패키지에 올바르게 표시되고 다른 참조 파일도 패키지에 표시될 수 있습니다.
어셈블리가 잘못된 플랫폼을 목표로 합니다.
Azure는 64비트 환경입니다. 따라서 32비트 대상에 대해 컴파일된 .NET 어셈블리는 Azure와 호환되지 않습니다.
초기화하거나 중지하는 동안 처리되지 않은 예외를 throw하는 역할
OnStart, OnStop 및 Run 메서드를 포함하는 RoleEntryPoint 클래스의 메서드에서 throw되는 예외는 처리되지 않은 예외입니다. 이러한 메서드 중 하나에서 처리되지 않은 예외가 발생하면 역할이 재활용됩니다. 역할이 반복적으로 재활용되면 시작하려 할 때마다 처리되지 않은 예외가 throw될 수 있습니다.
역할은 실행 메서드에서 반환합니다.
실행 메서드는 무기한 실행되도록 합니다. 코드가 실행 메서드를 재정의하는 경우 무기한 대기해야 합니다. 실행 메서드가 반환되는 경우 역할은 재활용됩니다.
잘못된 DiagnosticsConnectionString 설정
애플리케이션이 Azure Diagnostics를 사용하는 경우 서비스 구성 파일은 DiagnosticsConnectionString
구성 설정을 지정해야 합니다. 이 설정은 Azure에서 스토리지 계정에 HTTPS 연결을 지정해야 합니다.
Azure에 애플리케이션 패키지를 배포하기 전에 DiagnosticsConnectionString
설정이 올바른지 확인하려면 다음 문이 true인지 확인합니다.
DiagnosticsConnectionString
설정이 Azure의 유효한 스토리지 계정을 가리킵니다.
기본적으로 이 설정은 에뮬레이트된 스토리지 계정을 가리키므로 애플리케이션 패키지를 배포하기 전에 이 설정을 명시적으로 변경해야 합니다. 이 설정을 변경하지 않는 경우 역할 인스턴스가 진단 모니터링을 시작하려고 할 때 예외가 throw됩니다. 이 이벤트로 인해 역할 인스턴스가 무기한 재활용될 수 있습니다.- 연결 문자열은 다음과 같은 형식으로 지정해야 합니다. (HTTPS 프로토콜을 지정해야 합니다.) MyAccountName을 스토리지 계정의 이름으로 바꾸고 MyAccountKey를 선택키로 바꿉니다.
DefaultEndpointsProtocol=https;AccountName=MyAccountName;AccountKey=MyAccountKey
Microsoft Visual Studio용 Azure Tools를 사용하여 애플리케이션을 개발하는 경우 속성 페이지를 사용하여 이 값을 설정할 수 있습니다.
내보낸 인증서에 프라이빗 키가 포함되지 않습니다.
TLS(전송 계층 보안)에서 웹 역할을 실행하려면 내보낸 관리 인증서에 프라이빗 키가 포함되어 있는지 확인해야 합니다. Windows 인증서 관리자를 사용하여 인증서를 내보내는 경우 프라이빗 키 내보내기 옵션에 대해 예를 선택해야 합니다. 인증서는 현재 지원되는 유일한 형식인 .pfx 형식으로 내보내야 합니다.
다음 단계
클라우드 서비스에 대한 문제해결 문서 를 더 봅니다.
Kevin Williamson의 블로그 시리즈에서 더 많은 역할 재활용 시나리오를 보세요.