가용성 영역에서 Azure Batch 풀 만들기
가용성 영역을 지원하는 Azure 지역에는 최소 3개의 개별 영역이 있으며, 각 영역에는 자체 독립 전원, 네트워크 및 냉각 시스템이 있습니다. 가상 머신 구성을 사용하여 Azure Batch 풀을 만드는 경우 가용성 영역에 전반에서 Batch 풀을 프로비전하도록 선택할 수 있습니다. 이 영역 정책을 사용하여 풀을 만들면 Azure 데이터 센터 수준 오류로부터 Batch 컴퓨팅 노드를 보호할 수 있습니다.
예를 들어 3 개의 가용성 영역을 지원하는 Azure 지역에서 영역 정책을 사용하여 풀을 만들 수 있습니다. 하나의 가용성 영역에 있는 Azure 데이터 센터에서 인프라 오류가 발생하는 경우 Batch 풀에는 다른 두 가용성 영역의 정상 노드가 남아 있으므로 작업 예약에 풀을 계속 사용할 수 있습니다.
지역별 지원 및 기타 요구 사항
Batch는 가용성 영역 지원 시 Azure에서 패리티를 유지 관리합니다. 영역 옵션을 사용하려면 지원되는 Azure 지역에 풀을 만들어야 합니다.
Batch 풀을 가용성 영역 전반에 할당하려면 풀이 생성되는 Azure 지역은 둘 이상의 영역에서 요청된 VM SKU를 지원해야 합니다. 리소스 SKU 목록 API를 호출하고 resourceSku의 locationinfo 필드를 확인하여 이 유효성을 검사할 수 있습니다. 요청된 VM SKU에 대해 둘 이상의 영역이 지원되는지 확인합니다.
사용자 구독 모드 Batch 계정에 대해 풀을 만드는 구독에 요청된 VM SKU에 대한 영역 제공 제한이 없는지 확인합니다. 이를 확인하려면 리소스 SKU 목록 API를 호출하고 ResourceSkuRestrictions를 확인합니다. 영역 제한이 있는 경우 지원 티켓을 제출하여 영역 제한을 제거할 수 있습니다.
또한 노드 간 통신을 사용하도록 설정하고 InfiniBand를 지원하는 VM SKU를 사용하는 경우 영역 정책을 사용하여 풀을 만들 수 없습니다.
가용성 영역에 Batch 풀 만들기
다음 예에서는 가용성 영역에서 Batch 풀을 만드는 방법을 보여 줍니다.
참고 항목
영역 정책을 사용하여 풀을 만들 때 Batch 서비스는 선택한 지역의 모든 가용성 영역에 풀을 할당하려고 합니다. 영역에서 특정 할당을 지정할 수는 없습니다.
Batch 관리 클라이언트 .NET SDK
var credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);
var batchAccountIdentifier = ResourceIdentifier.Parse("your-batch-account-resource-id");
BatchAccountResource batchAccount = _armClient.GetBatchAccountResource(batchAccountIdentifier);
var poolName = "pool2";
var imageReference = new BatchImageReference()
{
Publisher = "canonical",
Offer = "0001-com-ubuntu-server-jammy",
Sku = "22_04-lts",
Version = "latest"
};
string nodeAgentSku = "batch.node.ubuntu 22.04";
var batchAccountPoolData = new BatchAccountPoolData()
{
VmSize = "Standard_DS1_v2",
DeploymentConfiguration = new BatchDeploymentConfiguration()
{
VmConfiguration = new BatchVmConfiguration(imageReference, nodeAgentSku)
{
NodePlacementPolicy = BatchNodePlacementPolicyType.Zonal,
},
},
ScaleSettings = new BatchAccountPoolScaleSettings()
{
FixedScale = new BatchAccountFixedScaleSettings()
{
TargetDedicatedNodes = 5,
ResizeTimeout = TimeSpan.FromMinutes(15),
}
},
};
ArmOperation<BatchAccountPoolResource> armOperation = batchAccount.GetBatchAccountPools().CreateOrUpdate(
WaitUntil.Completed, poolName, batchAccountPoolData);
BatchAccountPoolResource pool = armOperation.Value;
Batch REST API
REST API URL
POST {batchURL}/pools?api-version=2021-01-01.13.0
client-request-id: 00000000-0000-0000-0000-000000000000
요청 본문
"pool": {
"id": "pool2",
"vmSize": "standard_a1",
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "20.04-lts"
},
"nodePlacementConfiguration": {
"policy": "Zonal"
}
"nodeAgentSKUId": "batch.node.ubuntu 20.04"
},
"resizeTimeout": "PT15M",
"targetDedicatedNodes": 5,
"targetLowPriorityNodes": 0,
"maxTasksPerNode": 3,
"enableAutoScale": false,
"enableInterNodeCommunication": false
}
다음 단계
- 풀, 노드, 작업 및 태스크와 같은 Batch 서비스 워크플로 및 기본 리소스에 대해 알아봅니다.
- Azure 가상 네트워크의 서브넷에서 풀을 만드는 방법을 알아봅니다.
- 공용 IP 주소가 없는 Azure Batch 풀을 만드는 방법을 알아봅니다.