Azure에서 Cloud Services(클래식) 배포 시 할당 실패 문제 해결

Important

이제 Cloud Services(클래식)는 2024년 9월 1일부터 모든 고객에게 더 이상 사용되지 않습니다. 기존 실행 중인 배포는 Microsoft에서 중지 및 종료되며 데이터는 2024년 10월부터 영구적으로 손실됩니다. 새 배포에서는 새로운 Azure Resource Manager 기반 배포 모델인 Azure Cloud Services(추가 지원)를 사용해야 합니다.

요약

클라우드 서비스에 인스턴스를 배포하거나 새 웹 또는 작업자 역할 인스턴스를 추가할 때 Microsoft Azure는 컴퓨팅 리소스를 할당합니다. 이러한 작업을 수행하면서 Azure 구독 제한에 도달하기 전에 오류를 수신하는 경우도 있습니다. 이 문서는 일부 일반적인 할당 오류의 이유를 설명하고 가능한 수정을 제안합니다. 서비스 배포를 계획하는 사용자에게도 이 정보가 유용할 수 있습니다.

Azure 문제와 관련된 정보가 이 문서에 없을 경우 Microsoft Q&A 및 Stack Overflow에서 Azure 포럼을 방문합니다. 이러한 포럼이나 Twitter의 @AzureSupport에 문제를 게시할 수 있습니다. 또한 Azure 지원 요청을 제출할 수 있습니다. 지원 요청을 제출하려면 Azure 지원 페이지에서 지원 받기를 선택합니다.

배경 – 할당의 작동 원리

Azure 데이터 센터의 서버는 클러스터로 분할되어 있습니다. 여러 클러스터에서 새 클라우드 서비스 할당 요청을 시도합니다. 첫 번째 인스턴스가 클라우드 서비스(스테이징 또는 프로덕션)에 배포되면 해당 클라우드 서비스가 클러스터에 고정됩니다. 이후 클라우드 서비스에 대한 모든 추가 배포는 동일한 클러스터에서 발생합니다. 이 게시물에서는 이러한 상태를 ‘클러스터에 고정’이라고 합니다. 다음 다이어그램은 여러 클러스터에 시도되는 정상적인 할당의 사례를 보여 줍니다. 두 번째 다이어그램은 기존 클라우드 서비스 CS_1이 호스트되는 클러스터 2에 고정된 할당의 사례를 보여 줍니다.

할당 다이어그램

할당 오류가 발생하는 이유

할당 요청이 클러스터에 고정되면 사용 가능한 리소스 풀이 클러스터로 제한되기 때문에 유휴 리소스를 찾는 데 실패할 가능성이 높습니다. 또한, 할당 요청이 클러스터에 고정되어 있지만 클러스터가 요청한 리소스 유형을 지원하지 않는 경우, 클러스터에 여유 리소스가 있더라도 사용자의 요청은 실패합니다. 다음 다이어그램은 유일한 후보 클러스터에 여유 리소스가 없어서 고정된 할당이 실패하는 사례를 보여 줍니다. 다이어그램 4는 클러스터에 여유 리소스가 있지만 유일한 후보 클러스터가 요청한 VM(가상 머신) 크기를 지원하지 않기 때문에 고정된 할당이 실패하는 사례를 보여 줍니다.

고정된 할당 오류

클라우드 서비스에 대한 할당 실패 문제 해결

오류 메시지

Azure Portal에서 클라우드 서비스로 이동하여 사이드바에서 작업 로그(클래식)를 선택하고 로그를 확인합니다.

예외에 대한 다음 추가 솔루션을 참조하세요.

예외 유형 오류 메시지 솔루션
FabricInternalServerError 오류 코드 'InternalError' 및 errorMessage '서버에서 내부 오류가 발생했습니다. 요청을 다시 시도하세요.' FabricInternalServerError 문제 해결
ServiceAllocationFailure 오류 코드 'InternalError' 및 errorMessage '서버에서 내부 오류가 발생했습니다. 요청을 다시 시도하세요.' ServiceAllocationFailure 문제 해결
LocationNotFoundForRoleSize '{Operation ID}' 작업 실패: '요청한 VM 계층은 현재 이 구독의 지역({Region ID})에서 사용할 수 없습니다. 다른 계층을 시도하거나 다른 위치에 배포하세요.' LocationNotFoundForRoleSize 문제 해결
ConstrainedAllocationFailed Azure 작업 ‘{Operation ID}’가 실패하고 Compute.ConstrainedAllocationFailed 코드가 반환되었습니다. 세부 정보: 할당에 실패했습니다. 요청의 제약 조건을 충족할 수 없습니다. 요청된 새로운 서비스 배포가 선호도 그룹에 바인딩되어 있거나, Virtual Network를 대상으로 하거나, 호스팅된 이 서비스에 기존 배포가 있습니다. 이러한 조건이 특정 Azure 리소스에 대한 새로운 배포를 제한합니다. 나중에 다시 시도하거나, VM 크기를 줄이거나 역할 인스턴스의 수를 줄입니다. 또는, 가능하다면 제약 조건을 제거하거나 다른 지역에 배포를 시도합니다. ConstrainedAllocationFailed 문제 해결
OverconstrainedAllocationRequest 배포 요청 제약 조건으로 인해 배포에 요구되는 VM 크기(또는 VM 크기의 조합)를 프로비전할 수 없습니다. 가능한 경우, 가상 네트워크 바인딩 같은 제약 조건을 해제하고 다른 배포를 포함하지 않는 호스트된 서비스에 배포를 시도하거나 다른 선호도 그룹 또는 선호도 그룹 없이 배포를 시도하거나 다른 지역으로 배포를 시도합니다. OverconstrainedAllocationRequest 문제 해결

예제 오류 메시지:

"Azure 작업 '{operation id}'가 실패하고 Compute.ConstrainedAllocationFailed 코드가 반환되었습니다. 세부 정보: 할당에 실패했습니다. 요청의 제약 조건을 충족할 수 없습니다. 요청된 새로운 서비스 배포가 선호도 그룹에 바인딩되어 있거나 가상 네트워크를 대상으로 하거나 호스티드 서비스에 기존 배포가 있습니다. 이러한 조건이 특정 Azure 리소스에 대한 새로운 배포를 제한합니다. 나중에 다시 시도하거나, VM 크기를 줄이거나 역할 인스턴스의 수를 줄입니다. 가능하다면 앞서 말한 제약 조건을 제거하거나 다른 지역에 배포를 시도합니다.”

일반적인 문제

다음은 할당 요청이 단일 클러스터에 고정되도록 하는 일반적인 할당 시나리오입니다.

  • 스테이징 슬롯에 배포하는 경우 - 클라우드 서비스가 두 슬롯 중 하나에 배포된 경우 전체 클라우드 서비스가 특정 클러스터에 고정됩니다. 이는 프로덕션 슬롯에 이미 배포가 있을 경우 프로덕션 슬롯과 동일한 클러스터에만 새 스테이징 배포를 할당할 수 있다는 의미입니다. 클러스터의 용량이 거의 찼을 경우 요청이 실패할 수 있습니다.
  • 크기 조정 - 기존 클라우드 서비스에 새 인스턴스를 추가할 때는 동일한 클러스터에 할당해야 합니다. 작은 크기 조정 요청은 대부분 할당할 수 있지만 항상 가능한 것은 아닙니다. 클러스터의 용량이 거의 찼을 경우 요청이 실패할 수 있습니다.
  • 선호도 그룹 - 클라우드 서비스가 선호도 그룹에 고정되어 있지 않는 한, 해당 지역에 있는 클러스터의 패브릭은 빈 클라우드 서비스에 새로운 배포를 할당할 수 있습니다. 배포는 동일한 클러스터에서 동일한 선호도 그룹을 사용하려고 시도합니다. 클러스터의 용량이 거의 찼을 경우 요청이 실패할 수 있습니다.
  • 선호도 그룹 가상 네트워크 - 이전에는 Virtual Network가 지역이 아닌 선호도 그룹에 연결되었고, 이러한 Virtual Network의 클라우드 서비스는 선호도 그룹 클러스터에 고정되었습니다. 이러한 유형의 가상 네트워크에 대한 배포는 고정된 클러스터에서 시도됩니다. 클러스터의 용량이 거의 찼을 경우 요청이 실패할 수 있습니다.

솔루션

  1. 새 클라우드 서비스에 다시 배포 - 이 솔루션은 플랫폼이 해당 영역의 모든 클러스터에서 선택할 수 있으므로 가장 성공률이 높습니다.

    • 새 클라우드 서비스에 작업을 배포합니다.
    • 새 클라우드 서비스로의 트래픽을 가리키도록 CNAME 또는 A 레코드를 업데이트합니다.
    • 제로(0) 트래픽이 이전 사이트로 이동하면 이전 클라우드 서비스를 삭제할 수 있습니다. 이 솔루션은 가동 중지 시간 없이 발생합니다.
  2. 프로덕션 및 스테이징 슬롯 모두 삭제 - 이 솔루션은 기존 DNS(도메인 이름 서비스) 이름을 유지하지만, 애플리케이션의 가동 중지 시간을 초래합니다.

    • 기존 클라우드 서비스의 프로덕션 및 스테이징 슬롯을 삭제하여 클라우드 서비스를 비웁니다.
    • 기존 클라우드 서비스에서 새 배포를 만듭니다. 이 솔루션은 해당 지역의 모든 클러스터에서 할당을 다시 시도합니다. 클라우드 서비스가 선호도 그룹에 연결되지 않았는지 확인합니다.
  3. 예약된 IP - 이 솔루션은 기존 IP 주소를 유지하지만, 애플리케이션의 가동 중지 시간을 초래합니다.

    • PowerShell을 사용하여 기존 배포에 대한 ReservedIP 만들기

      New-AzureReservedIP -ReservedIPName {new reserved IP name} -Location {location} -ServiceName {existing service name}
      
    • #2 항목에 따라 서비스의 CSCFG에 새 ReservedIP를 지정해야 합니다.

  4. 새 배포에 대한 선호도 그룹 제거 - 선호도 그룹은 더 이상 권장되지 않습니다. #1 항목의 단계에 따라 새 클라우드 서비스를 배포합니다. 클라우드 서비스가 선호도 그룹에 속하지 않는지 확인합니다.

  5. 지역 Virtual Network로 변환 - 선호도 그룹에서 지역 Virtual Network(가상 네트워크)로 마이그레이션하는 방법을 참조하세요.