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 系统复制,您可以配置一个或多个系统,以便在高可用性或灾难恢复场景中接管您的主系统。您可以在性能和故障切换时间方面调整复制,以满足您的需求。

SAP HANA 快速重启选项(推荐)

当 SAP HANA 终止但操作系统保持运行时,SAP HANA 快速重启可以减少重启时间。SAP HANA 利用 SAP HANA 永久性内存功能来保留 DRAM 中映射到 tmpfs 文件系统的列存储表的 MAIN 数据片段,从而缩短重启时间。

如需详细了解如何使用 SAP HANA 快速重启选项,请参阅高可用性部署指南:

SAP HANA 高可用性/灾难恢复提供商钩子(推荐)

SAP HANA 高可用性/灾难恢复提供商钩子允许 SAP HANA 将某些事件的通知发送到 Pacemaker 集群,从而改善故障检测。SAP HANA 高可用性/灾难恢复提供商钩子需要 SAP HANA 2.0 SPS 03 或更高版本。

如需详细了解如何使用 SAP HANA 高可用性/灾难恢复提供商钩子,请参阅高可用性部署指南:

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

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

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

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

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

如需了解 Google Cloud 提供的自动化部署选项,请参阅适用于 SAP HANA 高可用性配置的自动部署选项

集群资源代理

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

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

防护代理

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

Google Cloud 提供了以下两种适用于 Linux 操作系统上的 SAP 的防护代理:一个是 fence_gce 代理,该代理包含在经过认证的 Red Hat 和 SUSE Linux 发行版中;另一个是旧版 gcpstonith 代理,您也可以下载该旧版代理,以便在不包含 fence_gce 代理的 Linux 发行版中使用。我们建议您使用 fence_gce 代理(如果可用)。

防护代理所需的 IAM 权限

防护代理通过对 Compute Engine API 进行重置调用来重启虚拟机。为了进行身份验证和授权以访问 API,防护代理会使用虚拟机的服务账号。防护代理使用的服务账号必须被授予包含以下权限的角色:

  • compute.instances.get
  • compute.instances.list
  • compute.instances.reset
  • compute.instances.start
  • compute.instances.stop
  • compute.zoneOperations.get
  • logging.logEntries.create
  • compute.zoneOperations.list

预定义的 Compute Instance Admin 角色包含所有必需的权限。

如需将代理的重启权限范围限制到目标节点,您可以配置基于资源的访问权限。如需了解详情,请参阅配置基于资源的访问权限

虚拟 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 的文件管理器可以提供必需的功能。

对于高可用性共享存储解决方案,您可以使用 Filestore 或第三方文件共享解决方案(例如适用于 Google Cloud 的 NetApp Cloud Volumes Service)。Filestore 的企业层级可用于多可用区部署,Filestore 的基本层级可用于单可用区部署。

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

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

Google Cloud 上 HA 集群的配置设置

Google Cloud 建议将某些集群配置参数的默认值更改为更适合 Google Cloud 环境中的 SAP 系统的值。如果您使用 Google Cloud 提供的自动化脚本,则系统会为您设置建议值。

建议将值视为调整高可用性集群中 Corosync 设置的起点。您需要确认故障检测和故障切换触发的灵敏度是否适用于您的 Google Cloud 环境中的系统和工作负载。

Corosync 配置参数值

在 SAP HANA 的高可用性集群配置指南中,Google Cloud 为与几个不同于 Corrosync 或 Linux 分发器设置的默认值的 corosync.conf 配置文件的 totem 部分的多个参数建议值。

下表显示了 Google Cloud 推荐值的 totem 参数,以及更改值的影响。如需了解这些参数的默认值(可能因 Linux 发行版而异),请参阅 Linux 发行版的文档。
参数 推荐值 更改值的影响
secauth off 停用所有 totem 消息的身份验证和加密。
join 60 (ms) 增加节点在成员资格协议中等待 join 消息的时间。
max_messages 20 增加在接收令牌后节点可能发送的消息数上限。
token 20000 (ms)

增加在节点声明令牌丢失,假定节点故障,并开始执行操作之前节点等待 totem 协议令牌的时长。

增加 token 参数的值可让集群对瞬时基础设施事件(例如实时迁移)的容忍度更高。但是,这也可能会使集群需要更长的时间来检测节点故障并从节点故障中恢复。

token 参数的值还决定了 consensus 参数的默认值,后者用于控制节点在尝试重新建立配置成员资格前等待达成共识的时间。

consensus 不适用

指定在开始新一轮成员资格配置之前等待达成共识的时长(以毫秒为单位)。

我们建议您省略此参数。如果未指定 consensus 参数,Corosync 会将其值设置为 token 参数的值的 1.2 倍。如果您使用 token 参数的建议值 20000,则 consesus 参数会设置为值 24000

但是,如果您明确为 consensus 指定值,请确保该值为 240001.2*token,以较大者为准。

token_retransmits_before_loss_const 10 增加节点在由于收件人节点发生故障和执行操作前令牌重新递送的尝试次数。
transport
  • 对于 SLES,值为 udpu
  • 对于 RHEL 8 或更高版本,值为 knet
  • 对于 RHEL 7:udpu
指定 corosync 使用的传输机制。

如需详细了解如何配置 corosync.conf 文件,请参阅 Linux 发行版的配置指南:

集群资源的超时和时间间隔设置

定义集群资源时,您可以为各种资源操作 (op) 设置 intervaltimeout 值(以秒为单位)。例如:

primitive rsc_SAPHanaTopology_HA1_HDB00 ocf:suse:SAPHanaTopology \
 operations \$id="rsc_sap2_HA1_HDB00-operations" \
 op monitor interval="10" timeout="600" \
 op start interval="0" timeout="600" \
 op stop interval="0" timeout="300" \
 params SID="HA1" InstanceNumber="00"

clone cln_SAPHanaTopology_HA1_HDB00 rsc_SAPHanaTopology_HA1_HDB00 \
 meta is-managed="true" clone-node-max="1" target-role="Started" interleave="true"

timeout 值会对各项资源操作产生不同的影响,如下表所述。

资源 Operation 在超时时执行的操作
monitor 如果超出超时时间,监控状态通常会报告失败,而关联资源将被视为失败状态。集群尝试尝试,其中可能包括故障切换。集群不会重试失败的监控操作。
start 如果资源在超时之前无法启动,则集群将尝试重启资源。该行为由与资源关联的失败操作决定。
stop 如果资源在超时之前没有响应停止操作,则会触发防护事件。

和其他集群配置设置一样,集群资源的 intervaltimeout 设置会影响集群软件检测故障和触发故障切换的速度。

Google Cloud 在适用于 Compute Engine 实时迁移维护事件的集群配置指南中建议的 timeoutinterval 值。

无论您使用哪个 timeoutinterval 值,在测试集群时都需要评估这些值,特别是在实时迁移测试期间,因为实时迁移事件的时长可能会略有不同(具体取决于系统使用的机器类型)和其他因素(例如系统利用率)。

防护资源设置

在 SAP HANA 的高可用性集群配置指南中,Google Cloud 建议使用多个参数来配置高可用性集群的防护资源。建议的值与 Corosync 或 Linux 发行版设置的默认值不同。

下表显示了 Google Cloud 推荐的防护参数以及建议值和参数的详细信息。如需了解参数的默认值(可能因 Linux 发行版而异),请参阅 Linux 发行版的文档。

参数 推荐值 详细信息
pcmk_reboot_timeout 300(秒)

指定用于重新启动操作的超时值。pcmk_reboot_timeout 值应大于以下各项之和:

  • Corosync token 超时。
  • Corosync consensus 超时。
  • 重启操作完成所需的时长,包括任何延迟属性。
pcmk_monitor_retries 4 指定在超时期限内重试 monitor 命令的次数上限。
pcmk_delay_max 30(秒)

指定防护操作的随机延迟,以防止集群节点同时防护。为避免防护争用,通过确保仅为一个实例分配一个随机延迟,应该仅在两个节点 HANA 高可用性集群(纵向扩容)的其中一个防护资源上启用此参数。

在横向扩容 HANA 高可用性集群上,应在网站的所有节点上(主要或次要)启用此参数

测试 Google Cloud 上的 HA 集群

配置集群且将集群和 SAP HANA 系统部署到测试环境中后,您需要测试集群以确认 HA 系统配置正确且按预期运行。

如需确认故障切换是否按预期工作,请使用以下操作模拟各种故障场景:

  • 关停虚拟机
  • 创建内核崩溃
  • 关停应用
  • 中断实例之间的网络

此外,请在主要主机上模拟 Compute Engine 实时迁移事件,以确认它是否未触发故障切换。您可以使用 Google Cloud CLI 命令 gcloud compute instances simulate-maintenance-event 来模拟维护事件。

日志记录和监控

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

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

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

服务账号和高可用性集群

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

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

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

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

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

  • 防护
    • 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 地址:

内部直通式网络负载均衡器 VIP 实现

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

内部直通式网络负载均衡器还提供故障切换支持,您可以将其与 Compute Engine 健康检查搭配使用,以检测故障、触发故障切换,并将流量重新路由到操作系统原生高可用性集群中新的主要 SAP 系统。

故障切换支持是推荐的 VIP 实现,有诸多原因,包括:

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

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

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

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

如需详细了解故障切换支持,请参阅为内部直通式网络负载均衡器配置故障切换

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

静态路由 VIP 实现

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

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

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

别名 IP VIP 实现

对于多区域高可用性部署,不建议使用别名 IP VIP 实现,因为如果一个区域发生故障,则可能会延迟将别名 IP 重新分配到其他区域中的节点。请改用具有故障切换支持的内部直通式网络负载均衡器来实现 VIP。

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

如果您的现有多可用区 SAP 高可用性集群使用了 VIP 的别名 IP 实现,则可以迁移到内部直通式网络负载均衡器实现,而无需更改您的 VIP 地址。别名 IP 地址和内部直通式网络负载均衡器都使用 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 提供的本地故障解决方案。主机自动故障切换解决方案使用一个或多个备用主机,这些主机保持预留状态,以便在主机发生故障时从主实例或工作器主机接管工作。备用主机不包含任何数据,也不处理任何工作。

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

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

如需 SAP 提供的关于主机自动故障切换解决方案的更多信息,请参阅主机自动故障切换

何时应使用 Google Cloud 上的 SAP HANA 主机自动故障切换功能

SAP HANA 主机自动故障切换功能可预防会影响到 SAP HANA 横向扩容系统中单个节点的故障,包括以下故障:

  • SAP HANA 实例
  • 主机操作系统
  • 主机虚拟机

对于主机虚拟机故障,Google Cloud 的自动重启(通常能比主机自动故障切换更迅速地恢复 SAP HANA 主机虚拟机)和实时迁移结合使用可针对计划内和计划外的虚拟机中断提供保护。因此,就虚拟机保护的目的而言,SAP HANA 主机自动故障切换解决方案并非必需。

SAP HANA 主机自动故障切换功能不能提供针对可用区级故障的保护,因为 SAP HANA 横向扩容系统的所有节点都部署在单个可用区中。

SAP HANA 主机自动故障切换不会将 SAP HANA 数据预加载到备用节点的内存中,因此当备用节点接管时,整体节点恢复时间主要取决于将数据加载到备用节点的内存中所需的时间。

在以下情况下,请考虑使用 SAP HANA 主机自动故障切换:

  • 存在 Google Cloud 可能无法检测到的 SAP HANA 节点的软件或主机操作系统故障。
  • 直接原样迁移,您需要先重现本地 SAP HANA 配置,然后才能针对 Google Cloud 优化 SAP HANA。
  • 如果完全复制的、跨可用区高可用性配置会造成高昂费用,并且贵公司可以容忍以下情形:
    • 由于需要将 SAP HANA 数据加载到备用节点的内存,因此节点恢复时间更长。
    • 存在可用区故障的风险。

适用于 SAP HANA 的存储空间管理器

/hana/data/hana/log 卷仅装载在主实例和工作器主机上。发生接管时,主机自动故障切换解决方案使用 SAP HANA Storage Connector API 和适用于 SAP HANA 备用节点的 Google Cloud Storage Manager,将卷装载从备用主机移动到备用主机。

在 Google Cloud 上,使用 SAP HANA 主机自动故障切换的 SAP HANA 系统需要适用于 SAP HANA 的存储空间管理器。

支持的 SAP HANA 存储空间管理器版本

支持 2.0 及更高版本的 SAP HANA 存储空间管理器。2.0 之前的所有版本均已弃用,不受支持。如果您使用的是较低版本,请更新 SAP HANA 系统,以使用适用于 SAP HANA 的最新版本存储空间管理器。请参阅更新适用于 SAP HANA 的存储空间管理器

要确定您使用的版本是否已被弃用,请打开 gceStorageClient.py 文件。默认安装目录是 /hana/shared/gceStorageClient

从 2.0 版本开始,版本号会显示在 gceStorageClient.py 文件顶部的注释中,如以下示例所示。如果此处没有显示版本号,则表示您看到的是已弃用的 SAP HANA 存储空间管理器版本。

"""Google Cloud Storage Manager for SAP HANA Standby Nodes.

The Storage Manager for SAP HANA implements the API from the SAP provided
StorageConnectorClient to allow attaching and detaching of disks when
running in Compute Engine.

Build Date: Wed Jan 27 06:39:49 PST 2021
Version: 2.0.20210127.00-00

"""

安装适用于 SAP HANA 的存储空间管理器

如需安装 SAP HANA 的存储空间管理器,建议您使用自动部署方法,部署包含适用于 SAP HANA 的最新存储空间管理器的横向扩容 SAP HANA 系统。

如果您需要将 SAP HANA 主机自动故障切换功能添加到 Google Cloud 上的现有 SAP HANA 横向扩容系统,建议您采用类似的方法:使用 Google Cloud 提供的 Terraform 配置文件或 Deployment Manager 模板来部署新的横向扩容 SAP HANA 系统,然后将现有系统中的数据加载到新系统中。要加载数据,您可以使用标准 SAP HANA 备份和恢复过程,也可使用 SAP HANA 系统复制,这可能会缩短停机时间。如需详细了解系统复制,请参阅 SAP 说明 2473002 - 使用 HANA 系统复制来迁移横向扩容系统

如果您无法使用自动部署方法,请与 SAP 解决方案顾问联系(例如可通过 Google Cloud 咨询服务找到),以获取手动安装适用于 SAP HANA 的存储空间管理器方面的帮助。

当前还没有手动将适用于 SAP HANA 的存储空间管理器安装到现有或新的横向扩容 SAP HANA 系统中的文档。

如需详细了解 SAP HANA 主机自动故障切换的自动部署选项,请参阅自动部署具备 SAP HANA 主机自动故障切换功能的 SAP HANA 横向扩容系统

更新适用于 SAP HANA 的存储空间管理器

若要更新适用于 SAP HANA 的存储空间管理器,您可以先下载安装软件包,然后运行安装脚本,该脚本可更新 SAP HANA /shared 驱动器中的适用于 SAP HANA 的存储空间管理器的可执行文件。

以下过程仅适合“适用于 SAP HANA 的存储空间管理器”的版本 2。 如果您使用的是于 2021 年 2 月 1 日之前下载的 SAP HANA 存储空间管理器版本,请先安装第 2 版,然后再尝试更新 SAP HANA 存储空间管理器。

如需更新适用于 SAP HANA 的存储空间管理器,请执行以下操作:

  1. 检查适用于 SAP HANA 的当前存储空间管理器的版本:

    RHEL

    sudo yum check-update google-sapgcestorageclient

    SLES

    sudo zypper list-updates -r google-sapgcestorageclient
  2. 如有更新,请安装更新:

    RHEL

    sudo yum update google-sapgcestorageclient

    SLES

    sudo zypper update

    更新后的适用于 SAP HANA 的存储空间管理器会安装在 /usr/sap/google-sapgcestorageclient/gceStorageClient.py 中。

  3. 将现有的 gceStorageClient.py 替换为更新后的 gceStorageClient.py 文件:

    • 如果您的现有 gceStorageClient.py 文件位于默认安装位置 /hana/shared/gceStorageClient,请使用安装脚本更新该文件:

      sudo /usr/sap/google-sapgcestorageclient/install.sh
    • 如果现有的 gceStorageClient.py 文件不在 /hana/shared/gceStorageClient 中,请将更新后的文件复制到现有文件所在位置,以替换现有文件。

global.ini 文件中的配置参数

适用于 SAP HANA 的存储空间管理器的某些配置参数(包括是否启用防护机制)存储在 SAP HANA global.ini 文件的存储部分中。如果您使用 Google Cloud 提供的 Terraform 配置文件或 Deployment Manager 模板来部署具备主机自动故障切换功能的 SAP HANA 系统,部署流程会代您将配置参数添加到 global.ini 文件。

以下示例展示了为适用于 SAP HANA 的存储空间管理器创建的 global.ini 的内容:

[persistence]
basepath_datavolumes = %BASEPATH_DATAVOLUMES%
basepath_logvolumes = %BASEPATH_LOGVOLUMES%
use_mountpoints = %USE_MOUNTPOINTS%
basepath_shared = %BASEPATH_SHARED%

[storage]
ha_provider = gceStorageClient
ha_provider_path = %STORAGE_CONNECTOR_PATH%

#
# Example configuration for 2+1 setup
#
# partition_1_*__pd = node-mnt00001
# partition_2_*__pd = node-mnt00002
# partition_3_*__pd = node-mnt00003
# partition_*_data__dev = /dev/hana/data
# partition_*_log__dev = /dev/hana/log
# partition_*_data__mountOptions = -t xfs -o logbsize=256k
# partition_*_log__mountOptions = -t xfs -o logbsize=256k
# partition_*_*__fencing = disabled

[trace]
ha_gcestorageclient = info

适用于 SAP HANA 存储空间管理器的 Sudo 访问权限

为了管理 SAP HANA 服务和存储空间,适用于 SAP HANA 的存储管理器使用 SID_LCadm 用户账号,并且需要 sudo 访问权限,以访问某些系统二进制文件。

如果您使用 Google Cloud 提供的自动化脚本,部署具有主机自动故障切换功能的 SAP HANA,则系统会为您配置所需的 sudo 访问权限。

如果您手动安装 SAP HANA 的存储管理器,请使用 visudo 命令修改 /etc/sudoers 文件,以向 SID_LCadm 用户账号授予通过 sudo 访问以下必要的二进制文件的权限。

点击与您的操作系统对应的标签页:

RHEL

/bin/kill
/bin/mount
/bin/umount
/sbin/dmsetup
/sbin/lvdisplay
/sbin/lvscan
/sbin/pvscan
/sbin/vgchange
/sbin/vgscan
/usr/bin/gcloud
/usr/bin/lsof
/usr/bin/mkdir
/usr/bin/sg_persist
/usr/bin/systemctl
/usr/sbin/lsof
/usr/sbin/xfs_repair

SLES

/bin/kill
/bin/mount
/bin/umount
/sbin/dmsetup
/sbin/lvdisplay
/sbin/lvscan
/sbin/pvscan
/sbin/vgchange
/sbin/vgscan
/sbin/xfs_repair
/usr/bin/gcloud
/usr/bin/lsof
/usr/bin/mkdir
/usr/bin/sg_persist
/usr/bin/systemctl
/usr/sbin/lsof

以下示例展示了 /etc/sudoers 文件中的一个条目。在此示例中,关联的 SAP HANA 系统的系统 ID 替换为 SID_LC。示例条目由 Google Cloud 提供的 Deployment Manager 模板创建,用于实现具备主机自动故障切换功能的 SAP HANA 横向扩容系统。Deployment Manager 模板创建的条目包括仅为了向后兼容性而保留的、不再需要的二进制文件。您只需要添加前文列表中显示的二进制文件即可。

SID_LCadm ALL=NOPASSWD: /sbin/multipath,/sbin/multipathd,/etc/init.d/multipathd,/usr/bin/sg_persist,/bin/mount,/bin/umount,/bin/kill,/usr/bin/lsof,/usr/bin/systemctl,/usr/sbin/lsof,/usr/sbin/xfs_repair,/sbin/xfs_repair,/usr/bin/mkdir,/sbin/vgscan,/sbin/pvscan,/sbin/lvscan,/sbin/vgchange,/sbin/lvdisplay,/usr/bin/gcloud,/sbin/dmsetup

用于 SAP HANA 主机自动故障切换的 NFS 存储空间

具备主机自动故障切换功能的 SAP HANA 横向扩容系统需要 NFS 解决方案(例如 Filestore)以在所有主机之间共享 /hana/shared/hanabackup 卷。您必须自行设置 NFS 解决方案。

使用自动部署方法时,您可以在部署文件中提供有关 NFS 服务器的信息,以便在部署期间装载 NFS 目录。

您使用的 NFS 卷必须是空的。任何现有文件都可能与部署流程发生冲突,尤其是在相应文件或文件夹引用 SAP 系统 ID (SID) 的情况下。部署流程无法确定能否覆盖这些文件。

部署流程会将 /hana/shared/hanabackup 卷存储在 NFS 服务器上,并在所有主机(包括备用主机)上装载该 NFS 服务器。然后,主实例主机管理该 NFS 服务器。

如果要实现备份解决方案(例如适用于 SAP HANA 的 Cloud Storage Backint 代理),您可以在部署完成后从 NFS 服务器中移除 /hanabackup 卷。

如需详细了解 Google Cloud 上可用的共享文件解决方案,请参阅适用于 SAP on Google Cloud 的文件共享解决方案

操作系统支持

Google Cloud 仅在以下操作系统上支持 SAP HANA 主机自动故障切换:

  • RHEL for SAP 7.7 或更高版本
  • RHEL for SAP 8.1 或更高版本
  • RHEL for SAP 9.0 或更高版本
    • 在 RHEL for SAP 9.x 上安装任何 SAP 软件之前,您必须在宿主机上安装其他软件包,尤其是 chkconfigcompat-openssl11。如果您使用 Compute Engine 提供的映像,则系统会自动为您安装这些软件包。如需查看 SAP 提供的详细信息,请参阅 SAP 说明 3108316 - Red Hat Enterprise Linux 9.x:安装和配置
  • SLES for SAP 12 SP5
  • SLES for SAP 15 SP1 或更高版本

如需查看 Compute Engine 提供的公共映像,请参阅映像

具备主机自动故障切换的 SAP HANA 系统的架构

下图显示了 Google Cloud 上的横向扩容架构,其中包括 SAP HANA 主机自动故障切换功能。在该图中,适用于 SAP HANA 的存储空间管理器由其可执行文件 gceStorageClient 的名称表示。

下图显示的是工作器节点 2 发生故障并且备用节点接管的情况。 适用于 SAP HANA 的存储空间管理器与 SAP Storage Connector API(未显示)协同工作,以便将包含 /hana/data/hana/logs 卷的磁盘从故障工作器节点中分离出来,并将其重新装载到备用节点上,该备用节点随后或变为工作器节点 2,而故障节点将成为备用节点。

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

适用于 SAP HANA 高可用性配置的自动部署选项

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

如需自动部署 SAP HANA 高可用性系统,您可以使用 Terraform 或 Deployment Manager。

Google Cloud 会提供部署特定的 Terraform 配置文件供您填写。您需要使用标准 Terraform 命令初始化当前的工作目录并下载 Google Cloud 提供的 Terraform 提供程序插件和模块文件,然后应用配置来部署 SAP HANA 系统。

Google Cloud 提供的 Deployment Manager 模板包括您完成的 template.yaml 配置文件。Deployment Manager 会读取配置文件并部署 SAP HANA 系统。

这些自动部署方法会代您部署 SAP HANA 系统,该系统受 SAP 全面支持并遵循 SAP 和 Google Cloud 的最佳做法。

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

对于 SAP HANA,自动部署方法会部署性能优化型高可用性 Linux 集群,该集群提供以下特性:

  • 自动故障切换。
  • 自动重启。
  • 预留指定的虚拟 IP 地址(VIP)。
  • 内部 TCP/UDP 负载均衡提供了故障切换支持,该支持管理从虚拟 IP 地址(VIP)到 HA 集群节点的路由。
  • 允许 Compute Engine 健康检查来监控集群中的虚拟机实例的防火墙规则。
  • Pacemaker 高可用性集群资源管理器。
  • Google Cloud 防护机制。
  • 包含每个 SAP HANA 实例所需 Persistent Disk 的虚拟机。
  • 已配置 SAP HANA 实例以进行同步复制和内存预加载。

您可以使用以下部署方法之一来部署适用于 SAP HANA 的高可用性集群:

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

您可以使用以下部署方法之一来部署具备主机自动故障切换功能的 SAP HANA 横向扩容系统:

对于具备 SAP HANA 主机自动故障切换功能的 SAP HANA 横向扩容系统,自动部署方法会部署以下组件:

  • 1 个主 SAP HANA 实例
  • 1 到 15 个工作器主机
  • 1 到 3 个备用主机
  • 每个 SAP HANA 主机 1 个虚拟机
  • 主实例主机和工作器主机的永久性磁盘
  • 适用于 SAP HANA 备用节点的 Google Cloud 存储空间管理器

具备主机自动故障切换功能的 SAP HANA 横向扩容系统需要 NFS 解决方案(例如 Filestore)以在所有主机之间共享 /hana/shared/hanabackup 卷。为了使 Terraform 或 Deployment Manager 可以在部署期间装载 NFS 目录,您必须先自行设置 NFS 解决方案,然后再部署 SAP HANA 系统。

您可以按照创建实例中的说明快速轻松地设置 Filestore NFS 服务器实例。

SAP HANA 的主动/主动(启用读取)选项

从 SAP HANA 2.0 SPS1 开始,SAP 为 SAP HANA 系统复制场景提供了主动/主动(启用读取)设置。在配置了主动/主动(启用读取)设置的复制系统中,系统将打开辅助系统上的 SQL 端口以供读取访问。这样,您就可以使用辅助系统来执行读取密集型任务,并且能够更好地在计算资源之间均衡工作负载的分布,从而提高 SAP HANA 数据库的整体性能。如需详细了解主动/主动(启用读取)功能,请参阅特定于您的 SAP HANA 版本的 SAP HANA 管理指南SAP 说明 1999880

如需配置启用了辅助系统读取访问的系统复制功能,您需要使用操作模式 logreplay_readaccess。但是,若要使用此操作模式,您的主系统和辅助系统必须运行相同的 SAP HANA 版本。因此,在滚动升级期间,除非两个系统都运行同一 SAP HANA 版本,否则对辅助系统的只读权限无法实现。

SAP 支持通过以下方法来连接到主动/主动(启用读取)辅助系统:

  • 直接连接,即直接与辅助系统建立明确连接。
  • 间接连接,即在主系统上执行一个带有提示的 SQL 语句,系统在评估该语句时会将查询重新路由到辅助系统。

下图展示了第一种方法,其中的应用将通过在 Google Cloud 中部署的 Pacemaker 集群直接访问辅助系统。其中用到了一个额外的浮动 IP 地址或虚拟 IP 地址 (VIP),用于定位 SAP HANA Pacemaker 集群中充当辅助系统的虚拟机实例。该 VIP 地址会随辅助系统变化,可以在发生意外故障或在进行计划维护时,将其读取工作负载从一个集群节点迁移到另一个集群节点。如需了解可用的 VIP 地址实现方法,请参阅 Google Cloud 上的虚拟 IP 地址实现

主动/主动(启用读取)SAP HANA 纵向扩容系统的高可用性 Linux 集群概览

如需了解如何在 Pacemaker 集群中配置启用了主动/主动(启用读取)设置的 SAP HANA 系统复制功能,请参阅下文:

后续步骤

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

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

如需详细了解适用于 Google Cloud 上的 SAP HANA 的高可用性,请参阅 SAP HANA 操作指南

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

SAP 提供的有关 SAP HANA 高可用性功能的详细信息

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