在金融服务业 (FSI) 中,高效、安全地运行计算密集型工作负荷至关重要。 Azure Batch 为在云中管理这些工作负荷提供了可扩展且经济高效的解决方案。 本文提供有关使用 Azure Batch 在 Azure 上运行 FSI 工作负荷的综合指南。 包括体系结构、工作流、组件和最佳做法,以确保最佳性能、安全性和成本管理。
建筑
下图显示了使用 Azure Batch 在 Azure 上运行 FSI 工作负荷的体系结构。
下载包含此体系结构图的 Visio 文件。
Workflow
此示例场景演示如何使用 Azure Batch 在 Azure 上运行 FSI 工作负荷。 以下是您可以采用的典型工作流:
- 使用 VPN 网关连接到专用网络。 或者,使用远程桌面协议 (RDP) 或安全外壳 (SSH) 连接到使用 Azure Bastion 的 jumpbox 虚拟机 (VM)。 这两种方法都可用于连接到专用网络。
- 使用 Azure CLI、Azure 存储资源管理器或
azcopy
将要处理的所有数据集上传到存储帐户。 - 提交作业以使用 Azure CLI、Batch Explorer 或其他工具将数据处理到 Batch 服务。 对于此示例部署,我们开发了一个自定义命令行工具,您也可以使用它来提交作业。
- 调整池大小以将计算节点添加到池。 默认情况下,部署会创建一个没有计算节点的池。
- 从存储帐户下载结果。 作业完成后,结果将存储在存储帐户中。 然后可以使用 Azure CLI、Azure 存储资源管理器或
azcopy
下载这些结果。
组件
此体系结构包括多个 Azure 服务,分为两类资源:中心资源和分支资源。 本文后面将提供有关中心和分支网络拓扑的更多详细信息。 以下各节介绍了每个网络的服务及其角色。
中心资源
中心网络上部署的资源是共享资源,用于启用、筛选和监视分支网络与外界之间的通信。
中心网络上部署了以下资源:
Azure 防火墙为网络提供网络级保护。 此防火墙配置为仅允许特定流量进出网络。 此配置帮助保护网络免受恶意攻击,并监视进出网络的流量。 这些规则应根据您的业务特定规则和法规进行更新。
Azure VPN 网关支持从公共 Internet 连接到中心网络的两种方式之一。 另一种方式是使用 Azure Bastion 服务。 将为 VPN 网关分配一个公共 IP 地址,以便 VPN 客户端可以从公共 Internet 连接网关。
Azure Bastion 支持从公共 Internet 连接到跳转盒的两种方式之一。 另一种方式是使用 VPN 网关。 Azure Bastion 部署在中心网络上,并会为其分配一个公共 IP 地址,以便用户可以从公共 Internet 与它连接。
Linux Jumpbox 是一个 Linux VM,预装有用于访问部署的资源、提交作业和监视其进度的工具。 跳转盒部署在中心网络上,可以使用 VPN 网关或 Azure Bastion 从本地网络访问。
Windows Jumpbox 是一个 Windows VM,预装有用于访问部署的资源、提交作业和监视其进度的工具。 跳转盒部署在中心网络上,可以使用 VPN 网关或 Azure Bastion 从本地网络访问。
Log Analytics 工作区支持收集日志。 只要有可能,部署的资源都会被配置为将日志保存到工作区。 日志用于监视资源和解决问题。 与 Azure Application Insights 结合使用时,可为部署的资源提供性能监视和故障排除功能。
Azure DNS 专用解析程序提供入站终结点,用于解析在预配虚拟网络外部(例如,从本地资源)查询的专用终结点的 IP。 DNS 专用解析程序在部署 Azure VPN 网关时部署。
分支资源
分支网络上部署的资源帮助运行计算工作负荷和所有支持资源。
分支网络上部署了以下资源:
Azure Batch 是我们的体系结构所依赖的核心服务,用于云原生作业计划和执行。 Azure Batch 管理所需的计算资源,安排计算资源的任务,并监视任务的完成情况。 Batch 服务部署有两个池:带有 Linux 计算节点的名为
linux
的池和带有 Windows 计算节点的名为windows
的池。 这些池被配置为执行以下任务:- 使用用户订阅池分配模式。 Batch 服务在内部使用的所有资源都分配在与 Batch 帐户相同的订阅下,使用特定于订阅的配额和策略。
- 使用分支网络上的相应子网。 因此,它们会被分配子网地址范围内的地址空间。 这也意味着,在这些子网上设置的所有网络安全组 (NSG) 规则和流量转发规则也将应用于计算节点。
- 避免将公共 IP 地址分配给计算节点,以确保无法从公共 Internet 直接访问计算节点。
- 通过在初始化期间将支持的存储资源挂载到计算节点上,简化在计算注释上执行的工作负荷访问共享存储资源。
- 使用用户分配的托管标识,在计算节点加入批处理池时,使用存储帐户、容器注册表和任何其他资源对计算节点进行身份验证。 这样可以确保使用证书而不是密码或密钥对计算节点进行身份验证。
Azure Key Vault 存储部署机密,如 Batch 帐户证书。 这些证书用于在计算节点资源加入批处理池时对其进行身份验证。 密钥保管库部署在分支网络上,被配置为仅允许从 Batch 服务访问。 此配置可确保无法从公共 Internet 访问证书。
Azure 存储存储输入和输出数据。 此部署将创建两个存储帐户:一个用于 Blob 存储,另一个用于文件存储。 Blob 存储帐户使用网络文件系统 (NFS) 装载到 Linux 池上。 文件存储帐户使用服务器消息块 (SMB) 装载到 Linux 和 Windows 池上。
Azure 容器注册表存储批处理计算节点使用的容器映像。 使用容器注册表的专用部署可以帮助控制对容器映像的访问,并提供更安全的容器映像存储方式。 容器注册表部署在分支网络上,被配置为仅允许从 Batch 服务访问。 此配置可确保无法从公共 Internet 访问容器映像。
Azure 托管标识用于使用容器注册表、存储帐户和其他资源对自动添加到池中的计算节点进行身份验证。
替代方法
Azure Kubernetes 服务 (AKS) 可以代替 Azure Batch 服务用于容器化应用程序的类似配置。
Azure CycleCloud 可用于管理 Azure 上的高性能计算 (HPC) 群集。 可以将此类 HPC 群集设置为运行与本文所描述的工作负荷类似的工作负荷。
方案详细信息
FSI 中的一种常见计算模式是在表征金融工具或金融工具组合的输入数据集上运行大量计算密集型模拟。 这些模拟通常并行运行,结果将被聚合来生成投资组合风险状况的摘要。
此体系结构不专用于特定的工作负荷。 主要用于希望使用 Azure Batch 运行计算密集型模拟的应用程序。 必须对任何生产部署体系结构进行自定义,以满足工作负荷和业务环境的特定要求。 此体系结构主要用作此类预生产和生产部署自定义的起点。
可能的用例
此体系结构可用于运行各种 FSI 工作负荷。 一些示例包括:
- 金融工具组合的风险分析
- 估计金融工具的价值的 Monte Carlo 模拟
- 交易策略的回测
- 金融工具组合的负荷试验
网络拓扑
此体系结构使用中心和分支网络拓扑。 中心和分支资源部署在通过虚拟网络对等互连连接的单独虚拟网络中。 中心网络包含防火墙、VPN 网关和跳转盒等共享资源。 分支网络包含 Batch 服务和 Batch 计算节点。 它还包括工作负荷所需的其他服务终结点,如存储帐户、容器注册表等。 分支网络与公共 Internet 分离,只能从中心网络访问。
以下是有关网络拓扑的一些要点:
- 分支上的资源与公共 Internet 分离,只能从中心网络访问,这样可以最大程度地减少资源直接暴露在公共 Internet 上的情况。
- 所有传出流量(包括来自池计算节点的传出流量)都通过防火墙进行路由,从而确保筛选、记录和跟踪所有传出流量。
- 防火墙配置为仅允许列入允许名单的流量,从而确保只有列入允许名单的流量可以离开虚拟网络。
- 通过可选部署的 VPN 网关或 Azure Bastion 启用对分支网络上资源的访问。 两者都提供从公共 Internet 连接到中心网络的安全方法。
- 将提供 Windows 和 Linux 跳转盒,其预装有用于访问部署的资源、提交作业和监视其进度的工具。 这些跳转盒部署在中心网络上,可以使用 VPN 网关或 Azure Bastion 从本地网络访问。
- 所有 Azure 服务都使用专用终结点来确保通过专用网络访问它们,而不是通过公共终结点访问。 此配置还可以帮助确保无法从公共 Internet 访问服务。
- NSG 规则设置为仅允许所需的流量进出虚拟网络。 此配置帮助保护网络免受恶意攻击,并监视进出网络的流量。 这些规则甚至限制虚拟网络中资源之间的流量。
中心虚拟网络
中心虚拟网络包含允许或监视进出分支网络的流量的资源。 虚拟网络在部署模板中定义以下子网:
-
GatewaySubnet
:VPN 网关的子网(如果已部署) -
AzureBastionSubnet
:Azure Bastion 服务的子网(如果已部署) -
AzureFirewallSubnet
:Azure 防火墙服务的子网 -
sn-jumpbox
:跳转盒的子网 -
sn-dnspr
:委派给 Azure DNS 解析程序的子网
分支虚拟网络
分支虚拟网络包含工作负荷所需的 Batch 服务、Batch 计算节点和其他服务终结点。 虚拟网络在部署模板中定义以下子网:
-
pool-linux
:Linux 池的子网 -
pool-windows
:Windows 池的子网 -
private-endpoints
:用于分支网络上部署的 Azure 服务的专用终结点的子网
分支网络与中心网络对等互连,允许分支网络上的资源访问中心网络上的资源。 将设置路由表以确保分支之间的流量通过防火墙进行路由。
访问资源
若要将计算作业提交到 Batch 服务,连接 Batch 服务终结点以提交作业并监视进度。 由于 Batch 服务设置为使用专用终结点,因此只能从网络内访问。
该体系结构提供两个连接到网络的选项,让您可以将作业提交到 Batch 服务:
使用 VPN 网关。 使用 VPN 网关连接到中心网络。 连接到 VPN 后,您可以直接从本地计算机向 Batch 服务提交作业,这也让使用本地计算机上安装的 Batch Explorer 监视作业变得更加容易。 此配置需要在本地计算机上安装 Azure CLI、Batch Explorer 和其他工具。 或者,在连接到 VPN 后,可以使用 Linux 或 Windows 跳转盒将作业提交到 Batch 服务。 为此,您需要在本地计算机上安装 SSH 客户端或 RDP 客户端。
使用 Azure Bastion。 您可以使用 Azure Bastion 登录 Linux 或 Windows 跳转盒,而不是使用 VPN。 登录到 Azure 门户,然后使用 Azure Bastion 直接从 Web 浏览器登录到跳转盒 VM。 登录跳转盒后,您可以使用 Azure CLI、Batch Explorer 和跳转盒上安装的其他工具将作业提交到 Batch 服务。
注意事项
这些注意事项实现了 Azure 架构良好的框架支柱,这是一组可用于提高工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
在此示例工作流中,我们依靠手动数据传输和作业提交作为还未准备好实现自动化的工作负荷的良好起点。 但是,对于生产工作负荷,我们建议自动执行数据传输和作业提交,这可以使用 Azure 数据工厂或其他工作流业务流程工具完成。
可以将批处理池设置为根据提交到池的作业数自动缩放。 此配置可以帮助降低在没有要运行的作业时运行池的成本。 有关详细信息,请参阅自动缩放 Azure Batch 池中的计算节点。
安全组
安全性可确保防范蓄意攻击和滥用您的宝贵数据和系统。 有关详细信息,请参阅安全性支柱概述。
为了最大程度地减少密码和密钥等机密的共享,此体系结构使用托管标识在计算节点加入批处理池时,通过存储帐户、容器注册表和其他资源对计算节点进行身份验证。 此身份验证的完成方法是将托管标识分配给批处理池,然后授予托管标识对资源的访问权限。 通过使用基于角色的访问控制,可以向托管标识授予访问资源所需的最低权限。
此体系结构还使用专用终结点来帮助确保无法从公共 Internet 访问服务。 此配置可以帮助最大程度地减少攻击面,还可以帮助确保通过专用网络访问服务,而不是通过公共终结点。
此体系结构还使用 Azure 防火墙来过滤和监视进出网络的流量。 防火墙配置为仅允许列入允许名单的流量,从而确保只有列入允许名单的流量可以离开虚拟网络。 此配置帮助保护网络免受恶意攻击,并监视进出网络的流量。
计算节点本身无法从公共 Internet 访问,因为没有向计算节点分配公共 IP 地址。
成本优化
成本优化是要寻找减少不必要支出和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述。
Azure Batch 本身是一项免费服务,客户只需支付基本的虚拟机、存储和网络成本。 在此工作负荷中,除了计算节点之外,存储帐户、跳转盒、VPN 网关和 Azure Bastion 是产生成本的其他资源。 由于工作负荷可以支持访问资源的替代方法,因此可以通过选择其中一条路径来优化运行成本。 例如,如果 VPN 网关是访问资源的首选,则可以在部署期间禁用 Azure Bastion 和跳转盒 VM 来降低成本。
为了帮助降低与计算资源相关的成本,请使用对工作负荷来说更具成本效益的 VM 库存单位 (SKU)。 此外,使用现成实例或池自动缩放可以帮助降低与计算节点相关的成本。
若要确定运行此工作负荷的成本,请参阅 Azure 定价计算器。
性能效率
性能效率是指工作负荷以高效的方式扩展以满足用户对其提出的需求的能力。 有关详细信息,请参阅性能效率支柱概述。
借助 Batch,可以通过为工作负荷使用合适的 VM SKU 来实现性能效率。 有关如何为工作负荷选择合适的 VM SKU 的详细信息,请参阅 Azure 计算单位。 选择计算节点的 VM 大小提供有关根据部署区域选择正确 VM SKU 的更多指导。
部署此场景
此参考体系结构的基础结构即代码 (IaC) 源代码可在 Azure Batch 加速器存储库中找到。 随附的教程演示如何部署此参考体系结构,以及如何使用它来运行名为 azfinsim
的 FSI 工作负荷示例。 您还可以使用以下按钮,通过 Azure 门户部署订阅下的资源:
后续步骤
了解模块