Batch 워크로드에서 스폿 VM 사용

Azure Batch는 스폿 VM(가상 머신)을 사용하여 Batch 워크로드의 비용을 줄입니다. 스폿 VM은 비용 절감을 위해 대량의 컴퓨팅 능력을 사용할 수 있도록 하여 새로운 유형의 Batch 워크로드를 가능하게 합니다.

스폿 VM은 Azure에서 남는 용량을 활용합니다. 풀에서 스폿 VM을 지정하면 Azure Batch는 가능한 경우 이러한 남는 용량을 사용할 수 있습니다.

스폿 VM 사용에 대한 장단점은 해당 VM을 항상 사용할 수 없거나 사용 가능한 용량에 따라 언제든지 선점될 수 있다는 점입니다. 이러한 이유로 스폿 VM은 작업 완료 시간이 유연하고 작업이 여러 VM 간에 분산되어 있는 일괄 및 비동기 처리 워크로드에 가장 적합합니다.

Spot VM은 전용 VM에 비해 저렴한 가격으로 제공됩니다. 가격 책정에 대한 자세한 내용은 Batch 가격 책정을 참조하세요.

스폿 VM과 우선 순위가 낮은 VM 간의 차이점

Batch는 다음과 같은 두 가지 유형의 저비용 선점 가능한 VM을 제공합니다.

  • 단일 인스턴스 VM 또는 Virtual Machine Scale Sets로 사용할 수 있는 최신 Azure 전체 제품인 스폿 VM.
  • Azure Batch을 통해서만 사용할 수 있는 레거시 제품인 우선 순위가 낮은 VM.

가져오는 노드 유형은 계정을 만드는 동안 설정할 수 있는 Batch 계정의 풀 할당 모드에 따라 달라집니다. 사용자 구독 풀 할당 모드를 사용하는 Batch 계정은 항상 스폿 VM을 가져옵니다. Batch 관리 풀 할당 모드를 사용하는 Batch 계정은 항상 우선 순위가 낮은 VM을 가져옵니다.

Warning

우선 순위가 낮은 VM은 2025년 9월 30일 이후에 사용 중지됩니다. 그 전에 Batch에서 스폿 VM으로 마이그레이션하세요.

Azure 스폿 VM 및 Batch 우선 순위가 낮은 VM은 비슷하지만 동작은 약간 다릅니다.

스폿 VM 낮은 우선 순위 VM
지원되는 Batch 계정 사용자 구독 Batch 계정 Batch 관리 Batch 계정
지원되는 Batch 풀 구성 가상 머신 구성 Virtual Machine 구성 및 클라우드 서비스 구성(사용되지 않음)
사용 가능한 지역 스폿 VM을 지원하는 모든 지역 21Vianet에서 운영하는 Microsoft Azure를 제외한 모든 지역
고객 자격 일부 구독 제품 유형에는 사용할 수 없습니다. 스폿 제한에 대해 자세히 알아봅니다. 모든 Batch 고객에게 사용 가능
가능한 제거 원인 용량 용량
가격 책정 모델 표준 VM 가격을 기준으로 하는 가변 할인 표준 VM 가격을 기준으로 하는 고정 할인
할당량 모델 구독의 코어 할당량에 따라 달라질 수 있습니다. Batch 계정의 코어 할당량에 따라 달라집니다.
가용성 SLA 없음 없음

스폿 VM에 대한 Batch 지원

Azure Batch는 스폿 VM을 쉽게 활용하고 혜택을 얻을 수 있도록 하는 몇 가지 기능을 제공합니다.

  • Batch 풀은 전용 VM 및 스폿 VM을 모두 포함할 수 있습니다. 각 유형의 VM 수는 풀을 만들 때 명시적 크기 조정 작업을 사용하거나 자동 크기 조정을 사용하여 기존 풀에 대해 언제든지 변경할 수 있도록 지정할 수 있습니다. 작업 및 태스크 전송은 풀의 VM 유형과 관계없이 변경되지 않은 상태로 유지될 수 있습니다. 작업을 가능한 한 경제적으로 실행할 수 있게 스폿 VM을 완전히 사용하도록 풀을 구성할 수도 있지만 용량이 최소 임계값 아래로 떨어질 경우 작업이 계속 실행되도록 하기 위해 전용 VM을 스핀업할 수 있습니다.
  • Batch 풀은 목표 개수의 스폿 VM을 자동으로 검색합니다. VM이 선점되거나 사용할 수 없는 경우 Batch는 손실된 용량을 대체하고 목표 수준을 복구하려고 합니다.
  • 작업이 중단되면 Batch는 작업을 검색하고 자동으로 다시 큐에 넣어 다시 실행합니다.
  • 스폿 우선 VM은 전용 VM의 vCPU 할당량과는 다른 별도의 코어 할당량을 갖습니다. 스폿 VM이 비용이 덜 들기 때문에 스폿 VM에 대한 할당량은 전용 VM에 대한 할당량보다 높습니다. 자세한 내용은 Batch 서비스 할당량 및 제한을 참조하세요.

고려 사항 및 사용 사례

대부분 Batch 워크로드는 스폿 VM에 적합합니다. 작업이 여러 병렬 태스크로 분할되거나 여러 VM에 걸쳐 스케일 아웃 및 분산되는 많은 작업이 있는 경우 스폿 VM을 사용하는 것이 좋습니다.

스폿 VM에 적합한 일괄 처리 사용 사례의 몇 가지 예는 다음과 같습니다.

  • 개발 및 테스트: 특히 대규모 솔루션을 개발 중인 경우 상당한 비용 절감을 실현할 수 있습니다. 모든 유형의 테스트가 혜택을 볼 수 있지만 대규모 부하 테스트 및 회귀 테스트에 사용하면 아주 좋습니다.
  • 주문형 용량 보완: 스폿 VM은 일반적인 전용 VM을 보완하는 데 사용될 수 있습니다. 사용 가능한 경우 작업의 크기를 조정하여 더 낮은 비용으로 더 빠르게 완료할 수 있고, 사용 가능하지 않은 경우 전용 VM의 기준만 사용할 수 있게 유지됩니다.
  • 유연한 작업 실행 시간: 작업이 완료되어야 하는 시간에 유연성이 있으면 잠재적인 용량 감소를 허용할 수 있습니다. 그러나 스폿 VM이 추가되면 작업이 더 빠르고 저렴한 비용으로 실행되는 경우가 많습니다.

Batch 풀은 몇 가지 방법으로 스폿 VM을 사용하도록 구성될 수 있습니다.

  • 풀은 스폿 VM만 사용할 수 있습니다. 이 경우 Batch는 사용 가능한 경우 선점된 용량을 모두 복구합니다. 이 구성은 작업을 실행하는 가장 경제적인 방법입니다.
  • Spot VM은 고정된 전용 VM 기준과 함께 사용할 수 있습니다. 고정된 전용 VM의 수가 있으면 항상 일정한 용량을 작업 처리에 사용할 수 있도록 보장됩니다.
  • 풀에서 전용 VM과 스폿 VM의 동적 혼합을 사용할 수 있으므로 좀 더 저렴한 스폿 VM만 사용되고, 필요할 때는 높은 가격의 전용 VM이 스케일 업됩니다. 이 구성은 최소한의 용량으로 작업을 계속 진행할 수 있도록 합니다.

Spot VM 사용을 계획할 때 다음 사례를 염두에 두세요.

  • Azure에서 남는 용량을 최대한 활용하기 위해 적절한 작업을 스케일 아웃할 수 있습니다.
  • 경우에 따라 VM을 사용할 수 없거나 선점되면 작업에 대한 용량이 줄어들어 태스크가 중단되고 다시 실행될 수 있습니다.
  • 실행 시간이 더 짧은 태스크는 스폿 VM에서 가장 잘 작동합니다. 좀 더 긴 태스크를 포함하는 작업은 중단될 경우 더 많은 영향을 받을 수 있습니다. 장기 실행 작업이 검사점 설정을 구현하여 실행될 때 진행 상황을 저장하는 경우 이 영향이 줄어들 수 있습니다.
  • 여러 VM을 활용하는 장기 실행 MPI 작업은 스팟 VM에 적합하지 않습니다. 하나의 선점된 VM으로 인해 전체 작업을 다시 실행해야 할 수 있기 때문입니다.
  • NSG(네트워크 보안 그룹) 규칙을 잘못 구성하면 스폿 노드를 사용할 수 없는 것으로 표시할 수 있습니다.

스폿 VM을 사용하여 풀 만들기 및 관리

Batch 풀은 전용 VM 및 스폿 VM(컴퓨팅 노드라고도 함)을 둘 다 포함할 수 있습니다. 전용 및 스폿 VM 둘 다에 대해 컴퓨팅 노드의 목표 수를 설정할 수 있습니다. 목표 노드 수는 풀에 유지하려는 VM의 수를 지정합니다.

다음 예제에서는 5개의 전용 VM과 20개의 스폿 VM을 대상으로 하는 Azure 가상 머신(이 경우 Linux VM)을 사용하여 풀을 만듭니다.

ImageReference imageRef = new ImageReference(
    publisher: "Canonical",
    offer: "UbuntuServer",
    sku: "20.04-LTS",
    version: "latest");

// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
    new VirtualMachineConfiguration("batch.node.ubuntu 20.04", imageRef);

pool = batchClient.PoolOperations.CreatePool(
    poolId: "vmpool",
    targetDedicatedComputeNodes: 5,
    targetLowPriorityComputeNodes: 20,
    virtualMachineSize: "Standard_D2_v2",
    virtualMachineConfiguration: virtualMachineConfiguration);

전용 및 스폿 VM 둘 다의 현재 노드 수를 가져올 수 있습니다.

int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;

풀 노드에는 해당 노드가 전용 VM인지 또는 스폿 VM인지를 나타내는 속성이 있습니다.

bool? isNodeDedicated = poolNode.IsDedicated;

스팟 VM은 선점되는 경우가 있습니다. 선점이 발생하면 선점된 노드 VM에서 실행 중인 작업이 다시 큐에 포함되고 용량이 반환될 때 다시 실행됩니다.

가상 머신 구성 풀의 경우 Batch는 다음 동작도 수행합니다.

  • 선점된 VM의 상태는 선점됨으로 업데이트됩니다.
  • VM은 효과적으로 삭제되므로 VM에 로컬로 저장된 모든 데이터는 손실됩니다.
  • 풀의 목록 노드 작업은 계속해서 선점된 노드를 반환합니다.
  • 풀은 계속해서 스폿 노드의 목표 개수가 사용 가능해지도록 하려고 합니다. 대체 용량이 발견되면 노드는 해당 ID를 유지하지만 다시 초기화되며, 작업 예약에 사용되기 전에 먼저 만드는 중시작 중 상태를 거치게 됩니다.
  • 선점 수는 Azure Portal에서 메트릭으로 사용할 수 있습니다.

스폿 VM을 포함하는 풀 스케일링

전용 VM으로만 구성된 풀의 경우처럼, Resize 메서드를 호출하거나 자동 크기 조정을 사용하여 스폿 VM을 포함하는 풀의 크기를 조정할 수 있습니다.

풀 크기 조정 작업은 targetLowPriorityNodes 값을 업데이트하는 두 번째 선택적 매개 변수를 사용합니다.

pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);

풀 자동 스케일링 수식은 스폿 VM을 다음과 같이 지원합니다.

  • 서비스 정의 변수 $TargetLowPriorityNodes의 값을 가져오거나 설정할 수 있습니다.
  • 서비스 정의 변수 $CurrentLowPriorityNodes의 값을 가져올 수 있습니다.
  • 서비스 정의 변수 $PreemptedNodeCount의 값을 가져올 수 있습니다. 이 변수는 선점 상태의 노드 수를 반환하고 사용할 수 없는 선점된 노드 수에 따라 전용 노드의 수를 늘리거나 줄일 수 있도록 합니다.

작업 및 태스크 구성

작업에는 스폿 노드에 대한 몇 가지 추가 구성이 필요할 수 있습니다.

  • 작업의 JobManagerTask 속성은 AllowLowPriorityNode 속성을 갖습니다. 이 속성이 true이면 작업 관리자 태스크는 전용 또는 스폿 노드에서 예약될 수 있습니다. false이면 작업 관리자 태스크는 전용 노드에서만 예약됩니다.
  • 작업 애플리케이션에서 AZ_BATCH_NODE_IS_DEDICATED환경 변수를 사용할 수 있으므로 Spot 또는 전용 노드에서 실행 중인지 확인할 수 있습니다.

스폿 VM에 대한 메트릭 보기

스폿 노드의 경우 Azure Portal에서 새 메트릭을 사용할 수 있습니다. 이러한 메트릭은 다음과 같습니다.

  • 우선 순위가 낮은 노드 수
  • 우선 순위가 낮은 코어 수
  • 선점된 노드 수

Azure Portal에서 이러한 메트릭을 확인하려면 다음을 수행합니다.

  1. Azure Portal에서 Batch 계정으로 이동합니다.
  2. 모니터링 섹션에서 메트릭을 선택합니다.
  3. 메트릭 목록에서 원하는 메트릭을 선택합니다.

제한 사항

  • Batch의 스폿 VM은 최대 가격 설정을 지원하지 않으며 가격 기반 제거를 지원하지 않습니다. 용량상의 이유로만 제거할 수 있습니다.
  • 스폿 VM은 더 이상 사용되지 않는 클라우드 서비스 구성 풀이 아닌 Virtual Machine 구성 풀에만 사용할 수 있습니다.
  • 일부 클라우드, VM 크기 및 구독 제품 유형에는 스폿 VM을 사용할 수 없습니다. 스폿 VM 제한에 대해 자세히 알아봅니다.
  • 현재 임시 OS 디스크Stop-Deallocate의 서비스 관리 제거 정책으로 인해 스폿 VM에서 지원되지 않습니다.

다음 단계