培训
模块
优化 Azure Kubernetes 服务 (AKS) 上的计算成本 - Training
了解可在 Azure 上采用哪些策略来通过使用 Azure Kubernetes 服务 (AKS) 优化云原生应用程序开发过程。
认证
Microsoft Certified: Azure Virtual Desktop Specialty - Certifications
在 Microsoft Azure 上为任何设备计划、交付、管理和监视虚拟桌面体验和远程应用。
你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Batch 提供现成虚拟机 (VM) 来降低 Batch 工作负载的成本。 现成 VM 提供较大的经济型计算能力,使新型 Batch 工作负载成为可能。
现成 VM 利用 Azure 中多余的容量。 在池中指定现成 VM 时,Azure Batch 可以自动使用此多余容量(如果可用)。
使用现成 VM 的弊端是这些 VM 可能并不总是可用,也有可能随时被占用,具体取决于可用的容量。 出于此原因,对于作业完成时间很灵活且工作分布在多个 VM 上的批处理和异步处理工作负载,最适合使用现成 VM。
与专用 VM 相比,现成 VM 的价格更低。 若要深入了解定价,请参阅 Batch 定价。
Batch 提供两种类型的低成本可占用 VM:
获得的节点类型取决于 Batch 帐户的池分配模式,可在创建帐户期间设置该模式。 使用用户订阅池分配模式的 Batch 帐户始终会获得现成 VM。 使用 Batch 托管池分配模式的 Batch 帐户始终会获得低优先级 VM。
警告
2025 年 9 月 30 日之后将停用低优先级 VM。 在此之前,请在 Batch 中迁移为现成 VM。
Azure 现成 VM 与 Batch 低优先级 VM 类似,但行为上存在一些差异。
点 VM | 低优先级 VM | |
---|---|---|
支持的 Batch 帐户 | 用户订阅 Batch 帐户 | Batch 托管的 Batch 帐户 |
支持的 Batch 池配置 | 虚拟机配置 | 虚拟机配置和云服务配置(已弃用) |
可用区域 | 支持现成 VM 的所有区域 | 除由世纪互联运营的 Microsoft Azure 以外的所有区域 |
客户资格 | 不适用于某些订阅产品/服务类型。 详细了解现成 VM 的限制。 | 适用于所有 Batch 客户 |
可能的逐出原因 | 容量 | 容量 |
定价模型 | 相对于标准 VM 价格的可变折扣 | 相对于标准 VM 价格的固定折扣 |
配额模型 | 受限于订阅的核心配额 | 受限于 Batch 帐户的核心配额 |
可用性 SLA | 无 | 无 |
Azure Batch 提供多种功能来方便你使用现成 VM 并从中受益:
许多 Batch 工作负载非常适合现成 VM。 当作业被分解为多个并行任务时,或当你有许多作业横向扩展并分布在多个 VM 上时,请考虑使用现成 VM。
非常适合现成 VM 的批处理用例示例包括:
可以通过多种方式将 Batch 池配置为使用现成 VM:
计划使用现成 VM 时,请记住以下做法:
Batch 池可以包含专用 VM 和现成 VM(也称为计算节点)。 可为专用 VM 和现成 VM 设置计算节点的目标数量。 节点的目标数量指定要在池中包含的 VM 数量。
以下示例使用 Azure 虚拟机(在本例中为 Linux VM)创建一个目标为 5 个专用 VM 和 20 个现成 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 和现成 VM 的当前节点数:
int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;
池节点提供一个属性用于指示节点是专用 VM 还是现成 VM:
bool? isNodeDedicated = poolNode.IsDedicated;
现成 VM 偶尔可能会被抢占。 如果发生抢占,在被抢占的节点 VM 上运行的任务将重新排队,并在容量释放时重新运行。
对于虚拟机配置池,Batch 还将执行以下行为:
与仅包含专用 VM 的池一样,可以通过调用 Resize
方法或使用自动缩放来缩放包含现成 VM 的池。
池调整大小操作采用可更新 targetLowPriorityNodes
值的另一个可选参数:
pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);
池自动缩放公式支持现成 VM,如下所示:
$TargetLowPriorityNodes
的值。$CurrentLowPriorityNodes
的值。$PreemptedNodeCount
的值。 此变量返回处于已取代状态的节点的数量,并可让你根据不可用的已取代节点数增加或减少专用节点的数量。作业和任务可能需要对现成 VM 节点进行一些额外的配置:
JobManagerTask
属性包含 AllowLowPriorityNode
属性。 如果此属性为 true,则可以在专用或现成节点上计划作业管理器任务。 如果为 false,则只会在专用节点上计划作业管理器任务。AZ_BATCH_NODE_IS_DEDICATED
环境变量,使该应用程序能够确定它是在现成 VM 节点还是专用节点上运行。Azure 门户提供了现成节点的新指标。 这些指标是:
若要在 Azure 门户中查看这些指标,请执行以下操作:
培训
模块
优化 Azure Kubernetes 服务 (AKS) 上的计算成本 - Training
了解可在 Azure 上采用哪些策略来通过使用 Azure Kubernetes 服务 (AKS) 优化云原生应用程序开发过程。
认证
Microsoft Certified: Azure Virtual Desktop Specialty - Certifications
在 Microsoft Azure 上为任何设备计划、交付、管理和监视虚拟桌面体验和远程应用。