IBM Cloud Docs
在 SUSE Linux Enterprise High Availability Extension 集群中配置 SAP HANA 扩展系统复制

在 SUSE Linux Enterprise High Availability Extension 集群中配置 SAP HANA 扩展系统复制

以下信息介绍了用于管理 SAP HANA Scale-Up System Replication 的 SUSE Enterprise Linux Server (SLES) High Availability Extension (HAE) 集群的配置。 群集使用 IBM® Power® Virtual Server 中的虚拟服务器实例作为群集节点。

本说明介绍了如何在 SLES HA Extension 集群上的性能优化场景中为单个数据库部署自动执行 SAP HANA Scale-Up System Replication。

本信息面向计划在 Power Virtual Server 上高可用性部署 SAP HANA 的架构师和专家。

准备工作

查看 IBM Power Virtual Server 参考资料中为 SAP 应用程序实施高可用性 中列出的一般要求、产品文档、支持文章和 SAP 注释。

先决条件

  • Power Virtual Server 中的两个虚拟服务器实例上部署了 SUSE High Availability 集群。
  • 虚拟服务器实例需要满足 SAP HANA 范围内系统的硬件和资源要求。 请遵循 规划部署 中的指导原则。
  • 虚拟服务器实例的主机名必须符合 SAP HANA 的要求。
  • SAP HANA 在两个虚拟服务器实例上安装并配置 系统复制 安装 和设置 HANA 系统复制并非 环境所特有。SAP HANA SAP HANA Power Virtual Server 您需要遵循标准的安装和设置程序。
  • 需要有效的 SUSE Linux Enterprise Server for SAP Applications 许可证才能启用安装 SAP HANA 所需的资源库和用于 HA 配置的资源代理。
  • 请参阅 SUSE Linux Enterprise Server for SAP 应用指南中的“先决条件”一章。

在 IBM 上的 SLES HA 扩展群集中配置 SAP HANA 系统复制 Power Virtual Server

这些说明基于 SUSE 产品文档和 在 IBM Power Virtual Server 参考资料上为 SAP 应用程序实现高可用性 中列出的文章。

准备环境变量

为简化设置,请为两个节点上的 root 准备以下环境变量。 这些环境变量将与本信息后面的操作系统命令一起使用。

在两个节点上设置以下环境变量。

# General settings
export SID=<SID>            # SAP HANA System ID (uppercase)
export sid=<sid>            # SAP HANA System ID (lowercase)
export INSTNO=<INSTNO>      # SAP HANA instance number

# Cluster node 1
export NODE1=<HOSTNAME_1>   # Virtual server instance hostname
export DC1="Site1"          # HANA System Replication site name

# Cluster node 2
export NODE2=<HOSTNAME_2>   # Virtual server instance hostname
export DC2="Site2"          # HANA System Replication site name

# Single zone
export VIP=<IP address>     # SAP HANA System Replication cluster virtual IP address

设置额外的环境变量以实施单一区域

查看 保留虚拟 IP 地址 中的信息,并为 SAP HANA 系统复制群集保留一个虚拟 IP 地址。 将 VIP 环境变量设置为保留 IP 地址。

安装 SAP HANA 资源代理

SAP Hana 资源代理SAP HanaTopology 资源代理是 SLES for SAP 应用程序发行版的一部分。

要安装资源和拓扑代理,请确保已安装包 yast2-sap-ha (如 设置 SAP HANA 集群中所述),并按照以下步骤使用 yast2 配置 HANA 集群。

对于扩展方案,请遵循 SAP HANA System Replication Scale-Up - Performance-Optimized Scenario 指南中的 安装附加软件部分。

启动 SAP HANA 系统

启动 SAP HANA 并验证 HANA 系统复制是否激活。 有关详细信息,请参阅 检查系统复制状态详细信息

在两个节点上运行以下命令。

sudo -i -u ${sid}adm -- HDB start
sudo -i -u ${sid}adm -- <<EOT
    hdbnsutil -sr_state
    HDBSettings.sh systemReplicationStatus.py
EOT

启用 SAP HANA srConnectionChanged( ) 钩子

SAP HANA 的最新版本提供了钩子,使 SAP HANA 可以针对某些事件发送通知。 有关详细信息,请参阅 实施 HA/DR 提供程序。

srConnectionChanged( ) 钩子提高了群集检测 HANA 系统复制状态变化的能力,这种变化需要群集采取行动。 目的是通过防止意外接管来防止数据丢失和损坏。

在所有 SAP HANA 实例上激活 srConnectionChanged( ) 钩子

  1. 停止群集。

    在 NODE1 上,运行以下命令。

    crm cluster stop --all
    

    然后,按照 设置 SAP HANA HA/DR 提供商中所述的步骤操作。

  2. 验证挂钩是否起作用。

    • 重新启动两个 HANA 实例并验证钩子脚本是否按预期运行。
    • 执行触发钩子的操作,例如停止 HANA 实例。
    • 检查钩子是否在跟踪文件中记录了任何内容。

    在两个节点上运行以下命令。

    停止 HANA 实例。

    sudo -i -u ${sid}adm -- HDB stop
    

    启动 HANA 实例。

    sudo -i -u ${sid}adm -- HDB start
    

    检查钩子是否将信息记录到跟踪文件中。

    sudo -i -u ${sid}adm -- sh -c 'grep "ha_dr_SAPHanaSR.*crm_attribute" $DIR_INSTANCE/$VTHOSTNAME/trace/nameserver_* | cut -d" " -f2,3,5,17'
    

    验证钩子功能后,就可以重新启动 HA 群集。

  3. 启动集群。

    在 NODE1 上,运行以下命令。

    启动集群。

    crm cluster start --all
    

    检查群集的状态。

    crm status --full
    

配置一般群集属性

为避免在初始测试和后期制作期间发生资源故障转移,请为资源粘性和迁移阈值参数设置以下默认值。

这些步骤在 配置群集中有所描述。

IBM Power10 系统提供一个默认启用的集成硬件看门狗定时器。 配置群集说明建议将 softdog 用作软件看门狗定时器。 使用更可靠的 IBM Power10 硬件看门狗定时器。

测试 SAP HANA 系统复制群集

彻底测试群集配置以确保群集正常运行至关重要。 以下信息提供了一些故障切换测试场景示例。 这不是一份完整的测试方案清单。

例如,每个测试用例的说明包括以下信息。

  • 正在测试的组件
  • 测试说明
  • 启动故障转移测试前的先决条件和群集状态
  • 测试程序
  • 预期行为和结果
  • 恢复程序

测试 1 - 测试主数据库实例故障

使用以下信息测试主数据库实例的故障。

测试 1 - 说明

模拟在 NODE1 上运行的 HANA 主数据库实例崩溃。

测试 1 - 先决条件

  • 用于 HANA 系统复制的功能性双节点 SLES HA 扩展集群。
  • 两个群集节点都处于活动状态。
  • 在 NODE1 和 NODE2 上启动的群集。
  • AUTOMATED_REGISTER=false 配置的集群资源 SAPHana_${SID}_${INSTNO}
  • 检查 SAP HANA 系统复制状态:
    • SAP HANA 主数据库运行在 NODE1
    • SAP HANA 备用数据库运行在 NODE2
    • HANA 系统复制已激活并保持同步

半自动化测试案例中描述了测试 1 的变体。

测试 1 程序

使用以下命令运行测试 1。

在用户 ${sid}adm 时发送 SIGKILL 信号,使 SAP HANA 初级程序崩溃。

在 NODE1 上,运行以下命令。

sudo -i -u ${sid}adm -- HDB kill-9

测试 1 - 预期行为

您可以预期测试会出现以下行为。

  • SAP HANA NODE1 上的主实例崩溃。
  • 群集会检测到已停止的 HANA 主数据库,并将资源标记为 failed
  • 群集会将 NODE2 上的辅助 HANA 数据库升级为新的主数据库。
  • 群集释放 NODE1 上的虚拟 IP 地址,并在 NODE2 上的新主 IP 地址上获取该地址。
  • 如果应用程序(如 SAP NetWeaver )连接到 SAP HANA 的租户数据库,则应用程序会自动重新连接到新的主数据库。

测试 1 - 恢复程序

由于群集资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=false 配置的,因此群集不会重启故障的 HANA 数据库,也不会将其注册到新的主数据库中。 这意味着,新主系统( NODE2 )的状态也显示辅助系统处于 "CONNECTION TIMEOUT"(连接超时)状态。

使用以下命令重新注册前主设备为新辅助设备。

在 NODE1 上,运行以下命令。

sudo -i -u ${sid}adm -- <<EOT
    hdbnsutil -sr_register \
      --name=${DC1} \
      --remoteHost=${NODE2} \
      --remoteInstance=00 \
      --replicationMode=sync \
      --operationMode=logreplay \
      --online
EOT

使用以下命令验证系统复制状态。

sudo -i -u ${sid}adm -- <<EOT
    hdbnsutil -sr_state
    HDBSettings.sh systemReplicationStatus.py
EOT

手动注册和资源刷新后,新的二级实例重新启动,并显示同步 (SOK) 状态。

在 NODE1 上,运行以下命令。

crm resource refresh SAPHana_${SID}_${INSTNO}

测试 2 - 测试运行主数据库的节点发生故障的情况

使用以下信息测试运行主数据库的节点是否发生故障。

测试 2 - 说明

模拟运行主 HANA 数据库的节点崩溃。

测试 2 - 先决条件

在执行测试 2 之前,请参阅以下先决条件。

  • 您需要一个功能正常的双节点 SLES HA 扩展群集来进行 HANA 系统复制。
  • 确保两个节点都处于活动状态。
  • 确认群集已在 NODE1 和 NODE2 上启动。
  • 检查 SAP HANA 系统复制状态。
    • SAP HANA 主数据库在 NODE2 上运行。
    • 二级 SAP HANA 数据库在 NODE1 上运行。
    • HANA 系统复制已激活并保持同步。

测试 2 - 准备

确保群集资源 SAPHana_${SID}_${INSTNO} 已配置为 AUTOMATED_REGISTER=true

在 NODE1 上,运行以下命令。

crm resource update SAPHana_${SID}_${INSTNO} AUTOMATED_REGISTER=true
crm resource config SAPHana_${SID}_${INSTNO}

测试 2 - 测试程序

通过发送崩溃系统请求,在 NODE2 上崩溃主系统。

在 NODE2 上,运行以下命令。

sync; echo c > /proc/sysrq-trigger

测试 2 - 预期行为

您可以预期测试会出现以下行为。

  • NODE2 关闭。
  • 群集检测到故障节点,并将其状态设置为 OFFLINE
  • 群集会将 NODE1 上的辅助 HANA 数据库升级为新的主数据库。
  • 群集通过 NODE1 获取新主服务器上的虚拟 IP 地址。
  • 如果应用程序(如 SAP NetWeaver )连接到 SAP HANA 的租户数据库,则应用程序会自动重新连接到新的主数据库。

测试 2 - 恢复程序

使用以下信息恢复测试 2。

  1. 登录 IBM Cloud® 控制台,启动 NODE2 实例。

  2. 等待 NODE2 再次可用,然后重启群集框架。

    • 在 NODE2 上,运行以下命令。
    crm cluster start
    
    crm status --full
    

由于群集资源 SAPHana_${SID}_${INSTNO} 是与 AUTOMATED_REGISTER=true 一起配置的,因此当 NODE2 重新加入群集且前主服务器重新注册为辅助服务器时,SAP HANA 将重新启动。

测试 3 - 测试辅助数据库实例故障

使用以下信息测试辅助数据库实例的故障。

测试 3 - 说明

模拟 HANA 备用数据库崩溃。

测试 3 - 先决条件

在执行测试 3 之前,请参阅以下先决条件。

  • 用于 HANA 系统复制的功能性双节点 SLES HA 扩展集群。
  • 两个节点都处于活动状态。
  • 群集在 NODE1 和 NODE2 上启动。
  • 集群资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=true 配置的。
  • 检查 SAP HANA 系统复制状态。
    • SAP HANA 主数据库在 NODE1 上运行。
    • 二级 SAP HANA 数据库在 NODE2 上运行。
    • HANA 系统复制已激活并保持同步。

测试 3 - 测试程序

在用户 ${sid}adm 时发送 SIGKILL 信号,使 SAP HANA secondary 崩溃。

在 NODE2 上,运行以下命令。

sudo -i -u ${sid}adm -- HDB kill-9

测试 3 - 预期行为

您可以预期测试会出现以下行为。

  • SAP HANA NODE2 上的二级碰撞。
  • 群集会检测到已停止的二级 HANA 数据库,并将资源标记为 failed
  • 群集重新启动辅助 HANA 数据库。
  • 群集检测到系统复制再次同步。

测试 3 - 恢复程序

使用以下信息恢复测试 2。

  1. 等待辅助 HANA 实例启动并再次同步 (SOK),然后清理失败的资源操作,如 crm status 所示。

  2. 在 NODE2 上,运行以下命令。

    crm resource refresh SAPHana_${SID}_${INSTNO}
    
    crm status --full
    

测试 4 - 测试将 SAP Hana 资源手动移动到另一个节点

使用以下信息测试将 SAP Hana 资源手动移动到另一个节点。

测试 4 - 说明

使用群集命令将主实例移动到另一个节点,以便进行维护。

测试 4 - 先决条件

在执行测试 4 之前,请参阅以下先决条件。

  • 用于 HANA 系统复制的功能性双节点 SLES HA 扩展集群。
  • 两个节点都处于活动状态。
  • 群集在 NODE1 和 NODE2 上启动。
  • 集群资源 SAPHana_${SID}_${INSTNO} 是通过 AUTOMATED_REGISTER=true 配置的。
  • 检查 SAP HANA 系统复制状态:
    • SAP HANA 主数据库运行在 NODE1
    • SAP HANA 备用数据库运行在 NODE2
    • HANA 系统复制已激活并保持同步

测试 4 - 测试程序

使用 crm resource move 命令将 SAP HANA 主节点移动到其他节点。

在 NODE1 上,运行以下命令。

crm resource move SAPHana_${SID}_${INSTNO}-clone

测试 4 - 预期行为

您可以预期测试会出现以下行为。

  • 集群创建位置限制,以移动资源。
  • 群集触发对辅助 HANA 数据库的接管。
  • 如果应用程序(如 SAP NetWeaver )连接到 SAP HANA 的租户数据库,则应用程序会自动重新连接到新的主数据库。

测试 4 - 恢复程序

使用以下信息恢复测试 2。

必须删除自动创建的位置限制,以便将来进行自动故障切换。

等到主 HANA 实例激活后再移除限制。

群集将 HANA 数据库作为新的辅助实例注册并启动。

在 NODE1 上,运行以下命令。

crm constraint
crm resource clear SAPHana_${SID}_${INSTNO}-clone
crm constraint
crm status --full