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

部署适用于 SAP 工作负荷的 Azure 虚拟机 DBMS 的注意事项

本指南是介绍如何在 Microsoft Azure 上实施和部署 SAP 软件的文档的一部分。 在阅读本指南之前,请先阅读规划和实施指南以及规划指南指向的文章。 本文档介绍使用 Azure 基础结构即服务 (IaaS) 功能在 Microsoft Azure 虚拟机 (VM) 上部署 SAP 相关 DBMS 系统时的通用内容。

本文是对 SAP 安装文档和 SAP 说明的补充,这些文档代表在给定平台上安装和部署 SAP 软件的主要资源。

本文介绍在 Azure VM 中运行 SAP 相关 DBMS 系统的注意事项。 本文档中很少提及特定的 DBMS 系统。 特定的 DBMS 系统改为在其他特定于数据库系统的文档中介绍。

资源

我们还提供了其他有关 Azure 上的 SAP 工作负载的文章。 请首先阅读 Azure 上的 SAP 工作负载:入门,然后探索感兴趣的领域。

以下 SAP 说明与 Azure 上的 SAP 有关,涉及本文档中介绍的领域。

说明文档编号 标题
1928533 Azure 上的 SAP 应用程序:支持的产品和 Azure VM 类型
2015553 Microsoft Azure 上的 SAP:支持先决条件
1999351 适用于 SAP 的增强型 Azure 监视故障排除
2178632 Microsoft Azure 上的 SAP 关键监视指标
1409604 Windows 上的虚拟化:增强型监视
2191498 Azure 的 Linux 上的 SAP:增强型监视
2039619 Microsoft Azure 上使用 Oracle Database 的 SAP 应用程序:支持的产品和版本
2233094 DB6:Azure 上使用 IBM DB2 for Linux、UNIX 和 Windows 的 SAP 应用程序:其他信息
2243692 Microsoft Azure (IaaS) VM 上的 Linux:SAP 许可证问题
2578899 SUSE Linux Enterprise Server 15:安装说明
1984787 SUSE LINUX Enterprise Server 12:安装说明
2772999 Red Hat Enterprise Linux 8.x:安装和配置
2002167 Red Hat Enterprise Linux 7.x:安装和升级
2069760 Oracle Linux 7.x SAP 安装和升级
1597355 适用于 Linux 的交换空间建议
2799900 Oracle Database 19c 的核心技术说明
2171857 Oracle Database 12c:Linux 上的文件系统支持
1114181 Oracle Database 11g:Linux 上的文件系统支持
2969063 Azure 上的 HCMT 中的 Microcode 验证失败
3246210 Azure - HCMT 在某些磁盘性能测试期间失败

如需查看适用于 Linux 的所有 SAP 说明的相关信息,请参阅 SAP 社区 wiki

你需要了解 Microsoft Azure 体系结构,并知道如何部署和操作 Microsoft Azure 虚拟机。 有关详细信息,请参阅 Azure 文档

一般而言,Windows、Linux 和 DBMS 的安装和配置基本上与在本地安装的任何虚拟机或裸机计算机相同。 使用 Azure IaaS 时的一些体系结构和系统管理实施决策有所不同。 本文档说明了使用 Azure IaaS 时要准备的特定体系结构和系统管理差异。

用于 RDBMS 部署的 VM 的存储结构

为了完成本章的学习,请阅读并理解以下链接中的内容:

对于 Azure 块存储,必须使用 Azure 托管磁盘。 有关 Azure 托管磁盘的详细信息,请阅读 Azure VM 托管磁盘简介一文。

在基本配置中,我们通常推荐部署结构:操作系统、DBMS 和最终的 SAP 二进制文件与数据库文件分开。 建议对以下对象使用单独的 Azure 磁盘:

  • 操作系统(基本 VHD 或 OS VHD)
  • 数据库管理系统可执行文件
  • SAP 可执行文件(如 /usr/sap)
  • DBMS 数据文件
  • DBMS 重做日志文件

将这些组件分成五个不同的卷的配置可以提高复原能力,因为只要不超过 VM 存储配额和限制,在一个卷上过度使用不一定会干扰其他卷的使用。

DBMS 数据和事务/重做日志文件存储在 Azure 支持的块存储或 Azure NetApp 文件中。 不支持将 Azure 文件存储或 Azure 高级文件作为 DBSM 数据和/或具有 SAP 工作负荷的重做日志文件的存储。 它们存储在单独的磁盘中,并作为逻辑磁盘附加到原始 Azure 操作系统映像 VM。 为 Linux 部署记录的建议有所不同。 请阅读适用于 SAP 工作负载的 Azure 存储类型一文,了解适合你的方案的不同存储类型的功能和支持。 具体而言,对于 SAP HANA,请从 SAP HANA Azure 虚拟机存储配置一文开始。

规划磁盘布局时,请权衡以下各项并找到最佳平衡:

  • 数据文件数目。
  • 包含文件的磁盘数目。
  • 单个磁盘或 NFS 共享的 IOPS 配额。
  • 每个磁盘或 NFS 共享的数据吞吐量。
  • 每个 VM 大小可能的附加数据磁盘数目。
  • VM 可提供的总体存储或网络吞吐量。
  • 不同的 Azure 存储类型可以提供的延迟。
  • VM 存储 IOPS 和吞吐量配额。
  • 如果你使用 NFS,则计入 VM 网络配额 - NFS 共享的流量计入 VM 的网络配额,不计入存储配额。
  • VM SLA。

Azure 按每个数据磁盘或 NFS 共享强制实施一个 IOPS 配额。 对于托管在不同的 Azure 块存储解决方案或共享上的磁盘,这些配额是不同的。 这些不同的存储类型之间的 I/O 延迟也不同。

每种不同的 VM 类型可附加的数据磁盘数目有限。 另一个限制是,只有特定的 VM 类型可使用高级存储等功能。 通常,你会根据 CPU 和内存需求决定使用某个特定的 VM 类型。 你还需考虑 IOPS、延迟和磁盘吞吐量要求,这些要求通常随磁盘数量或高级存储磁盘 v1 的类型而改变。 每个磁盘要达到的 IOPS 数和吞吐量可能会成为影响磁盘大小的决定因素,特别是在使用高级存储 v1 时。 使用高级存储 v2 或超级磁盘,你可以选择独立于磁盘容量的预配 IOPS 和吞吐量。

注意

对于 DBMS 部署,强烈建议对任何数据、事务日志或重做文件使用 Azure 高级存储(v1 和 v2),超级磁盘或基于 Azure NetApp 文件的 NFS 共享。 部署生产还是非生产系统并不重要。 Azure 标准 HDD 或 SSD 的延迟对于任何类型的生产系统都是不可接受的。

注意

若要将 Azure 的单个 VM SLA 最大化,附加的所有磁盘的类型都必须是 Azure 高级存储(v1 或 v2)或 Azure 超级磁盘,其中包括基础 VHD(Azure 高级存储)。

注意

不支持在位于与 Azure 数据中心相邻的并置第三方数据中心中的存储硬件上托管 SAP 数据库的主数据库文件(如数据和日志文件)。 此用例也不支持通过 Azure VM 中托管的软件设备提供的存储。 一般来说,对于 SAP DBMS 工作负载,SAP 数据库的数据和事务日志文件仅支持表示为本机 Azure 服务的存储。 不同的 DBMS 可能支持不同的 Azure 存储类型。 有关更多详细信息,请查看 SAP 工作负载的 Azure 存储类型一文

根据 IOPS、延迟和吞吐量需求来确定将数据库文件、日志和重做文件以及你使用的 Azure 存储类型放置在何处。 特别是对于 Azure 高级存储 v1,为了达到足够的 IOPS,可能必须使用多个磁盘或使用空间更大的高级存储磁盘。 如果使用多个磁盘,需跨磁盘构建软件带区,其中包含数据文件或日志和重做文件。 在这种情况下,基础高级存储磁盘的 IOPS 和磁盘吞吐量 SLA 或标准存储磁盘的最大可达到 IOPS 是针对生成的带区集累积的。

如果 IOPS 要求超出了一个 VHD 可提供的数量,那么需要平衡许多 VHD 中数据库文件所需的 IOPS。 分散磁盘上 IOPS 负载的最简单方式是在不同的磁盘构建一个软件带区。 然后在从软件带区划分出的 LUN 上放置多个 SAP DBMS 数据文件。 带区中的磁盘数量由 IOPS 需求、磁盘吞吐量需求和卷需求决定。


Windows storage striping Windows

我们建议使用 Windows 存储空间跨多个 Azure VHD 创建此类带区集。 至少使用 Windows Server 2012 R2 或 Windows Server 2016。

Linux storage striping Linux

仅支持使用 MDADM 和逻辑卷管理器 (LVM) 在 Linux 上构建软件 RAID。 有关详细信息,请参阅:


对于 Azure 高级存储 v2 和超级磁盘,可能没必要进行条带化,因为你可以定义 IOPS 和磁盘吞吐量而不考虑磁盘大小。

注意

由于 Azure 存储保留 VHD 的三个映像,因此条带化时配置冗余无意义。 只需配置条带化,I/O 即可分布在不同的 VHD。

托管或非托管磁盘

Azure 存储帐户是一种管理构造,还是一个具有各种限制的主体。 有关功能和限制的详细信息,请参阅 Azure 存储可伸缩性和性能目标。 对于标准存储,请记得,每个存储帐户的 IOPS 数是有限制的。 请参阅 Azure 存储可伸缩性和性能目标一文中包含“总请求率”那一行。 每个 Azure 订阅还有对存储帐户数量的初始限制。 自 2017 年起,Azure 引入了让你无需管理存储帐户的 Azure 托管磁盘的概念。 使用 Azure 托管磁盘是为 Azure 中的 SAP 工作负荷进行部署所需的默认设置。

重要

鉴于 Azure 托管磁盘的优势,通常情况下,必须将 Azure 托管磁盘用于 DBMS 部署和 SAP 部署。

在你碰巧有尚未使用托管磁盘的 SAP 工作负荷的情况下,若要从非托管磁盘转换为托管磁盘,请参阅:

VM 和数据磁盘的缓存

将磁盘装载到 VM 时,可以选择是否缓存 VM 与位于 Azure 存储中的磁盘之间的 I/O 流量。

以下建议假设标准 DBMS 的 I/O 特征如下所示:

  • 它主要是针对数据库的数据文件的读取工作负载。 此类读取对于 DBMS 系统是性能关键型的。
  • 基于检查点或持续流,突发中会产生针对数据文件的写入。 按一天中的平均数来看,写入次数比读取次数少。 与从数据文件读取相反,这些写入是异步的,且不会阻止用户事务。
  • 事务日志或重做文件中几乎没有读取。 但执行事务日志备份时的大型 I/O 除外。
  • 针对事务或重做日志文件的主要负载是写入。 根据工作负载的性质,I/O 可以小至 4 KB,也可达到 1 MB 或更大。
  • 必须以一种可靠的方式在磁盘上保留所有写入。

为 Azure 高级存储 v1 提供下列缓存选项:

  • 读取
  • 读取/写入
  • 无 + 写入加速器,仅针对 Azure M 系列 VM
  • 读取 + 写入加速器,仅针对 Azure M 系列 VM

对于高级存储 v1,建议对 SAP 数据库的数据文件使用“读取缓存”,并为磁盘的日志文件选择“不缓存”。

对于 M 系列部署,建议仅对日志文件的磁盘使用 Azure 写入加速器。 有关 Azure 写入加速器的详细信息、限制和部署,请参阅启用写入加速器

对于高级存储 v2、超级磁盘和 Azure NetApp 文件,不提供缓存选项。

Azure 非持久性磁盘

部署 VM 后,Azure VM 提供非持久磁盘。 如果 VM 重启,则这些驱动器上的所有内容都可能会被擦除。因此,数据库的数据文件以及日志和重做文件决不能放置在这些非持久性驱动器上。 但一些数据库例外,在此情况下,这些非持久性驱动器对于 tempdb 和临时表空间可能是适合的。

有关详细信息,请参阅了解 Azure 中 Windows VM 上的临时驱动器


Windows nonpersisted disk Windows

Azure VM 中的驱动器 D 是一个非持久性驱动器,由 Azure 计算节点上的部分本地磁盘提供支持。 因为它是非持久性的,所以对驱动器 D 上的内容所做的任何更改都将在重新启动 VM 时丢失。 更改包括存储的文件、创建的目录和安装的应用程序。

Linuxnonpersisted disk Linux

Linux Azure VM 会在 /mnt/resource 上自动装载一个非持久性驱动器,该驱动器由 Azure 计算节点上的本地磁盘提供支持。 由于它是非持久性,当 VM 重新启动时,将丢失对 /mnt/resource 中的内容所做的任何更改。 更改包括存储的文件、创建的目录和安装的应用程序。


Microsoft Azure 存储复原

Microsoft Azure 存储将基础 VHD(含 OS)以及附加磁盘或 blob 存储到至少三个不同的存储节点。 这种类型的存储称为本地冗余存储 (LRS)。 LRS 是 Azure 中所有存储类型的默认设置。

还有其他冗余方法。 有关详细信息,请参阅 Azure 存储复制

注意

建议对 DBMS VM 和存储数据库及日志与重做文件的磁盘使用的存储类型为 Azure 高级存储 v1 和 v2、超级磁盘和 Azure NetApp 文件。 对于这些存储类型(高级存储 v1除外),唯一可用的冗余方法是 LRS。 因此,需要配置数据库方法,以便能够将数据库数据复制其他 Azure 区域或可用性区域。 数据库方法包括 SQL Server Always On、Oracle Data Guard 和 HANA 系统复制。

VM 节点复原

Azure 为 VM 提供不同的 SLA。 有关详细信息,请参阅虚拟机的 SLA 的最新版本。 由于 DBMS 层对于 SAP 系统中的可用性至关重要,因此需要了解 不同的部署类型和 维护事件。 有关这些概念的详细信息,请参阅 管理 Azure 中虚拟机的可用性。

针对具有 SAP 工作负载的生产 DBMS 方案的最低建议如下:

  • 在同一 Azure 区域中使用 所选部署类型 部署两个 VM。
  • 这两个 VM 将在同一 Azure 虚拟网络中运行,且会让 NIC 从同一子网中附加。
  • 使用数据库方法来保留第二个 VM 的热备用服务器。 方法可以是 SQL Server Always On、Oracle Data Guard 或 HANA 系统复制。

还可以在另一个 Azure 区域中部署第三个 VM,使用相同数据库方法在另一个 Azure 区域中提供异步副本。

Azure 网络注意事项

在大规模 SAP 部署中,使用 Azure 虚拟数据中心的蓝图。 将其用于虚拟网络配置和针对组织不同部门的权限和角色分配。

以下最佳做法基于数千次客户部署的结果:

  • 将 SAP 应用程序部署到的虚拟网络无法访问 Internet。
  • 数据库 VM 在与应用程序层相同的虚拟网络中运行,并与 SAP 应用程序层分隔在不同的子网中。
  • 虚拟网络中的 VM 具有专用 IP 地址的静态分配。 有关详细信息,请参阅 Azure 中的 IP 地址类型和分配方法
  • DBMS VM 之间的路由限制不是由安装在本地 DBMS VM 上的防火墙设置。 相反,流量路由是通过网络安全组 (NSG) 定义的。
  • 若要将流量分离并隔离到 DBMS VM,请为 VM 分配不同的 NIC。 每个 NIC 都有一个不同的 IP 地址,每个 NIC 都分配到不同的虚拟网络子网。 每个子网都有不同的 NSG 规则。 网络流量的隔离或分离是路由的一种措施。 它不用于为网络吞吐量设置配额。

注意

通过 Azure 分配静态 IP 地址意味着将其分配给单个虚拟 NIC。 不要将来宾 OS 中的静态 IP 地址分配给虚拟 NIC。 某些 Azure 服务(例如 Azure 备份)依赖于至少来宾 OS 中的主虚拟 NIC 设置为 DHCP 而不是静态 IP 地址这一事实。 有关详细信息,请参阅 Azure 虚拟机备份疑难解答。 若要将多个静态 IP 地址分配给某个 VM,需要将多个 vNIC 分配给该 VM。

警告

不支持在 SAP 应用程序与基于 SAP NetWeaver、Hybris 或 S/4HANA的 SAP 系统的 DBMS 层之间的通信路径中配置 Azure 网络虚拟设备。 此限制是出于功能和性能方面的原因。 SAP 应用程序层与 DBMS 层之间的通信路径必须为直接通信路径。 如果 ASG 和 NSG 规则允许直接通信路径,该限制就不包括应用程序安全组 (ASG) 和 NSG 规则。 这还包括到托管 DBMS 数据和重做日志文件的 NFS 共享的流量。

不支持网络虚拟设备的其他方案包括:

通信路径中的网络虚拟设备很容易导致两个通信伙伴之间的网络延迟加倍。 它们还可能限制 SAP 应用程序层和 DBMS 层之间关键路径的吞吐量。 在某些客户方案中,网络虚拟设备可能导致 Pacemaker Linux 群集失败。 在这些情况下,Linux Pacemaker 群集节点之间的通信通过网络虚拟设备与其 SBD 设备通信。

重要

另一个不受支持的设计是将 SAP 应用程序层和 DBMS 层分到相互不对等互连的不同 Azure 虚拟网络。 建议使用 Azure 虚拟网络中的子网(而不是使用其他 Azure 虚拟网络)将 SAP 应用程序层与 DBMS 层隔离开来。

如果决定不遵循建议,而是将两个层分到不同的虚拟网络,则这两个虚拟网络必须对等互连

请注意,两个对等互连的 Azure 虚拟网络之间的网络流量会产生传输费用。 SAP 应用层和 DBMS 层之间交换的数据量巨大,可达到许多太字节 (TB)。 如果 SAP 应用程序层和 DBMS 层的分隔处位于两个对等互连的 Azure 虚拟网络之间,累计产生的费用可能会很高。

使用 Azure 负载均衡器重定向流量

SQL Server Always On 或 HANA 系统复制等功能中使用的专用虚拟 IP 地址的使用需要配置 Azure 负载均衡器。 负载均衡器使用探测端口确定活动的 DBMS 节点,并专门将流量路由到该活动的数据库节点。

如果数据库节点发生故障转移,无需重新配置 SAP 应用程序。 最常用的 SAP 应用程序体系结构将针对专用虚拟 IP 地址重新连接。 同时,负载均衡器通过将专用虚拟 IP 地址将流量重定向到第二个节点,以此作为对节点故障转移的响应。

Azure 提供两种不同的负载均衡器 SKU:基本 SKU 和标准 SKU。 基于设置和功能方面的优势,应使用 Azure 负载均衡器的标准 SKU。 标准版负载均衡器的巨大优势之一是数据流量不会通过负载均衡器本身进行路由。

有关如何配置内部负载均衡器的示例,可查看教程:在 Azure 虚拟机上手动配置 SQL Server 可用性组一文

注意

与访问公共 IP 地址相关的基本 SKU 和标准 SKU 的行为之间存在差异。 有关如何绕过标准 SKU 访问公共 IP 地址时的限制,可查看 SAP 高可用性方案中使用 Azure 标准负载均衡器的虚拟机的公共终结点连接文档

部署主机监视

若要将 Azure 虚拟机中的 SAP 应用程序用于生产用途,SAP 需要能够从运行 Azure 虚拟机的物理主机获取主机监视数据。 需要有特定的 SAP 主机代理补丁级别,才能在 SAPOSCOL 和 SAP 主机代理中启用此功能。 SAP 说明 1409604 中介绍了确切的补丁级别。

有关那些将主机数据传送到 SAPOSCOL 和 SAP 主机代理的组件的部署以及组件的生命周期管理的详细信息,请参阅为 SAP 解决方案实现 Azure VM 扩展一文。

后续步骤

有关特定 DBMS 的详细信息,请参阅: