가용성 영역을 사용하는 Virtual Machine Scale Set 만들기

Azure 가용성 영역은 중복 전원, 냉각 및 네트워킹을 제공하는 Azure 지역 내의 장애 격리 위치입니다. 이를 통해 데이터 센터 오류에 대한 고가용성 및 내결함성이 있는 애플리케이션을 실행할 수 있습니다. 가용성 영역을 지원하는 Azure 지역에는 최소 3개의 개별 영역이 있습니다. 각 가용성 영역은 독립적인 인프라 전원, 네트워킹 및 냉각 기능을 갖춘 하나 이상의 데이터 센터로 구성됩니다. 가용성 영역은 왕복 대기 시간이 2밀리초 미만인 고성능 네트워크로 연결됩니다. 자세한 내용은 가용성 영역 개요를 참조하세요.

데이터 센터 수준 오류로부터 Virtual Machine Scale Sets를 보호하려면 가용성 영역에서 확장 집합을 만들 수 있습니다. 가용성 영역을 사용하려면 지원되는 Azure 지역에 확장 집합을 만들어야 합니다.

가용성 영역에 대한 디자인 고려 사항

Virtual Machine Scale Sets는 세 가지 영역 배포 모델을 지원합니다.

  • 영역 중복 또는 영역 확장(권장)
  • 영역 또는 영역 맞춤(단일 영역)
  • Regional

영역 중복 또는 영역 확장

확장 집합에 걸쳐 있는 영역 중복 또는 영역은 선택한 모든 영역("zones": ["1","2","3"])에 인스턴스를 분산합니다. 기본적으로 확장 집합은 선택한 영역에 인스턴스를 균등하게 분산하는 최선의 방법을 수행합니다. 그러나 배포에서 "zoneBalance": "true"를 설정하여 엄격한 영역 균형을 유지하도록 지정할 수 있습니다. 각 VM과 해당 디스크는 영역이므로 특정 영역에 고정됩니다. 영역 간 인스턴스는 대기 시간이 짧은 고성능 네트워크에 의해 연결됩니다. 영역 중단 또는 연결 문제가 발생할 경우 영향을 받는 영역 내의 인스턴스에 대한 연결이 손상될 수 있지만 다른 가용성 영역의 인스턴스는 영향을 받지 않아야 합니다. 영역 중단 중에 확장 집합에 용량을 추가할 수 있으며 확장 집합은 영향을 받지 않는 영역에 더 많은 인스턴스를 추가합니다. 영역이 복원되면 확장 집합을 원래 용량으로 축소해야 할 수도 있습니다. 가장 좋은 방법은 CPU 또는 메모리 사용량을 기반으로 자동 크기 조정 규칙을 구성하는 것입니다. 확장 집합은 자동 크기 조정 규칙을 통해 다른 작업 영역에서 새 인스턴스를 확장하여 한 영역의 VM 인스턴스 손실에 대응할 수 있습니다.

가용성 영역에 인스턴스를 분산하는 것은 가용성 영역에 분산된 인스턴스에 대해 99.99% SLA를 충족하며 Azure의 대부분의 워크로드에 권장됩니다.

영역 또는 영역 맞춤(단일 영역)

영역 또는 영역 정렬 확장 집합은 인스턴스를 단일 가용성 영역 "zones": ['1']에 배치합니다. 각 VM과 해당 디스크는 영역이므로 특정 영역에 고정됩니다. 이 구성은 인스턴스 간의 대기 시간이 짧아야 하는 경우에 주로 사용됩니다.

Regional

지역 Virtual Machine Scale Set은 영역 할당이 명시적으로 설정되지 않은 경우("zones"=[] 또는 "zones"=null)입니다. 이 구성에서 확장 집합은 영역이 고정되지 않은 지역 인스턴스를 만들고 지역 전체에 인스턴스를 암시적으로 배치합니다. 영역 간에 균형을 유지하거나 분산하거나 인스턴스가 동일한 가용성 영역에 배치된다는 보장은 없습니다. 디스크 공동 배치는 Ultra 및 Premium v2 디스크에 대해 보장되며 프리미엄 V1 디스크에 가장 적합하지만 표준 SKU(SSD 또는 HDD) 디스크에 대해서는 보장되지 않습니다.

드물게 전체 영역 중단이 발생하는 경우 확장 집합 내의 일부 또는 모든 인스턴스가 영향을 받을 수 있습니다.

장애 도메인 및 가용성 영역

장애 도메인은 동일한 전원, 네트워킹, 냉각 및 플랫폼 유지 관리 일정을 공유하는 하드웨어 노드의 가용성 영역 또는 데이터 센터 내의 장애 격리 그룹입니다. 다른 장애 도메인에 있는 VM 인스턴스는 동일한 계획된 중단이나 계획되지 않은 중단의 영향을 받지 않을 수 있습니다. 인스턴스가 지역 또는 영역 내의 장애 도메인에 분산되는 방법을 지정할 수 있습니다.

  • 최대 분산(platformFaultDomainCount = 1)
  • 정적 고정 분산(platformFaultDomainCount = 5)
  • 스토리지 디스크 장애 도메인에 맞게 분산(platformFaultDomainCount = 2 또는 3, 지역 배포에만 해당)

최대 확산을 사용하여 확장 집합은 각 영역 내에서 가능한 많은 장애 도메인에서 VM을 분산합니다. 이 분산은 영역당 5개의 장애 도메인보다 크거나 작을 수 있습니다. 정적 고정 분산을 사용하면 확장 집합은 영역당 정확히 5개의 장애 도메인에 VM을 분산합니다. 확장 집합이 할당 요청을 충족하는 영역당 5개의 개별 장애 도메인을 찾을 수 없으므로 요청이 실패합니다.

이러한 방식은 대부분의 경우 최적의 분산을 제공하므로 대부분의 워크로드에 대해 최대 분산을 사용하여 배포하는 것이 좋습니다. 별개의 하드웨어 격리 단위에 복제본을 분산시켜야 하는 경우 가용성 영역에 전체적으로 분산시키고 각 영역 내에서 최대 분산을 활용하는 것이 좋습니다.

참고 항목

최대 분산을 사용하면 VM이 분산되어 있는 장애 도메인의 수에 상관없이 확장 집합 VM 인스턴스 뷰 및 인스턴스 메타데이터에 하나의 장애 도메인만 표시됩니다. 각 영역 내 분산은 암시적입니다.

배치 그룹

Important

배치 그룹은 Uniform 오케스트레이션 모드에서 실행되는 Virtual Machine Scale Sets에만 적용됩니다.

확장 집합을 배포할 때 가용성 영역당 하나의 배치 그룹으로 배포하거나 영역마다 여러 개의 배치 그룹으로 배포할 수 있습니다. 지역(비영역) 확장 집합의 경우 지역에 단일 배치 그룹을 두거나 해당 지역에 다수의 배치 그룹을 두는 것입니다. singlePlacementGroup이라 불리는 확장 집합 속성이 false로 설정된 경우, 확장 집합은 다중 배치 그룹으로 구성될 수 있으며 0~1,000대의 VM을 가집니다. 기본값인 true로 설정하면 확장 집합은 단일 배치 그룹으로 구성되며 0~100개의 VM 범위를 갖습니다. 대부분 워크로드의 경우 더 큰 규모가 가능하도록 여러 배치 그룹을 사용하는 것이 좋습니다. API 버전 2017-12-01에서 확장 집합은 단일 영역 및 영역 간 확장 집합에 대해 기본적으로 여러 배치 그룹으로 설정되지만, 지역(비영역) 확장 집합에 대해서는 기본적으로 단일 배치 그룹으로 설정됩니다.

참고 항목

최대 분산을 사용하는 경우 여러 배치 그룹을 사용해야 합니다.

영역 균형

마지막으로 여러 영역에 배포된 확장 집합의 경우 "최상의 작업 영역 균형" 또는 "엄격한 영역 균형"을 선택할 수도 있습니다. 확장 집합은 각 영역에 확장 집합의 다른 모든 영역과 동일한 수의 VM +\- 1개 VM이 있는 경우 "균형"으로 간주됩니다. 예시:

  • 영역 1에 2개의 VM, 영역 2에 3개의 VM, 영역 3에 3개의 VM이 있는 확장 집합은 균형으로 간주됩니다. VM 수가 다른 영역은 하나 뿐이며 다른 영역보다 1개만 적습니다.
  • 영역 1에 1개의 VM, 영역 2에 3개의 VM, 영역 3에 3개의 VM이 있는 확장 집합은 불균형으로 간주됩니다. 영역 1에는 영역 2 및 3보다 VM이 2개 적게 있습니다.

확장 집합에서 VM이 만들어졌어도 해당 VM에서 확장은 배포되지 않을 수 있습니다. 확장이 실패한 이러한 VM은 확장 집합이 분산된 경우를 결정할 때에 여전히 계산됩니다. 예를 들어 영역 1에 3개의 VM, 영역 2에 3개의 VM, 영역 3에 3개의 VM이 있는 확장 집합은 모든 확장이 영역 1에서 실패하고 모든 확장이 영역 2 및 3에서 성공한 경우에도 균형으로 간주됩니다.

최상의 영역 균형을 사용하면 확장 집합은 균형을 유지하면서 규모 확장 및 감축을 시도합니다. 그러나 어떤 이유로 영역 균형을 조정할 수 없는 경우(예: 하나의 영역이 다운되어 확장 집합에서 해당 영역에 새 VM을 만들 수 없는 경우) 확장 집합을 사용하면 일시적인 불균형을 성공적으로 스케일 인 또는 아웃할 수 있습니다. 후속 스케일 아웃 시도에서 확장 집합은 확장 집합의 균형을 이루기 위해 VM이 더 많이 필요한 영역에 VM을 추가합니다. 마찬가지로 후속 규모 축소 시도에서 확장 집합은 확장 집합이 균형을 이루기 위해 더 적은 VM이 필요한 영역에서 VM을 제거합니다. "엄격한 영역 균형"을 사용하면 확장 집합은 규모 확장 또는 축소 시도에 실패하고 그렇게 하는 경우 불균형이 발생합니다.

최상의 영역 균형을 사용하려면 zoneBalancefalse로 설정합니다. 이 설정은 API 버전 2017-12-01에서 기본값입니다. 엄격한 영역 균형을 사용하려면 zoneBalancetrue로 설정합니다.

참고 항목

확장 집합의 영역 속성에 둘 이상의 영역이 포함된 경우에만 zoneBalance 속성을 설정할 수 있습니다. 영역이 없거나 하나의 영역만 지정된 경우 zoneBalance 속성을 설정하지 않아야 합니다.

영역 확장 또는 영역 확장 집합 만들기

Virtual Machine Scale Set를 배포하면 지역에서 단일 가용성 영역 또는 여러 영역을 선택 수 있습니다.

다음 방법 중 하나를 사용하여 가용성 영역을 사용하는 확장 집합을 만들 수 있습니다.

Azure Portal 사용

가용성 영역을 사용하는 확장 집합을 만드는 프로세스는 시작 문서에 자세히 설명된 프로세스와 같습니다. 지원되는 Azure 지역을 선택할 때 다음 예제에 표시된 대로 하나 이상의 사용 가능한 지역에 확장 집합을 만들 수 있습니다.

단일 가용성 영역에서 확장 집합 만들기

확장 집합과 Azure Load Balancer 및 공용 IP 주소와 같은 지원 리소스가 지정된 단일 지역에서 만들어집니다.

Azure CLI 사용

가용성 영역을 사용하는 확장 집합을 만드는 프로세스는 시작 문서에 자세히 설명된 프로세스와 같습니다. 가용성 영역을 사용하려면 지원되는 Azure 지역에 확장 집합을 만들어야 합니다.

--zones 매개 변수를 az vmss create 명령에 추가하고, 사용할 지역(예: 지역 1, 2 또는 3)을 지정합니다.

az vmss create \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --image <SKU Image> \
    --upgrade-policy-mode automatic \
    --admin-username azureuser \
    --generate-ssh-keys \
    --zones 1 2 3

지정한 영역에 확장 집합 리소스와 VM을 모두 만들고 구성하는 데 몇 분 정도 걸립니다. 영역 중복 확장 집합 및 네트워크 리소스의 전체 예제는 이 샘플 CLI 스크립트를 참조하세요.

Azure PowerShell 사용

가용성 영역을 사용하려면 지원되는 Azure 지역에 확장 집합을 만들어야 합니다. -Zone 매개 변수를 New-AzVmssConfig 명령에 추가하고 사용할 영역(예: 영역 1, 2 또는 3)을 지정합니다.

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS2" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicy "Automatic" `
  -Zone "1", "2", "3"

Azure 리소스 관리자 템플릿 사용

가용성 영역을 사용하는 확장 집합을 만드는 프로세스는 Linux 또는 Windows용 시작 문서에 자세히 설명된 프로세스와 같습니다.

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "myScaleSet",
  "location": "East US 2",
  "apiVersion": "2017-12-01",
  "zones": [
        "1",
        "2",
        "3"
      ]
}

공용 IP 주소 또는 부하 분산 장치를 만드는 경우 "sku": {"name":"Standard"} 속성을 지정하여 영역 중복 네트워크 리소스를 만듭니다. 또한 모든 트래픽을 허용하는 네트워크 보안 그룹 및 규칙을 만들어야 합니다. 자세한 내용은 Azure Load Balancer 표준 개요표준 Load Balancer 및 가용성 영역을 참조하세요.

영역 중복 확장 집합 및 네트워크 리소스의 전체 예제는 샘플 Resource Manager 템플릿을 참조하세요.

가용성 영역을 추가하도록 확장 집합 업데이트

크기 조정을 수정하여 VM 인스턴스를 분산할 영역 집합을 확장할 수 있습니다. 확장하면 지역 가용성 SLA(99.95%)보다 더 높은 영역 가용성 SLA(99.99%)를 활용할 수 있습니다. 또는 확장 집합을 확장하여 확장 집합을 만들 때 사용할 수 없는 새로운 가용성 영역을 활용합니다.

Important

가용성 영역을 추가하기 위한 Virtual Machine Scale Sets 업데이트는 현재 미리 보기로 제공됩니다. 추가 사용 약관에 동의하는 조건으로 미리 보기를 사용할 수 있습니다. 이 기능의 몇 가지 측면은 일반 공급(GA) 전에 변경될 수 있습니다.

Important

이 기능은 Virtual Machine Scale Sets의 상태 비저장 워크로드를 위한 것입니다. 상태 저장 워크로드가 있거나 Service Fabric 또는 Azure Kubernetes Services와 함께 사용되는 확장 집합은 영역 확장에 지원되지 않습니다.

이 기능은 API 버전 2023-03-01 이상에서 사용할 수 있습니다.

영역 확장 기능을 사용하도록 구독 활성화

구독 시 4개의 기능 플래그를 등록해야 합니다.

az feature register --namespace Microsoft.Compute --name VmssAllowRegionalToZonalMigration
az feature register --namespace Microsoft.Compute --name VmssAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowRegionalToZonalMigration

다음을 사용하여 각 기능의 등록 상태를 확인할 수 있습니다.

az feature show --namespace Microsoft.Compute --name \<feature-name\>

가용성 영역을 사용하도록 확장 집합 확장

확장 집합을 업데이트하여 인스턴스를 하나 이상의 추가 가용성 영역(지역에서 지원하는 가용성 영역 수까지)으로 스케일 아웃할 수 있습니다. 영역을 지원하는 지역의 경우 최소 영역 수는 3개입니다.

Important

확장 집합을 추가 영역으로 확장하면 원래 인스턴스가 마이그레이션되거나 변경되지 않습니다. 스케일 아웃하면 새 인스턴스가 만들어지고 선택한 가용성 영역에 균등하게 분산됩니다. 확장 집합을 스케일 인하면 모든 지역 인스턴스가 먼저 제거되도록 우선 순위가 지정됩니다. 그 후에는 스케일 인 정책에 따라 인스턴스가 제거됩니다.

영역 확장 집합으로 확장하는 작업은 다음 3단계로 수행됩니다.

  1. 영역 확장 준비
  2. 확장 집합의 영역 매개 변수 업데이트
  3. 새 영역 인스턴스 추가 및 원래 인스턴스 제거

영역 확장 준비

Warning

이 기능을 사용하면 확장 집합에 영역을 추가할 수 있습니다. 영역을 추가한 후에는 지역 확장 집합으로 돌아가거나 영역을 제거할 수 없습니다.

영역 확장을 준비하려면 다음을 수행합니다.

  • 더 많은 인스턴스를 처리할 수 있도록 선택한 지역의 VM 크기에 대한 할당량이 충분한지 확인합니다.
  • 사용 중인 VM 크기 및 디스크 유형을 원하는 모든 영역에서 사용할 수 있는지 확인합니다. 컴퓨팅 리소스 SKU API를 사용하여 어떤 영역에서 어떤 크기를 사용할 수 있는지 확인할 수 있습니다.
  • 확장 집합 구성이 영역 확장 집합에 대해 유효한지 확인합니다.
    • platformFaultDomainCount는 1 또는 5로 설정되어야 합니다. 영역 배포에는 2개 또는 3개의 장애 도메인이 있는 고정 분산이 지원되지 않습니다.
    • 영역 확장 중에는 용량 예약이 지원되지 않습니다. 확장 집합이 완전히 영역화되면(더 이상 지역 인스턴스가 없음) 확장 집합에 용량 예약 그룹을 추가할 수 있습니다.
    • Azure Dedicated Host 배포는 지원되지 않습니다.

확장 집합에서 영역 매개 변수 업데이트

확장 집합을 업데이트하여 영역 매개 변수를 변경합니다.

  1. 업데이트하려는 확장 집합으로 이동합니다.
  2. 확장 집합 방문 페이지의 속성 탭에서 가용성 영역 속성을 찾아 편집을 누릅니다.
  3. 위치 편집 대화 상자에서 원하는 영역을 선택합니다.
  4. 적용을 선택합니다.

새 영역 인스턴스 추가 및 원래 인스턴스 제거

수동으로 스케일 아웃 및 스케일 인

확장 집합의 용량을 업데이트하여 인스턴스를 더 추가합니다. 새 용량은 원래 용량에 새 인스턴스 수를 더한 값으로 설정해야 합니다. 예를 들어 확장 집합에 5개의 지역 인스턴스가 있고 각 3개 영역에 3개의 인스턴스가 있도록 스케일 아웃하려는 경우 용량을 14로 설정해야 합니다.

동일한 ARM 템플릿 또는 REST API 호출에서 영역 매개 변수 및 확장 집합 용량을 업데이트할 수 있습니다.

새 인스턴스가 준비되면 확장 집합을 스케일 인하여 원래 지역 인스턴스를 제거합니다. 특정 지역 인스턴스를 수동으로 삭제하거나 확장 집합 용량을 줄여 스케일 인할 수 있습니다. 확장 집합 용량을 줄여 스케일 인하는 경우 플랫폼은 항상 지역 인스턴스를 제거한 다음, 스케일 인 정책을 따릅니다.

롤링 업그레이드 + MaxSurge를 사용하여 자동화

롤링 업그레이드 + MaxSurge를 사용하면 새 영역 인스턴스가 만들어지고 일괄적으로 최신 크기 조정 모델을 통해 최신 상태로 만들어집니다. 새 인스턴스의 일괄 처리가 확장 집합에 추가되고 정상으로 보고되면 이전 인스턴스의 일괄 처리가 확장 집합에서 자동으로 제거됩니다. 모든 인스턴스가 최신 상태가 될 때까지 계속 업그레이드됩니다.

Important

MaxSurge를 사용하는 롤링 업그레이드는 현재 공개 미리 보기 상태로 제공됩니다. VMSS Uniform Orchestration 모드에서만 사용할 수 있습니다.

알려진 문제 및 제한 사항

  • 이 기능은 Virtual Machine Scale Sets의 상태 비저장 워크로드를 대상으로 합니다.

  • Service Fabric 또는 Azure Kubernetes Service를 실행하는 확장 집합은 지원되지 않습니다.

  • 영역을 제거하거나 바꿀 수 없으며 영역만 추가할 수 있습니다.

  • 영역 확장 또는 영역 확장 집합에서 지역 확장 집합으로 업데이트할 수 없습니다.

  • platformFaultDomainCount는 1 또는 5로 설정되어야 합니다. 영역 배포에는 2개 또는 3개의 장애 도메인이 있는 고정 분산이 지원되지 않습니다.

  • 영역 확장 중에는 용량 예약이 지원되지 않습니다. 확장 집합이 완전히 영역화되면(더 이상 지역 인스턴스가 없음) 확장 집합에 용량 예약 그룹을 추가할 수 있습니다.

  • Azure Dedicated Host 배포는 지원되지 않습니다.

다음 단계

지금까지 가용성 영역에서 확장 집합을 만들었으므로 Virtual Machine Scale Sets에 애플리케이션 배포 또는 Virtual Machine Scale Sets에 자동 크기 조정 사용 방법을 알아볼 수 있습니다.