你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

计划管理 Azure Batch 的成本

本文介绍如何计划和管理 Azure Batch 的成本。 在部署服务之前,可以使用 Azure 定价计算器估算 Azure Batch 的成本。 之后在部署 Azure 资源时,查看预估成本。

在开始运行 Azure Batch 工作负载后,请使用 Microsoft 成本管理功能来设置预算和监视成本。 还可以查看预测成本并识别支出趋势,以确定可能需要实施措施的领域。Azure Batch 的成本只是 Azure 账单中每月成本的一部分。 尽管本文介绍了如何为 Azure Batch 计划和管理成本,但你需要为 Azure 订阅中使用的所有 Azure 服务和资源(包括第三方服务)付费。

先决条件

成本管理中的成本分析支持大多数 Azure 帐户类型,但不支持所有帐户类型。 若要查看支持的帐户类型的完整列表,请参阅了解成本管理数据。 若要查看成本数据,你至少需要对 Azure 帐户具有读取访问权限。 若要了解如何分配对 Microsoft 成本管理数据的访问权限,请参阅分配对数据的访问权限

使用 Azure Batch 之前请估算成本

添加虚拟机之前,请使用 Azure 定价计算器估算成本。

  1. 在“产品”选项卡上,转到“计算”部分或在搜索栏中搜索“Batch”。 在“Batch”磁贴上,选择“添加到估算”,然后向下滚动到“你的估算”部分。

  2. 请注意,Azure Batch 是一项免费服务,与 Azure Batch 关联的成本是由运行工作负载的基础资源产生的。 将 Azure Batch 添加到估算值时,定价计算器会自动为“云服务”和“虚拟机”创建选择。 可以在每个产品的文档中详细了解 Azure 云服务Azure 虚拟机 (VM)。 关于 Azure Batch 的预算成本,你需要明白虚拟机是最重要的资源。

    从下拉菜单中选择选项。 有多个选项可供选择。 对估计总数影响最大的选项包括虚拟机的操作系统、操作系统许可证(如果适用)、在“实例”下选择的“VM 大小”、选择的实例数,以及实例每月运行的时间量。

    请注意,总估算值会因所选的选项不同而变化。 估算值显示在“你的估算值”部分的上角和底部。

    显示 Azure Batch 可用的估算部分和主要选项的屏幕截图。

    可以从计划管理虚拟机成本文档了解有关运行虚拟的成本的详细信息。

了解 Azure Batch 的完整计费模型

Azure Batch 搜索在 Azure 基础结构上运行,部署新资源时,该基础结构会随之产生成本。 用户务必了解,是否可能产生其他基础结构成本。

Azure Batch 的收费方式

Azure Batch 是一项免费服务。 Azure Batch 本身是免费的。 不过,用于运行 Batch 工作负荷的基础计算资源和软件许可证是收费的。 成本可能产生于池中的虚拟机、从 VM 进行的数据传输,或云中存储的任何输入或输出数据。

Azure Batch 可能产生的成本

尽管 Azure Batch 本身是一项免费服务,但运行工作负荷的许多基础资源并不是免费的。 这些设置包括:

  • 虚拟机
  • 存储
    • 使用应用包将应用部署到 Batch 节点虚拟机时,还需要为应用包使用的 Azure 存储资源付费。 你还要支付任何输入或输出文件(例如资源文件和其他日志数据)的存储费。
    • 通常,与 Batch 关联的存储数据的成本要比计算资源的成本低得多。
  • 在某些情况下,为负载均衡器
  • 网络资源
    • 对于虚拟机配置池,将使用标准负载均衡器,这需要静态 IP 地址。 Batch 使用的负载均衡器对于在用户订阅模式下配置的帐户可见,但对于在 Batch 服务模式下配置的帐户不可见。
    • 传入和传出 Batch 池 VM 的所有数据会产生标准负载均衡器费用。 从池节点检索数据的某些 Batch API(例如“获取任务/节点文件”)、任务应用程序包、资源/输出文件和容器映像也会产生费用。
    • 虚拟网络
  • 根据要将哪些服务用于 Azure Batch 解决方案,可能会产生额外的费用。 经常与 Batch 配合使用的、可能会产生相关成本的服务包括:
    • Application Insights
    • 数据工厂
    • Azure Monitor

删除资源后可能会产生成本

删除 Azure Batch 资源后,以下资源可能会继续存在。 它们会持续产生成本,直到将其删除。

  • 虚拟机
  • 除 OS 和本地磁盘外部署的任何磁盘
  • 虚拟网络
    • 虚拟 NIC 和公共 IP(如果适用)可以设置为与虚拟机一起删除
  • 带宽
  • 负载均衡器

对于虚拟网络,将按订阅和按区域对一个虚拟网络计费。 虚拟网络不能跨区域或订阅。 在 vNet 设置中设置专用终结点可能还会产生费用。

带宽按使用情况收费;传输的数据越多,收取的费用就越多。

对 Azure Batch 使用 Azure 预付款

虽然 Azure Batch 是一项免费服务,但可以使用 Azure 预付费额度来支付基础资源费用。 但是,不能使用 Azure 预付款额度来支付第三方产品和服务(包括 Azure 市场中的)的费用。

查看成本分析并创建预算

将 Azure 资源用于 Azure Batch 时,会产生成本。 Azure 资源使用情况单位成本因时间间隔(秒、分钟、小时和天)或(字节、MB 等)的单位使用情况而异。开始使用 Azure 资源之后便会产生成本,可以在成本分析中查看成本。 借助 Microsoft 成本管理,你可以规划、分析和减少开支,最大程度利用云投资。 你可以查看和筛选要查看和筛选的 Batch 成本,预测未来成本,设置支出限制并在达到这些限制时发出警报。

在 Azure 门户中,可以针对 Batch 池或 Batch 帐户创建预算和支出警报。 存在任何透支风险时,预算和警报可用于通知利益干系人,不过,支出警报可能会有所延迟,并可能存在略微超出预算的情况。

下面的屏幕截图显示了订阅的“成本分析”视图示例,筛选后只显示与所有 Batch 帐户关联的累计成本。 下图显示了所选时间段的总成本如何按已使用的服务、位置和计量分类。 尽管这是一个示例,并不能反映你看到的订阅成本,但通常情况下,为 Batch 池节点分配的虚拟机的成本最大。

显示 Azure 门户中订阅的所有 Batch 帐户的成本分析的屏幕截图。

可以通过指定“资源”筛选器来获取更高级别的成本分析详细信息。 对于 Batch 帐户,这些值是 Batch 帐户名和池名称。 这允许你查看特定池、多个池或一个或多个帐户的成本。

查看 Batch 池的成本分析

Batch 服务池分配模式

对于用 Batch 服务池分配模式创建的 Batch 帐户:

  1. 在 Azure 门户中,键入或选择“成本管理 + 计费”。
  2. 在“计费范围”部分选择你的订阅。
  3. 在“成本管理”下,选择“成本分析”。
  4. 选择“添加筛选器”。 在第一个下拉列表中,选择“资源”。
  5. 在第二个下拉列表中,选择 Batch 池。 选择池时,会看到该池的成本分析。 下面的屏幕快照显示了示例数据。 显示 Azure 门户中 Batch 池的成本分析的屏幕截图。

生成的成本分析显示了池的成本,以及此成本来自哪些资源。 在此示例中,池中使用的 VM 是成本最高的资源。

注意

此示例中的池使用虚拟机配置,这是针对大多数池建议的配置,根据虚拟机定价结构收费。 使用云服务配置的池根据云服务定价结构收费。

标记可以与 Batch 帐户相关联,从而允许标记用于进一步的成本筛选。 例如,可以使用标记将项目、用户或组信息与 Batch 帐户相关联。 标记当前无法与 Batch 池关联。

用户订阅池分配模式

对于使用用户订阅池分配模式创建的 Batch 帐户:

  1. 在 Azure 门户中,键入或选择“成本管理 + 计费”。
  2. 在“计费范围”部分选择你的订阅。
  3. 在“成本管理”下,选择“成本分析”。
  4. 选择“添加筛选器”。 在第一个下拉列表中,选择“标记”。
  5. 在第二个下拉列表中,选择“poolname”。
  6. 在第三个下拉列表中,选择“Batch 池”。 选择池时,会看到该池的成本分析。 下面的屏幕快照显示了示例数据。 显示 Azure 门户中用户订阅 Batch 池成本分析的屏幕截图。

请注意,如果你有兴趣查看用户订阅 Batch 帐户中所有池的成本数据,则可以在第二个下拉菜单中选择“batchaccountname”,并在第三个下拉菜单中选择 Batch 帐户的名称。

注意

用户订阅 Batch 帐户创建的池不显示在“资源”筛选器下,但在服务名称下筛选“虚拟机”时,其使用情况仍会显示。

为 Batch 池创建预算

可以创建预算,并在达到不同的预算百分比时(如 60%、80% 和 100%)发出成本警告。 预算可以指定一个或多个筛选器,因此,你可以在各种粒度监视 Batch 帐户成本并发出警报。

  1. 在“成本分析”页中,选择“预算: 无” 。
  2. 选择“创建新预算 >”。
  3. 使用出现的窗口专门为池配置预算。 有关详细信息,请参阅教程:创建和管理 Azure 预算

最大程度地降低 Azure Batch 相关的成本

你可能想要根据自己的情况尽可能地降低成本。 请考虑使用以下一种或多种策略来最大程度地提高工作负载效率并降低潜在成本。

减少池节点使用

与使用 Batch 相关的最大成本通常来自为池节点分配的虚拟机。 对于虚拟机配置池,用于 VM 操作系统磁盘的关联托管磁盘也会显著影响成本。

评估 Batch 应用程序,以确定作业任务是否充分利用了池节点,或者池节点的空闲时间是否超过了预期时间。 可以减少分配的池节点的数量,降低池节点纵向扩展率,或提高纵向缩减率,以提高利用率。

除了自定义监视之外,Batch 指标还有助于标识已分配但处于空闲状态的节点。 你可以使用 Azure 门户中的 Batch 监视指标来选择适用于大多数池节点状态的指标。 例如,可以查看“空闲节点计数”和“正在运行的节点计数”以指示池节点的使用情况。

确保池节点能够运行任务

为池列出的分配节点通常会产生成本,但池节点可能处于无法运行任务的状态,例如“unusable”或“starttaskfailed”。 Batch API 或指标可用于监视和检测此类 VM。 然后,可以确定这些状态的原因,并采取纠正措施来减少或消除这些不正常的节点。

使用正确的池节点 VM 大小

请确保使用适当的 VM 大小,以便 VM 在运行任务时得到充分利用,同时提供在所需时间内完成作业任务所需的性能。 在某些情况下(例如 CPU 使用率较低),池节点 VM 可能未充分利用。 可以通过选择价格较低的 VM 大小来节省成本。

若要确定 VM 利用率,可以在运行任务时登录到节点以查看性能数据,或使用监视功能(如 Application Insights)从池节点获取性能数据。

使用池槽减少节点要求

可以为一个池指定多个任务槽,以便可以在每个节点上并行运行相应的任务数。 可通过选择更大的 VM 大小和在节点上并行运行多个任务,使用池任务槽来减少池中使用的节点数,确保节点得到充分利用。 如果节点未充分利用,可以使用槽来提高利用率。 例如,对于单线程任务应用程序,每个核心可以配置一个槽。 槽数量可以比内核多。 例如,如果应用程序显著阻止等待返回对外部服务的调用,则此情况适用。

taskSchedulingPolicy 设置为 pack 有助于确保尽可能利用 VM,通过缩放可以更轻松地删除未运行任何任务的节点。

使用 Azure 现成虚拟机

Azure 现成 VM 通过利用 Azure 中的盈余计算容量来降低 Batch 工作负载的成本。 当你在池中指定现成 VM 时,Batch 使用此盈余来运行工作负荷。 使用低优先级 VM 而不是现成 VM 可能会节省大量成本。 请记住,现成 VM 不适合所有工作负荷,因为可能没有可用的容量可分配,或者它们可能会被抢占。

使用临时 OS 磁盘

默认情况下,池节点使用托管磁盘,这会产生费用。 某些 VM 大小的虚拟机配置池可使用临时 OS 磁盘来避免产生与托管磁盘相关的额外费用,临时磁盘会在 VM 缓存或临时 SSD 上创建 OS 磁盘。

为虚拟机实例购买预留容量

如果你打算长时间使用 Batch,可以通过对工作负载使用 Azure 预留来节省 VM 成本。 预留费率比即用即付费率低得多。 没有预留容量的虚拟机实例将按即用即付费率收费。 购买预留容量时,将应用预留折扣。 承诺为 VM 实例执行一年或三年计划,对 VM 使用情况(包括通过 Batch 池使用的 VM)应用大量折扣。

必须注意,预留折扣是“不用就会失效”。如果没有在一小时内使用匹配的资源,将丢失该小时的预留数量。 未使用的预留小时数无法结转,因此如果未使用,将丢失。 Batch 工作负荷通常根据负载缩放分配的 VM 数量,且负载随时间变化,甚至某个时段没有负载。 因此,需要谨慎确定预留量,因为如果 Batch VM 缩减到预留数量以下,预留小时数将丢失。

使用自动缩放

自动缩放根据当前作业的需求来动态缩放 Batch 池中的 VM 数。 自动缩放根据作业的生存期缩放池,确保仅在需要执行某个作业时才扩展和使用 VM。 如果该作业已完成或者没有任何作业,则 VM 会自动缩减以节省计算资源。 借助缩放,可以只使用所需的资源,从而降低 Batch 解决方案的总体成本。

后续步骤