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

Azure 上的 SAS 体系结构

Azure 虚拟机
Azure 虚拟网络

此解决方案在 Azure 上运行 SAS 分析工作负载。 此指南涵盖各种部署方案。 例如,其中包括多个版本的 SAS。 你可以在自我管理的虚拟机 (VM) 上运行 SAS 软件。 还可以使用 Azure Kubernetes 服务 (AKS) 部署基于容器的版本。

体系结构

Architecture diagram showing how to deploy SAS products on Azure.

该图包含一个带有“Azure 虚拟网络”标签的大矩形。 其中,另一个大矩形具有“邻近放置组”标签。 两个矩形位于其中。 它们垂直堆叠,每个都有“网络安全组”标签。 每个安全组矩形都包含多个按行排列的计算机图标。 在上方的矩形中,上行左侧的计算机图标具有“中层”标签。 右侧的图标具有“元数据层”标签。 下行的图标具有“计算层”标签。 在下方的矩形中,上行的计算机图标具有 MGS 和 MDS 服务器的标签。 下行具有 OST 和 OSS 服务器标签。

下载此体系结构的 Visio 文件

工作流

SAS Azure 部署通常包含三个层:

  • API 或可视化层。 在此层中:

    • 元数据层使客户端应用可以访问有关数据源、资源、服务器和用户的元数据。
    • Web 应用提供对中间层智能数据的访问。
  • 计算平台,其中 SAS 服务器处理数据。

  • 由 SAS 用于永久存储的存储层。 Azure 上的常用选项包括:

    • Lustre
    • IBM Spectrum Scale
    • 网络文件系统 (NFS)

Azure 虚拟网络在云中隔离该系统。 在该网络中:

  • 邻近放置组可降低 VM 之间的延迟。
  • 网络安全组保护 SAS 资源,使其免于接收不需要的流量。

先决条件

在部署 SAS 工作负载之前,请确保以下组件已就位:

  • 来自 SAS 大小调整团队的大小调整建议
  • SAS 许可证文件
  • 对用于部署资源的资源组的访问权限
  • 一个已考虑到大小调整文档和 VM 选择的虚拟中心处理单元 (vCPU) 订阅配额
  • 对安全轻型目录访问协议 (LDAP) 服务器的访问权限

方案详细信息

除了讨论不同的实现之外,本指南还与 Microsoft Azure 架构良好的框架原则保持一致,以实现成本、DevOps、复原能力、可伸缩性和安全性方面的卓越。 但是,除了使用本指南之外,还请咨询 SAS 团队,以进一步验证你的特定用例。

作为合作伙伴,Microsoft 和 SAS 正在努力为在云中进行创新的组织制定路线图。 两家公司都致力于确保 Azure 上 SAS 产品和解决方案的高质量部署。

SAS 简介

SAS 分析软件提供一套服务和工具,用于从数据中提取见解并做出智能决策。 SAS 平台完全支持其数据管理、欺诈检测、风险分析和可视化等领域的解决方案。 SAS 提供以下主要平台,这些平台已经过 Microsoft 验证:

  • SAS Grid 9.4
  • SAS Viya

以下体系结构已经过测试:

  • Linux 上的 SAS Grid 9.4
  • SAS 9 Foundation
  • Linux 上的 SAS Viya 3.5,带有对称多重处理 (SMP) 和大规模并行处理 ( MPP) 体系结构
  • AKS 上的 SAS Viya 2020 及更高版本,带有 MPP 体系结构

本指南提供有关在 Azure 上运行 SAS 的常规信息,而不是特定于平台的信息。 这些指南假定你在自己的租户中托管自己的 Azure 上 SAS 解决方案。 SAS 不会为你在 Azure 上托管解决方案。 有关 SAS 提供的 Azure 托管和管理服务的详细信息,请参阅 SAS 托管应用程序服务

建议

设计你的实现时,请考虑以下部分中所述的要点。

SAS 文档提供每个核心(指的是每个物理 CPU 核心)的要求。 但 Azure 提供的是 vCPU 列表。 在建议用于 SAS 的 VM 上,每个物理核心都有两个 vCPU。 因此,若要计算 vCPU 要求的值,请使用核心要求值的一半。 例如,一个物理核心要求 150 MBps 将会转换为每个 vCPU 75 MBps。 有关 Azure 计算性能的详细信息,请参阅 Azure 计算单位 (ACU)

注意

如果要纵向扩展和保留单节点 SAS 部署中的数据(而不是保留到外部化文件系统),SAS 文档建议使用至少 150 MB/s 的带宽。 若要实现此带宽,需要对多个 P30 Premium(或更大的)磁盘进行条带化。

操作系统

Linux 最适合运行 SAS 工作负载。 SAS 支持以下操作系统的 64 位版本:

  • Red Hat 7 或更高版本
  • SUSE Linux Enterprise Server (SLES) 12.2
  • Oracle Linux 6 或更高版本

有关特定 SAS 版本的详细信息,请参阅 SAS 操作系统支持矩阵。 在使用多台计算机的环境中,最好在所有计算机上运行同一版本的 Linux。 Azure 不支持 Linux 32 位部署。

若要优化与 Azure 的兼容性和集成,请从 Azure 市场中的操作系统映像开始。 如果使用不带额外配置的自定义映像,可能会降低 SAS 性能。

内核问题

选择操作系统时,请注意影响整个 Red Hat 7.x 系列的软锁定问题。 它发生在以下内核中:

  • Linux 3.x 内核
  • 低于 4.4 的版本

Linux 和 Hyper-V 的内存和 I/O 管理方面的问题会导致该问题。 出现该问题时,系统日志将包含类似以下内容的条目,其中提到了不可屏蔽的中断 (NMI):

Message from syslogd@ronieuwe-sas-e48-2 at Sep 13 08:26:08
kernel:NMI watchdog: BUG: soft lockup - CPU#12 stuck for 22s! [swapper/12:0]

另一个问题会影响旧版 Red Hat。 具体而言,它可能发生在满足以下条件的版本中:

  • 拥有低于 3.10.0-957.27.2 版的 Linux 内核
  • 使用非易失性快速存储器 (NVMe) 驱动器

当系统遇到高内存压力时,通用 Linux NVMe 驱动程序可能无法为写入操作分配足够的内存。 因此,系统会报告一个软锁定,该锁定源于实际的死锁。

升级内核以避免这两个问题。 或者,请尝试以下可能的解决方法:

  • /sys/block/nvme0n1/queue/max_sectors_kb 设置为 128,而不是使用默认值 512
  • 每次 VM 启动时在 VM 中的每个 NVMe 设备上更改此设置。

运行以下命令以调整该设置:

# cat /sys/block/nvme0n1/queue/max_sectors_kb
512
# echo 128 >/sys/block/nvme0n1/queue/max_sectors_kb
# cat /sys/block/nvme0n1/queue/max_sectors_kb
128

VM 大小调整建议

SAS 部署通常使用以下 VM SKU:

Edsv5 系列

Edsv5 系列中的 VM 是 Viya 和 Grid 的默认 SAS 计算机。 它们提供以下功能:

  • 受约束的核心。 使用此系列中的许多计算机,可以约束 VM vCPU 计数。
  • 良好的 CPU 与内存之比。
  • 具有高吞吐量的本地附加磁盘。 I/O 速度对 SAS 用于临时文件的 SASWORK 等文件夹和云分析服务 (CAS) 缓存 CAS_CACHE 很重要。

如果 Edsv5 系列 VM 不可用,建议使用上一代。 Edsv4 系列 VM 已经过测试,在 SAS 工作负载上性能良好。

Ebsv5 系列

在某些情况下,本地附加的磁盘没有足够的存储空间用于 SASWORKCAS_CACHE。 若要获取更大的工作目录,请使用具有高级附加磁盘的 Ebsv5 系列 VM。 这些 VM 提供以下功能:

  • 与 Edsv5 和 Esv5 VM 相同的规范
  • 针对远程附加磁盘的高吞吐量(最高 4 GB/秒),根据 SAS 的 I/O 需求提供尽可能大的 SASWORKCAS_CACHE

如果 Edsv5 系列 VM 提供足够的存储空间,则最好使用它们,因为它们更具成本效益。

M 系列

许多工作负载使用 M 系列 VM,包括:

  • SAS 编程运行时环境 (SPRE) 实现,这些实现将 Viya 方法用于软件体系结构。
  • 某些 SAS Grid 工作负载。

M 系列 VM 提供以下功能:

  • 受约束的核心
  • 高达 3.8 TiB 的内存,适合于使用大量内存的工作负载
  • 远程磁盘的高吞吐量,这非常适用于 SASWORK 文件夹(当本地可用磁盘不足时)

Ls 系列

某些 I/O 密集型环境应使用 Lsv2 系列Lsv3 系列 VM。 具体而言,需要快速、低延迟 I/O 速度和大量内存的实现受益于这种类型的计算机。 示例包括大量使用 SASWORK 文件夹或 CAS_CACHE 的系统。

注意

SAS 优化了要与 Intel 数学内核库 (MKL) 一起使用的服务。

  • 对于数学计算密集型工作负载,请避免使用未使用 Intel 处理器的 VM:Lsv2 和 Lasv3。
  • 选择 AMD CPU 时,请验证 MKL 在其上的执行情况。

警告

如果可能,请避免使用 Lsv2 VM。 请转而使用带 Intel 芯片集的 Lsv3 VM。

借助 Azure,可按需缩放 SAS Viya 系统以满足截止时间:

  • 通过增加节点池的计算容量。
  • 通过使用 AKS 群集自动缩放程序来添加节点并水平缩放。
  • 通过临时纵向扩展基础结构以加快 SAS 工作负载的速度。

注意

缩放计算组件时,还要考虑纵向扩展存储,以避免存储 I/O 瓶颈。

对于 Viya 3.5 和 Grid 工作负载,Azure 目前不支持水平或垂直缩放。 Viya 2022 支持水平缩放。

网络和 VM 放置注意事项

SAS 工作负载通常会频繁通信。 因此,它们可以传输大量数据。 在所有 SAS 平台中,请遵循以下建议来减少频繁通信的影响:

  • 在同一虚拟网络上部署 SAS 和存储平台。 此方法还可避免产生对等互连成本。
  • 将 SAS 计算机置于邻近放置组中,以减少节点之间的延迟。
  • 如果可能,请在同一邻近放置组中部署 SAS 计算机和基于 VM 的数据存储平台。
  • 在同一可用性区域中部署 SAS 和存储设备,以避免跨区域延迟。 如果无法确认解决方案组件是否部署在同一区域中,请联系 Azure 支持。

对于 VM,SAS 有特定的完全限定域名 (FQDN) 要求。 请正确设置计算机 FQDN,并确保域名系统 (DNS) 服务正常工作。 可以使用 Azure DNS 设置这些名称。 还可以编辑 etc 配置文件夹中的 hosts 文件。

注意

请在 SAS 部署中的所有节点上启用加速网络。 关闭此功能时,性能会显著下降。

若要在 VM 上启用加速网络,请执行以下步骤:

  1. 在 Azure CLI 中运行以下命令以将该 VM 解除分配:

    az vm deallocate --resource-group <resource_group_name> --name <VM_name>

  2. 关闭该 VM。

  3. 在 CLI 中运行以下命令:

    az network nic update -n <network_interface_name> -g <resource_group_name> --accelerated-networking true

在 Azure 中迁移数据或与 SAS 交互时,建议使用以下解决方案之一将本地资源连接到 Azure:

对于 Azure 中的生产 SAS 工作负载,ExpressRoute 提供私密、专用且可靠的连接,与站点到站点 VPN 相比,这种连接有以下优势:

  • 速度更高
  • 降低延迟
  • 安全性更严格

请注意 SAP 与非 SAP 应用程序之间对延迟敏感的接口。 请考虑将数据源和接收器移动到靠近 SAS 的位置。

身份管理

SAS 平台可以使用本地用户帐户。 它们还可以使用安全 LDAP 服务器来验证用户。 建议在 Azure 中运行域控制器。 然后使用域加入功能正确管理安全访问。 如果尚未设置域控制器,请考虑部署 Microsoft Entra 域服务(Microsoft Entra 域服务)。 使用域加入功能时,请确保计算机名称不超过 15 个字符的限制。

注意

在某些环境中,本地与 Azure 托管的 SAS 环境之间需要本地连接或共享数据集。 在这些情况下,强烈建议在 Azure 中部署域控制器。

Microsoft Entra 域服务林创建的用户可针对 Microsoft Entra 设备进行身份验证但不能针对本地资源进行身份验证,反之亦然。

数据源

SAS 解决方案通常从多个系统访问数据。 这些数据源分为两类:

  • SAS 数据集,SAS 将其存储在 SASDATA 文件夹中
  • 数据库,SAS 通常会将大量负载置于其上

为获得最佳性能:

  • 将数据源放置在尽可能靠近 SAS 基础结构的位置。
  • 限制数据源与 SAS 基础结构之间的网络跃点数和设备数。

注意

如果无法将数据源移动到靠近 SAS 基础结构的位置,请避免对其运行分析。 相反,请先运行提取、转换、加载 (ETL) 过程,然后再进行分析。 对处于压力下的数据源采取相同的方法。

SAS 数据的永久远程存储

SAS 和 Microsoft 测试了可用于托管 SAS 数据集的一系列数据平台。 SAS 博客详细记录了结果,包括性能特征。 测试包括以下平台:

SAS 为 Viya 和 Grid 体系结构提供性能测试脚本。 SAS 论坛提供有关在这些平台上使用脚本进行测试的文档。

Sycomp Storage Fueled by IBM Spectrum Scale (GPFS)

有关 Sycomp Storage Fueled by IBM Spectrum Scale (GPFS) 如何满足性能预期的信息,请参阅 SAS 对用于 SAS Grid 的 Sycomp 的评估

对于大小调整,Sycomp 提出以下建议:

  • 为每 8 个核心提供一个 GPFS 缩放节点,采用每个核心 150 MBps 的配置。
  • 每个实例至少使用 5 个 P30 驱动器。
DDN EXAScaler Cloud (Lustre)

DDN 收购了 Intel 的 Lustre 业务,提供基于 Lustre 并行文件系统的 EXAScaler Cloud。 该解决方案在 Azure 市场中作为 DDN EXAScaler Cloud 全套产品/服务的一部分提供。 它专为数据密集型部署而设计,以低成本提供高吞吐量。

测试显示 DDN EXAScaler 可以并行运行 SAS 工作负载。 部署 EXAScaler 或 Lustre 时,DDN 建议在所有客户端节点上运行此命令:

lctl set_param mdc.*.max_rpcs_in_flight=128 osc.*.max_pages_per_rpc=16M osc.*.max_rpcs_in_flight=16 osc.*.max_dirty_mb=1024 llite.*.max_read_ahead_mb=2048 osc.*.checksums=0  llite.*.max_read_ahead_per_file_mb=256
Azure NetApp 文件 (ANF)

SAS 测试已针对 SAS Grid 验证了 NetApp 性能。 具体而言,测试表明,Azure NetApp 文件是适用于跨多台计算机的多达 32 个物理核心的 SAS Grid 群集的可行主存储选项。 使用 NetApp 提供的优化和 Linux 功能时,Azure NetApp 文件可以是跨多台计算机的多达 48 个物理核心的群集的主要选项。

使用此服务时,请注意以下几点:

  • Azure NetApp 文件非常适合 Viya 部署。 请勿将 Azure NetApp 文件用于 Viya 中的 CAS 缓存,因为写入吞吐量不足。 如果可能,请改用 VM 的本地临时磁盘。
  • 在具有 Grid 9.4 的 SAS 9 Foundation 上,与用于 SASDATA 文件的 SAS 配合使用的 Azure NetApp 文件的性能对于多达 32 个物理核心的群集来说非常好。 这在应用优化后最多可以达到 48 个核心。
  • 为了确保性能良好,请在部署 Azure NetApp 文件时至少选择“高级”或“超级”存储层服务级别。 可以为非常大的卷选择标准服务级别。 请考虑从“高级”级别开始,并在以后切换到“超级”或“标准”。 服务级别更改可以联机完成,而不会发生服务中断或数据迁移。
  • Azure NetApp 文件的读取和写入性能不同。 SAS 的写入吞吐量上限为 1600MiB/秒左右,而读取吞吐量上限超出该值,达到大约 4500MiB/秒。 如果需要持续的高写入吞吐量,Azure NetApp 文件可能不适合。

其他数据源

SAS 平台支持各种数据源:

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

SAS 工作负载的输出可能是组织的关键资产之一。 SAS 输出提供有关内部效率的见解,并且可以在报告策略中发挥关键作用。 因此,请务必确保对 SAS 体系结构的访问安全。 为了实现此目标,请使用安全身份验证并解决网络漏洞。 使用加密来保护所有进出体系结构的数据。

Azure 通过使用基础结构即服务 (IaaS) 云模型来提供 SAS。 Microsoft 在以下级别将安全保护构建到服务中:

  • 物理数据中心
  • 物理网络
  • 物理主机
  • Hypervisor

仔细评估你为虚拟机监控程序上方的区域选择的服务和技术,例如用于 SAS 的来宾操作系统。 请务必为体系结构提供适当的安全控制。

SAS 当前不完全支持 Microsoft Entra ID。 若要向 SAS 的可视化层进行身份验证,可以使用 Microsoft Entra ID。 但对于后端授权,请使用类似于本地身份验证的策略。 管理 IaaS 资源时,可以使用 Microsoft Entra ID 进行 Azure 门户身份验证和授权。 使用 Microsoft Entra ID 域服务时,无法对来宾帐户进行身份验证。 来宾尝试登录时将失败。

使用网络安全组来筛选进出虚拟网络中资源的网络流量。 借助这些组,便可以定义可授予或拒绝对 SAS 服务的访问权限的规则。 示例包括:

  • 授予从本地 IP 地址范围访问 CAS 工作端口的权限。
  • 阻止从 Internet 访问 SAS 服务。

可以使用 Azure 磁盘加密在操作系统中进行加密。 此解决方案使用 Linux 的 DM-Crypt 功能。 但我们目前不建议使用 Azure 磁盘加密。 它可能会严重降低性能,尤其是在本地使用 SASWORK 文件时。

Azure 磁盘存储的服务器端加密 (SSE) 会保护数据。 它还有助于满足组织安全性和合规性承诺。 对于 Azure 托管磁盘,SSE 会在将数据保存到云时加密静态数据。 此行为默认适用于 OS 和数据磁盘。 可以使用平台管理的密钥或自己的密钥来加密托管磁盘。

保护基础结构

控制对已部署的 Azure 资源的访问。 每个 Azure 订阅均与一个 Microsoft Entra 租户存在信任关系。 使用 Azure 基于角色的访问控制 (Azure RBAC) 向组织内的用户授予对 Azure 资源的正确权限。 通过向特定范围内的用户或组分配 Azure 角色,授予访问权限。 该范围可以是订阅、资源组或单个资源。 确保审核对基础结构进行的所有更改

通过 Azure Bastion 管理对 VM 的远程访问。 不要向 Internet 公开以下任何组件:

  • VM
  • 安全外壳协议 (SSH) 端口
  • 远程桌面协议 (RDP) 端口

部署此方案

最好使用基础结构即代码 (IaC) 过程来部署工作负载。 SAS 工作负载可能对手动部署中经常发生的错误配置敏感,并会降低工作效率。

构建环境时,请参阅 Azure 上的 CoreCompete SAS 9 或 Viya 中的快速入门参考材料。

作者

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

主要作者:

其他参与者:

若要查看非公开领英个人资料,请登录领英。

后续步骤

有关如何入门的帮助,请参阅以下资源:

如需有关自动化过程的帮助,请参阅 SAS 提供的以下模板: