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

风险网格计算解决方案

Azure Batch
Microsoft Entra ID
Azure ExpressRoute
Azure VPN 网关

本文提供了使用 Microsoft Azure 支持和增强银行业务风险网格计算的技术概述。 本文探讨推荐的系统和高级体系结构。

本文档适用于解决方案架构师,在某些情况下还适用于想要深入了解建议用于风险计算的解决方案的技术决策者。

简介

财务风险分析模型通常作为批处理作业进行处理。 它们繁重的计算负载对计算能力、数据访问和分析能力提出了很高的要求。 对风险网格计算的需求通常随时间推移而增长,计算资源的需求也会相应地增长。

Azure 中广泛的产品和服务意味着大多数问题可以有多个解决方案。 本文概述了对于使用 Microsoft Azure Batch 的银行风险网格计算解决方案来说,最有效的技术、模式和实践。

Azure Batch 是一项免费服务,提供经济高效且安全的解决方案。 该解决方案可为通常用于风险网格计算模型的基础结构和各个批处理阶段提供经济高效且安全的解决方案。 Azure Batch 可以使用混合网络或通过将整个批处理过程移动到 Azure 中来增强、扩展甚至替换当前的本地计算资源投资。 数据可以从云中向上和向下遍历或保留本地。 而其他数据可以在本地资源不足时在“迸发到云”模型中由计算节点处理。

Azure Batch 运行的剖析

批处理运行中通常至少有两个应用程序。 一个应用程序通常在“头节点”上运行,可将作业提交到池,有时安排计算节点。 还可以通过 Azure 门户配置业务流程。 另一个应用程序作为任务由计算节点运行(见图 1)。

计算节点应用程序将执行并行处理风险建模文件的任务。 可以在计算节点上安装并运行多个应用程序。

这些应用程序可以通过 Batch API 上传、也可以直接通过 Azure 门户上传或通过适用于 Batch 的 Azure CLI 命令上传。

Azure Batch 网格计算的示意图。

图 1:Azure Batch 网格计算

Azure Batch 处理运行由多个逻辑元素组成。 图 2 显示了批处理作业的逻辑模型。 池是批处理运行中涉及的 VM 的容器,并预配计算节点 VM。 池也是计算节点上安装的应用程序的容器。 作业将在池内创建并运行。 任务将由作业执行。 任务是运行辅助角色应用程序,并通过命令行指令调用。

辅助角色应用程序在创建后将安装到计算节点。

池、作业和任务

图 2:逻辑批处理概念模型

执行作业后,池将预配任何所需的辅助角色 VM 并安装辅助角色应用程序。 作业将任务分配给这些计算节点,这些计算节点反过来运行命令行指令 (CLI)。 CLI 脚本通常调用已安装的应用程序或脚本。

使用批处理通常遵循原型模式,如下所述:

  1. 首先,创建一个资源组,使之包含 Batch 资产。
  2. 在该资源组中创建 Batch 帐户。
  3. 创建链接的存储帐户。
  4. 创建可以预配辅助角色 VM 的池。
  5. 将计算节点应用程序或脚本上载到该池。
  6. 创建将任务分配给池中的 VM 的作业。
  7. 将该作业添加到池中。
  8. 开始批处理运行。
  9. 该作业会将要在计算节点上运行的任务排入队列。
  10. 计算节点在 VM 变得可用时运行任务。

图 3 显示了此过程的示意图。

批处理运行过程

图 3:逻辑批处理概念模型

任务完成后,删除计算节点以防在不使用时产生费用。 若要通过代码或门户删除它们,可以删除包含池,这将删除辅助角色 VM。

关于如何开始使用 Batch 的更多详细演练,请参阅 5 分钟快速入门,其中采用多种语言向你介绍整个过程,还展示了如何使用 Azure 门户。

批处理计划

Azure Batch 内置了一个计划程序,因此可以在门户中或通过 API 定义每次运行的计划。 批处理作业计划程序可以定义用来触发多个作业的多个计划。 每个作业都有其自己的属性,如作业开始和结束时所要执行的操作。 可以定期设置作业计划或一次性运行。

许多银行网格计算系统已经有其自己的计划服务。 可能无需立即将我的计划程序移动到 Azure。 可以无缝执行此操作,因为 Azure Batch 可以手动调用或通过 SDK 调用。 此功能可让计划仍在本地进行,并允许在 Azure 中处理工作负载。

批处理可以按预先确定的计划进行,也可以按需进行。 不管如何运行,都无需让未使用的计算节点 VM 保持活动状态。 使用数百个(甚至数千个)VM 计算节点时,可以通过取消预配已完成排队任务的服务器来大幅度节省成本。

计算节点应用程序

计算节点需要应用程序在调用任务后运行。 这些应用程序由公司编写以在将处理作业安装在辅助角色上时执行这些作业。 在银行业务风险网格计算方案中,此应用程序通常会执行将数据转换为特别适用于下游分析或其他处理的格式的工作。

向池中提供应用程序以分发到计算节点时,会在应用程序包中进行上载。 应用程序包可能是以前上载的应用程序包的另一个版本。 可以将多个应用程序包安装到一个计算节点。 作业包含要加载到辅助角色计算机上的应用程序包。

也可以按版本管理应用程序包部署。 如果已将多个版本的应用程序包加载到池中,则可以指定特定版本以用于批处理运行,如图 4 所示。 这可能在审核环境中或在公司想要重现前一次运行时有必要。 如果辅助角色应用程序中引入了 bug,则还可用于回滚目的。

批处理运行过程

图 4:计算节点任务应用程序版本控制

应用程序包以 .zip 文件格式上传到池。 该文件包含运行该应用程序的任务所需的应用程序二进制文件和支持文件。 该应用程序包有 2 种范围。 可以在池的范围或任务的范围内指定应用程序包。

池应用程序包

这些包部署到池中的每个计算节点。 计算节点 VM 进行预配、重新启动或重置映像后,如果存在更新的应用程序,则会安装任一池应用程序包的新副本。 可以将一个或多个应用程序包分配给池,这意味着计算节点将指定所有包。

任务应用程序包

针对任务级别的应用程序包仅安装到计划运行任务的计算节点。 任务应用程序包适合在一个池中运行多个作业时使用。

在聚合池级作业生成的数据时,任务应用程序非常有用。 风险网格计算方案可能与这些应用程序相关。 例如,任务应用程序可以运行一组风险计算,生成稍后在风险计算工作流中使用的数据。

缩放批处理作业

未充分利用计算资源时,银行通常会在周末或晚上执行风险分析批处理运行。 虽然此模型适用于一些银行,但它会过快增长而无法满足要求,因此需要更多资金来向网格中添加更多辅助角色计算机。

如果 Azure Batch 作业的运行时间太长,或者想提高 Batch 作业中的计算能力,Azure 提供了多个选项。

  1. 分配更多计算节点计算机进行横向扩展。
  2. 分配更多功能强大的计算节点计算机进行纵向扩展。 Azure 计算机可能会预配为满足内核和内存,甚至 GPU 计算能力的高性能需求。

注意:Microsoft HPC Pack 与 Batch 配合使用是更为复杂的模型,本文未作讨论。

在批处理群集中,可能只有两个处理 VM。 或者,可以有数千个同时在数千个 VM 计算节点上运行的任务,这些 VM 计算节点具有数万个内核。 每个 VM 负责一次运行一个任务。 池中的 VM 数可能会按负荷增加或减少时配置的比例手动或自动缩放。

迸发到云

当本地网格中的计算资源由于执行大型分析作业而不足时,“迸发到云”提供了通过在 Azure 中添加更多计算节点来增强这些资源的方法。 迸发到云是当本地资源的需求提高时,专用云或基础结构向云服务器分发其工作负载所采用的模型。

这些计算节点可以预配置为要在 Azure 的 IaaS 平台中预配的 Linux 或 Windows 虚拟机。 此外,服务器还可以预配并自动配置为使用 Tibco Gridserver 和 IBM Symphony 等现有投资。

自动缩放公式

可以在 Azure 门户中或通过使用自动缩放公式配置此弹性。 自动缩放公式是上载到批处理计划程序以便对批处理行为进行精细控制的脚本。 通过将节点与自动缩放公式关联来完成计算节点的池上的自动缩放。

下面是自动缩放公式的一个示例:公式指示自动缩放以一个 VM 开始,并根据需要扩展到 50 个 VM。 任务完成时,VM 会逐个变为可用状态,自动缩放公式会收缩池。

startingNumberOfVMs = 1;
maxNumberofVMs = 50;
pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second);
pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second));
$TargetDedicatedNodes=min(maxNumberofVMs, pendingTaskSamples);

其他缩放技术

还可以通过 Enable-AzureBatchAutoScale PowerShell cmdlet 来启用自动缩放。 通过 Enable-AzureBatchAutoScale cmdlet 可以自动缩放指定池。 示例如下。

  1. 第一个命令定义公式,然后将其保存到 $Formula 变量。
  2. 第二个命令使用 $Formula 中的公式在名为 RiskGridPool 的池上启用自动缩放。
C:\> $Formula = ‘startingNumberOfVMs = 1;
maxNumberofVMs = 50;
pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second?WT.mc_id=gridbanksg-docs-dastarr);
pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second));
$TargetDedicatedNodes=min(maxNumberofVMs, pendingTaskSamples);’;

C:\> Enable-AzureBatchAutoScale -Id "RiskGridPool" -AutoScaleFormula $Formula -BatchContext $Context

还可以使用 az batch pool resize 命令通过 Azure CLI 或通过 Azure 门户来完成缩放。

数据存储和保留

在计算节点引入和处理数据后,生成的输出数据可以存储在数据库中。 在存储之前,可以进一步处理和分析或转换输出数据,以确保下游处理的格式正确。 Microsoft Azure 提供了多个存储选项。 要使用哪个数据存储技术的选择很大程度上取决于下游进程中的分析和报告需求。

使用混合网络时,数据存储目标可能是本地数据存储。 通过混合网络使用 Batch 时,计算节点可以将数据写回到本地数据存储,而无需使用基于 Azure 的存储位置。 辅助角色也可以写入 Azure 文件存储,该文件存储可以在本地计算机上装载为磁盘。 此设置让任何处理本地文件的进程能轻松地进行访问。

监视和日志记录

若要优化将来的批处理作业运行,应记录数据以帮助标识优化的区域。 例如,如果辅助角色将要耗尽 CPU 容量,则向计算节点添加内核可帮助避免占用大量 CPU,进而可以更快地完成作业。 批处理作业中的每个应用程序运行都有其自己的特征,并且对批处理运行中的 VM 所做的优化可能会有所不同。 对于内存密集型任务,可以通过在下次运行时以不同的方式配置计算机来分配更多内存。

可以通过计算节点和网格头应用程序完成日志记录。也可以由使用 Batch 诊断日志记录的作业完成。 可以配置有关批处理运行性能的日志记录信息,以帮助标识为提高性能和更快地完成任务而需改进的区域。

自定义 Batch 监视和日志记录

控制应用程序和计算节点应用程序可以生成此数据并进行存储以供进一步分析。 有助于优化批处理作业的数据包括:

  • 每个任务的开始和结束时间
  • 每个计算节点处于活动状态且正在运行任务的时间
  • 每个计算节点处于活动状态且未运行任务的时间
  • 批处理作业运行总时间

Batch 诊断日志记录

使用控制器和计算节点应用程序发出检测数据存在替代方法。 Batch 诊断日志记录可以捕获大量运行数据。 默认情况下不启用 Batch 诊断日志记录,但必须为 Batch 帐户启用 Batch 诊断日志记录。

Batch 诊断日志记录提供了大量有助于对 Batch 运行进行故障排除和优化的数据。 作业和任务的开始和结束时间、内核计数、总节点计数和许多其他指标。

批处理日志记录需要已发出日志的存储目标,用于存储 Batch 运行生成的事件,例如池创建、作业执行、任务执行等。 除了将诊断日志事件存储在 Azure 存储帐户中之外,Batch 服务日志事件还可以流式传输到 Azure 事件中心的实例中。 然后可以将事件发送到 Azure Log Analytics

使用这些数据,内核计算和头节点应用程序可以得到优化。 这样可以降低成本,因为在不再需要辅助角色 VM 时会更快地取消预配这些 VM,而不是等待 Batch 运行完成。

Batch 管理工具

Azure 门户提供了一个 Batch 监视仪表板,它在作业运行时显示有关 Batch 的信息,甚至显示帐户配额使用情况。 这对于许多批处理作业应用程序已经足够了。

除了 Azure 门户中提供的 Batch 管理和可视化工具之外,还有一个用于管理 Batch 的免费的开放源代码工具 Batch Explorer。 这是一个独立客户端工具,可帮助创建、调试和监视 Azure Batch 应用程序。 下载适用于 Mac、Linux 或 Windows 的安装包。

网络模型

风险分析通常需要将数百个(甚至数千个)文档引入到风险网格计算过程中。 这些文件通常位于本地文件存储、网络共享或其他存储库。 使用基于 Azure 的 VM 访问和处理这些文件时,将本地网络无缝连接到 Azure 网络非常有益,可使文件访问既简单又快速。 此方法甚至可能意味着在计算节点上进行处理时无需任何代码更改。

Azure 提供了两种模型,用于安全可靠地将当前本地系统连接到 Azure、Microsoft Azure ExpressRouteVPN 网关。 两者都提供安全可靠的连接,尽管在实现、性能、和其他属性方面存在差异。

此外,风险网格计算头节点可能位于本地,并通过 REST API 或 SDK 采用 .NET 和其他语言执行批处理作业。

还有其他方法可用来缩小 Azure 与本地资源之间的差距,而不使用混合网络解决方案。 下面提供了相关详细信息。

ExpressRoute

ExpressRoute 通过连接合作伙伴(例如当前的 Internet 服务提供商)提供的专用连接将本地或数据中心网络绑定到 Azure。 这使两个网络能够将双方视为相同的网络实例,从而在网络之间提供无缝访问。 在你想要将现有本地系统与 Azure 网络集成,并且 ExpressRoute 提供尽可能最快的连接速度时,网络集成十分重要。

可在此处找到 Azure ExpressRoute 的其他定价信息。

VPN 网关

VPN 网关是将网络连接到 Azure 的另一种方法。 此模型的缺点是通过 Internet 传送流量。 连接的弹性会因此降低,网络速度也无法达到 ExpressRoute 的速度,然而这对于风险网格计算方案来说可能不是障碍,因为读取数据文件通常是一个快速操作。

可在此处找到 VPN 网关的其他定价信息。

连接详细信息的选项

实质上有两个模型用于将网络扩展到 Azure,如图 5 所示。

  • 虚拟网关 – 站点到站点
  • ExpressRoute – Exchange 或 ISP 提供商

站点到站点和 ExpressRoute

图 5:站点到站点和 ExpressRoute

虚拟网关 – 站点到站点集成

站点到站点 VPN 网关将本地网络连接到 Azure VNet。 这样可以缩小网络之间的差距,实质上使它们组成同一个网络,从而双向访问资源、服务器和项目。 这样可以从运行风险网格计算批处理作业的 Azure 辅助角色 VM 直接访问数据文件。

ExpressRoute 集成

Azure 合作伙伴网络提供商提供的 ExpressRoute 连接实现了与站点到站点连接相同的权益,但速度和可靠性更高。

获取有关 ExpressRoute 连接模型的详细信息。

在没有 Azure 混合网络的情况下进行批处理

另一个批处理方案是将所有数据文件上载到 Azure 存储以供基于 Azure 的计算机稍后处理。 文件存储和 Blob 存储可能是存储风险网格计算数据的候选项。

在此方案中,作业控制器和所有计算节点均位于 Azure 中,如图 6 所示。 已处理数据的可能目标是 Azure 数据存储,以准备由 Azure 机器学习解决方案或其他系统进行进一步处理。 此进一步处理超出了本文的范围。

站点到站点和 ExpressRoute

图 6:批处理上载到执行的生命周期

混合网络连接资源

可能有多个配置适用于你的情况。 若要帮助制定有关将网络连接到 Azure 的决策和体系结构指南,请参阅模式与实践组提供的将本地网络连接到 Azure 一文。

安全注意事项

可能会创建 Azure 虚拟网络 (VNet) 并在其中创建池的计算节点。 这样会为批处理运行提供额外的隔离级别,并允许使用 Microsoft Entra ID 进行身份验证。 有关详细信息,请参阅池网络配置

使用 Microsoft Entra ID 对批处理应用程序进行身份验证有以下两种方法:

  • 集成身份验证。 使用 Microsoft Entra 帐户的批处理应用程序可以使用该帐户获取数据存储的资源和其他资源。

  • 服务主体。 Microsoft Entra 服务主体为用户和应用程序定义访问策略和权限。 服务主体使用绑定到该应用程序的密钥向用户提供身份验证。 这样可以使用密钥对无人参与应用程序进行身份验证。 服务主体定义应用程序的策略和权限,使其能够在运行时访问资源时代表应用程序。 在此处了解更多信息

关于使用 Microsoft Entra ID 进行批处理的安全性的更多信息,请参见这篇文章

Batch 服务还可以使用共享密钥进行身份验证。 身份验证服务需要将两个标头值添加到 HTTP 请求、数据和授权。 有关共享密钥身份验证的详细信息,请参阅此处

成本优化

使用 Azure Batch 是免费的。 仅针对所使用的基础资源(例如虚拟机运行时间、存储和网络)计费。 但是,处于空闲状态的计算节点 VM 仍会产生费用,因此最好在不再需要计算机时对其进行取消预配。 通常通过删除包含它们的池来完成此操作。

创建池时,可以指定所需的计算节点类型以及每个计算节点的数量。 有以下两种类型的计算节点:

专用计算节点将为工作负荷保留。 它们比低优先级节点开销高,但可确保永远不会被抢占。

低优先级计算节点利用 Azure 中的多余容量运行 Batch 工作负荷。 低优先级节点每小时的成本比专用节点低,可支持需要大量计算能力的工作负荷。 有关详细信息,请参阅在 Batch 中使用低优先级 VM

专用和低优先级节点可能位于同一个池中。

有关低优先级计算节点和专用计算节点的定价信息,请参阅 Batch 定价

使用 Batch 诊断日志记录服务时,发送到 Azure 存储的数据将产生费用。 这是与任何其他数据类似的存储数据,定价会受所保留的诊断数据量影响。

入门

虽然可以从很多地方开始了解类似于 Batch 风险网格计算的复杂技术,但下面提供了一些逻辑起点可让你更好地了解 Batch 技术。

建议从阅读《Azure Batch 文档》开始。 文档包括门户示例、API 参考以及包含代码示例的分步教程。 在 GitHub 上免费提供有 Azure Batch 示例应用程序。

下面是一些快速教程,可帮助你生成简单的应用程序来创建和运行批处理计算作业。 用于生成应用程序的选项如下:

请考虑启动概念证明计划。 将数据引入到 Azure 中所用的方法是什么? 是否将使用混合网络或通过 SDK 或 REST 接口上载数据? 如果你正在考虑使用混合网络,请考虑启动一个试点项目,将其落实到位。

评估 Batch 计算作业的大小然后选择适当的缩放解决方案。 自动缩放公式启用复杂的计划方案,可使用 Azure 门户获得更简单的方案。

组件

  • Azure Batch 提供在云中运行大规模并行处理作业的功能。

  • Microsoft Entra ID 是基于云的多租户目录和标识管理服务,可将核心目录服务、应用程序访问管理和标识保护组合到单个解决方案中。

  • 自动缩放公式是上载到批处理计划程序以便对批处理缩放行为进行精细控制的脚本。

  • Batch 诊断日志记录是 Azure Batch 支持从批处理运行和生成的事件中创建详细日志的一项功能。 日志存储在 Azure 存储中。

  • Batch Explorer 是用于进行适用于 Windows、MacOS 和 Linux 的 Batch 监视和管理的独立应用程序。

  • ExpressRoute 是用于联接本地和 Azure 网络的高速可靠的混合网络解决方案。

  • Azure VPN 网关是使用 Internet 联接本地网络和 Azure 网络的混合网络解决方案。

结束语

本文档概述了使用 Azure Batch 进行银行业务风险网格计算时的技术解决方案和注意事项。 本文涵盖甚广,从 Azure Batch 定义到网络选项均包含在内,甚至还包括了成本注意事项。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

后续步骤

在考虑进一步评估使用 Azure Batch 进行风险网格计算时,此页面是一个良好的开端。 它提供了风险网格计算中固有的并行文件处理的示例指导教程。 这些教程通过 Azure 门户、Azure CLI、.NET 和 Python 提供。

产品文档: