在 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 集群。
- 按照 实施 SUSE Linux Enterprise Server 高可用性群集 安装并设置 SLES High Availability Extension 群集。
- 按照前述文件的描述配置和验证围栏。
- 虚拟服务器实例需要满足 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( ) 钩子
-
停止群集。
在 NODE1 上,运行以下命令。
crm cluster stop --all
然后,按照 设置 SAP HANA HA/DR 提供商中所述的步骤操作。
-
验证挂钩是否起作用。
- 重新启动两个 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 群集。
-
启动集群。
在 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。
-
登录 IBM Cloud® 控制台,启动 NODE2 实例。
-
等待 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。
-
等待辅助 HANA 实例启动并再次同步 (
SOK
),然后清理失败的资源操作,如crm status
所示。 -
在 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