SAP HANA 高可用性规划指南

本指南简要介绍了在 Google Cloud 上部署高可用性 (HA) SAP HANA 系统之前需要了解的选项、建议和一般概念。

本指南假设您已经了解实现 SAP HANA 高可用性系统的通用概念和做法。因此,本指南主要关注在 Google Cloud 上实现此类系统需要了解的内容。

如果您需要详细了解实现 SAP HANA 高可用性系统所需的一般概念和做法,请参阅:

本规划指南仅关注 SAP HANA 的高可用性,不包括应用系统的高可用性。如需了解 SAP NetWeaver 的高可用性,请参阅适用于 Google Cloud 上的 SAP NetWeaver 的高可用性规划指南

本指南并不取代 SAP 提供的任何文档。

Google Cloud 上的 SAP HANA 高可用性选项

您可以在 SAP HANA 的高可用性配置设计中结合使用 Google Cloud 和 SAP,如此便可以处理基础架构或软件级层的故障。下表介绍了用于提供高可用性的 SAP 和 Google Cloud 功能。

功能 说明
Compute Engine 实时迁移

Compute Engine 会监控底层基础架构的状态,并自动迁移实例以使其不受基础架构维护事件影响。这个过程无需用户干预。

Compute Engine 会尽可能在迁移期间保持实例运行。在发生重大中断的情况下,实例发生故障和恢复可用之间可能会略有延迟。

在多主机系统中,共享卷(例如部署指南中使用的“/hana/shared”卷)是挂接到托管主实例主机的虚拟机的 Persistent Disk,并以 NFS 格式装载到工作器主机。如果主实例主机进行实时迁移,则 NFS 卷最多在几秒钟内无法访问。重启主实例主机后,NFS 卷将在所有主机上恢复运行,其他正常运行也自动恢复。

恢复的实例与原始实例相同,包括实例 ID、私有 IP 地址以及所有实例元数据和存储空间。默认情况下,标准实例均设置为实时迁移。我们建议您不要更改此设置。

如需了解详情,请参阅实时迁移

Compute Engine 自动重启

如果您的实例设置为在发生维护事件时终止,或者由于底层硬件问题导致实例崩溃,则可以设置 Compute Engine 自动重启实例。

默认情况下,实例设置为自动重启。我们建议您不要更改此设置。

SAP HANA 服务自动重启

SAP HANA 服务自动重启是 SAP 提供的故障恢复解决方案。

SAP HANA 拥有许多针对各种活动始终运行的已配置服务。如果这些服务中的任何服务由于软件故障或人为错误而停用,则 SAP HANA 服务自动重启监控定时器功能会自动重启该服务。该服务重启后,会将所有必要的数据加载回内存并恢复运行。

SAP HANA 备份

SAP HANA 备份会从您的数据库创建数据副本,可用于将数据库重建到某个时间点。

如需详细了解如何在 Google Cloud 上使用 SAP HANA 备份,请参阅 SAP HANA 操作指南

SAP HANA 存储复制

SAP HANA 存储复制通过特定硬件合作伙伴提供存储级灾难恢复支持。Google Cloud 不支持 SAP HANA 存储复制。您可以考虑改用 Compute Engine Persistent Disk 快照。

如需详细了解如何使用 Persistent Disk 快照在 Google Cloud 上备份 SAP HANA 系统,请参阅 SAP HANA 操作指南

SAP HANA 主机自动故障转移

SAP HANA 主机自动故障转移是一种本地故障恢复解决方案,该解决方案要求在横向扩容系统中配备一个或多个备用 SAP HANA 主机。如果主要的主机之一出现故障,则主机自动故障转移会自动让备用主机上线,并将故障主机作为备用主机重启。

如需了解详情,请参阅:

SAP HANA 系统复制

借助 SAP HANA 系统复制,您可以配置一个或多个系统,以便在高可用性或灾难恢复场景中接管您的主系统。您可以在性能和故障转移时间方面调整复制,以满足您的需求。

Google Cloud 上的 SAP HANA 的操作系统原生高可用性集群

Linux 操作系统集群为应用状态提供应用和访客感知功能,并在发生故障时自动执行恢复操作。

虽然适用于非云环境的高可用性集群原则通常适用于 Google Cloud,但某些因素(例如防护和虚拟 IP)的实现方式有所不同。

您可以针对 Google Cloud 上的 SAP HANA 使用 Red Hat 或 SUSE 高可用性集群 Linux 发行版。

集群资源代理

Red Hat 和 SUSE 都为 Google Cloud 的资源代理提供了 Pacemaker 集群软件的高可用性实现。Google Cloud 的资源代理可以管理 STONITH 防护、通过路由或别名 IP 实现的 VIP 以及存储操作。

为了分发基本操作系统资源代理中尚未随附的更新,Google Cloud 会定期为 SAP 高可用性集群提供配套资源代理。如果这些配套资源代理是必要的,则 Google Cloud 部署过程会提供一个下载步骤。

防护

防护在 Google Cloud Compute Engine 操作系统集群上下文中,采用 STORITH 形式,可让双节点集群中的每个成员都能够重启另一个节点。

Red Hat 和 SUSE 提供的资源代理会在 Google Cloud 上管理 STONITH 防护。

虚拟 IP 地址

Google Cloud 上的 SAP 高可用性集群在发生故障转移时使用虚拟或浮动 IP 地址 (VIP) 将网络流量从一个主机重定向到另一个主机。

典型的非云端部署使用不必要的地址解析协议 (ARP) 请求,通告将 VIP 迁移并重新配置到新的 MAC 地址。

在 Google Cloud 上,您可以使用多种不同的方法之一,将 VIP 迁移并重新配置到高可用性集群,而非使用不必要的 ARP 请求。建议的方法是使用内部 TCP/UDP 负载平衡器,但根据需求,您还可以使用基于路由的 VIP 实现或基于别名 IP 的 VIP 实现。

如需详细了解 Google Cloud 上的 VIP 实现,请参阅 Google Cloud 上的虚拟 IP 实现

存储和复制

SAP HANA 高可用性集群配置使用同步 SAP HANA 系统复制功能,让主 SAP HANA 数据库和辅助 SAP HANA 数据库保持同步。SAP HANA 的标准操作系统提供的资源代理在故障转移期间管理系统复制功能,启动和停止复制功能,以及在复制过程中切换哪些实例用作主实例和备用实例。

如果您需要共享文件存储,则基于 NFS 或 SMB 的文件管理器可以提供必需的功能。

您可以选择第三方文件共享解决方案(例如 NetApp Cloud Volumes)作为高可用性共享存储解决方案。Google Cloud 提供 NFS 文件服务器解决方案 Filestore,但目前 Filestore 不提供跨区域高度可用的文件服务器。

Compute Engine 的地区永久性磁盘可以跨区域提供同步复制的块存储。虽然 SAP 高可用性系统中的数据库存储不支持地区永久性磁盘,但您可以将地区永久性磁盘用于 NFS 文件服务器。

如需详细了解 Google Cloud 存储选项,请参阅:

超时和时间间隔设置

资源代理和集群配置的超时和检查间隔设置会影响集群软件触发故障转移的速度。适用于高可用性集群的 Google Cloud 说明和自动化功能中使用的值可能与集群软件的默认值稍有不同,但在大多数情况下,任一组值都应足够。您可以根据需要调整这些值。只需确保测试您在环境中使用的任何值,再发布系统以供使用。

Google Cloud 帐号针对 Google Cloud 的实时迁移维护事件建议的超时和检查间隔值,其长度会因您使用的机器类型和其他因素而稍有不同。如需了解详情,请参阅实时迁移

部署集群后,使用 Cloud SDK 命令 gcloud compute instances simulate-maintenance-event 在主要主机上触发实时迁移事件,以测试设置。

日志记录和监控

资源代理可能包括将日志传播到 Google Cloud 的运维套件以进行分析的日志记录功能。每个资源代理都包括用于标识任何日志记录选项的配置信息。如果是 bash 实现,则日志记录选项为 gcloud logging

您还可以安装 Cloud Logging 代理以捕获来自操作系统进程的日志输出,并将资源利用率与系统事件相关联。Logging 代理会捕获默认系统日志,其中包括来自 Pacemaker 和集群服务的日志数据。如需了解详情,请参阅关于 Logging 代理

如需了解如何使用 Cloud Monitoring 配置服务检查以监控服务端点可用性,请参阅管理正常运行时间检查

服务帐号和高可用性集群

集群软件可以在 Google Cloud 环境中执行的操作由授予每个主机虚拟机服务帐号的权限保护。对于高安全性环境,您可以限制主机虚拟机服务帐号中的权限,以遵循最低权限原则。

在限制服务帐号权限时,请注意,系统可能会与 Google Cloud 服务(如 Cloud Storage)互动,因此您可能需要在主机虚拟机服务帐号中为这些服务互动提供权限。

如需获取限制性最高的权限,请创建具有所需最低权限的自定义角色。如需了解自定义角色,请参阅创建和管理自定义角色。您可以在资源的 IAM 政策的角色绑定中添加条件以进一步限制权限,只允许访问特定资源实例(例如高可用性集群中的虚拟机实例)。

您的系统所需的最低权限取决于您的系统访问的 Google Cloud 资源以及系统执行的操作。因此,要确定高可用性集群中的主机虚拟机所需的最低权限,您可能需要准确调查主机虚拟机上的系统可以访问的资源以及这些系统对那些资源执行的操作。

首先,以下列表显示了一些高可用性集群资源及其需要的关联权限:

  • STONITH 防护
    • compute.instances.list
    • compute.instances.get
    • compute.instances.reset
    • compute.instances.stop
    • compute.instances.start
    • logging.logEntries.create
    • compute.zones.list
  • 使用别名 IP 来实现 VIP
    • compute.instances.list
    • compute.instances.get
    • compute.zones.list
    • logging.logEntries.create
    • compute.instances.updateNetworkInterface
    • compute.zoneOperations.get
    • logging.logEntries.create
  • 使用静态路由来实现的 VIP
    • compute.instances.list
    • compute.instances.get
    • compute.zones.list
    • logging.logEntries.create
    • compute.routes.get
    • compute.routes.create
    • compute.routes.delete
    • compute.routes.update
    • compute.routes.list
    • compute.networks.updatePolicy
    • compute.networks.get
    • compute.globalOperations.get
    • logging.logEntries.create
  • 使用内部负载平衡器来实现 VIP 的帐号
    • 不需要特定权限 - 负载平衡器(不需要集群与 Google Cloud 中的资源互动,也不需要集群更改这些资源)会处理运行状况检查状态。

Google Cloud 上的虚拟 IP 实现

在出现意外故障或进行计划维护时,高可用性集群使用浮动或虚拟 IP 地址 (VIP) 将其工作负载从一个集群节点迁移到另一个集群节点。VIP 的 IP 地址不会更改,因此客户端应用不知道工作是否由其他节点提供。

VIP 也称为浮动 IP 地址

在 Google Cloud 上,VIP 的实现方式与本地安装模式略有不同,因为发生故障转移时,无法使用免费 ARP 请求来公告更改。您可以改为使用下列其中一种方法来实现 SAP 高可用性集群的 VIP 地址:

内部 TCP/UDP 负载平衡 VIP 实现

负载平衡器通常会在应用的多个实例之间分配用户流量,以在多个活动系统之间分配工作负载,并防范任何实例出现处理速度变慢问题或发生故障。

内部 TCP/UDP 负载平衡服务还提供故障转移支持,您可以将其与 Compute Engine 运行状况检查结合使用,以检测故障、触发故障转移及将流量重新路由到操作系统原生高可用性集群中新的主 SAP 系统集群。

出于各种原因,内部 TCP/UDP 负载平衡故障转移支持成为推荐的 VIP 实现,包括:

  • Compute Engine 上的负载平衡可提供 99.99% 可用性 SLA。
  • 负载平衡支持多区域高可用性集群,以防范区域故障,令跨区域故障转移时间可预测。
  • 使用负载平衡可减少检测和触发故障转移所需的时间(通常在故障发生后的几秒钟内)。总体故障转移时间取决于高可用性系统中每个组件的故障转移时间,其中可能包括主机、数据库系统和应用系统等。
  • 使用负载平衡可简化集群配置并减少依赖项。
  • 与使用路由的 VIP 实现不同,借助负载平衡,您可以使用自己的 VPC 网络中的 IP 范围,根据需要预留和配置这些范围。
  • 负载平衡可轻松用于将流量重新路由到辅助系统,以便进行计划内维护中断。

在为 VIP 的负载平衡器实现创建运行状况检查时,您需要指定运行状况检查探测的主机端口,以确定主机的运行状况。对于 SAP 高可用性集群,请指定专用范围 (49152-65535) 中的目标主机端口,以免与其他服务发生冲突。在主机虚拟机上,使用辅助帮助程序服务(例如 socat 实用程序或 HAProxy)配置目标端口。

对于辅助备用系统仍然处于在线状态的数据库集群,运行状况检查和帮助程序服务允许负载平衡将流量定向到集群中当前作为主系统的在线系统。

使用帮助程序服务和端口重定向,您可以在 SAP 系统上触发计划软件维护的故障转移。

如需详细了解内部 TCP/UDP 负载平衡的故障转移支持,请参阅为内部 TCP/UDP 负载平衡配置故障转移

如需部署实现了负载平衡器 VIP 的高可用性集群,请参阅:

静态路由 VIP 实现

静态路由实现还可以防范区域故障,但您需要在虚拟机所在的现有 VPC 子网的 IP 范围之外使用 VIP。因此,您还需要确保 VIP 不会与扩展网络中的任何外部 IP 地址相冲突。

与共享 VPC 配置搭配使用时,静态路由实现还会增加复杂性,这些配置旨在将网络配置隔离到宿主项目中。

如果您的 VIP 使用静态路由实现方式,请咨询您的网络管理员,以便为静态路由实现确定合适的 IP 地址。

别名 IP VIP 实现

对于多区域高可用性部署,不建议使用别名 IP VIP 实现,因为如果一个区域发生故障,则可能会延迟将别名 IP 重新分配到其他区域中的节点。使用具备故障转移支持的内部 TCP/UDP 负载平衡来实现 VIP。

如果要在同一区域部署 SAP 高可用性集群的所有节点,则可以使用别名 IP 来为高可用性集群实现 VIP。

如果您的现有多区域 SAP 高可用性集群使用了 VIP 的别名 IP 实现,则可以迁移到内部 TCP/UDP 负载平衡实现,而无需更改您的 VIP 地址。别名 IP 和内部 TCP/UDP 负载平衡都使用 VPC 网络中的 IP 范围。

虽然别名 IP 地址不建议用于多区域高可用性集群中的 VIP 实现,但它们在 SAP 部署中有其他使用场景。例如,它们可用于为灵活的 SAP 部署提供逻辑主机名和 IP 分配,例如由 SAP Landscape Management 管理的那些部署。

Google Cloud 上 VIP 的一般最佳做法

如需详细了解 Google Cloud 上的 VIP,请参阅浮动 IP 地址的最佳做法

Google Cloud 上的 SAP HANA 主机自动故障转移

Google Cloud 支持 SAP HANA 自动主机故障转移,这是由 SAP HANA 提供的本地故障恢复解决方案。主机自动故障转移解决方案使用一个或多个备用主机,这些主机保持预留状态,以便在主机发生故障时从主实例或工作器主机接管工作。备用主机不包含任何数据,也不处理任何工作。

/hana/data/hana/log 卷仅装载在主实例和工作器主机上。如果出现接管工作的情况,则主机自动故障转移解决方案会使用 SAP HANA Storage Connector API 和 Compute Engine gceStorageConnector 插件来管理这些磁盘从故障主机切换到备用主机的操作。gceStorageConnector 插件的配置参数(包括启用还是停用防护机制)存储在 SAP HANA global.ini 文件的存储部分中。

/hana/shared/hanabackup 卷存储在 NFS 服务器上,该服务器由主实例主机管理并装载在所有主机(包括备用主机)上。

故障转移完成后,故障主机将作为备用主机重启。

SAP 在 Google Cloud 上的横向扩容系统中最多支持三个备用主机。备用主机不计入 SAP 在 Google Cloud 上的横向扩容系统中支持的 16 个(最大数量)活跃主机。

目前,Google Cloud 仅支持 SUSE Linux Enterprise Server (SLES) for SAP 公共映像上的 SAP HANA 主机自动故障转移,Compute Engine 的 sles-12-sp3-sapsles-12-sp2-sap 映像系列提供了这些公共映像。如需查看 Compute Engine 提供的公共映像,请参阅映像

下图显示了 Google Cloud 上的多主机架构,其中包括对 SAP HANA 主机自动故障转移的支持。在该图中,工作器主机 2 发生故障,备用主机接管了工作。gceStorageClient 插件与 SAP Storage Connector API(未显示)协同工作,以便从故障工作器中分离包含 /hana/data/hana/logs 卷的磁盘,并将其重新装载到备用主机上,该备用主机随后成为工作器主机 2,而故障主机则成为备用主机。

该图描绘了横向扩容 SAP HANA 系统的架构,其中包括对主机自动故障转移的支持

SAP HANA 高可用性配置的部署选项

Google Cloud 提供的 Deployment Manager 模板可用于自动部署 SAP HANA 高可用性系统,您也可以手动部署和配置 SAP HANA 高可用性系统。

Google Cloud 提供的 Deployment Manager 模板包括您完成的 template.yaml 配置文件。Deployment Manager 会读取配置文件并为您部署 SAP HANA 系统,该系统受 SAP 完全支持并遵循 SAP 和 Google Cloud 的最佳做法。

自动部署适用于 SAP HANA 的 Linux 高可用性集群

对于 SAP HANA,Deployment Manager 会部署一个优化了性能的高可用性 Linux 集群,其中包括:

  • 自动故障转移
  • 自动重启
  • 同步复制
  • 内存预加载
  • Pacemaker 高可用性集群资源管理器
  • Google Cloud 防护机制
  • 包含每个 SAP HANA 实例所需 Persistent Disk 的虚拟机
  • 每个虚拟机上的 SAP HANA 实例

如需了解详情,请参阅 SAP HANA 高可用性集群部署指南

自动部署具备 SAP HANA 主机自动故障转移的 SAP HANA 横向扩容系统

手动部署 SAP HANA 高可用性集群

手动配置高可用性集群时,为确保 SAP HANA 系统满足 SAP 可支持性要求和最佳做法,请先使用 Google Cloud 提供的 Deployment Manager 模板部署虚拟机和 SAP HANA 实例。

如需了解在 Google Cloud for SAP HANA 上部署和手动配置高可用性集群的说明,请参阅:

后续步骤

Google Cloud 和 SAP 都提供了高可用性的更多信息。

Google Cloud 关于高可用性的更多信息

如需详细了解 Google Cloud 上的 SAP HANA 高可用性,请参阅:

如需了解有关保护 Google Cloud 上的系统以防范各种故障场景的一般信息,请参阅设计可靠的系统

SAP 关于 SAP HANA 高可用性功能的更多信息

如需了解 SAP 提供的有关 SAP HANA 高可用性功能的更多信息,请参阅以下文档: