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

在 SUSE Enterprise Linux 上使用 Azure NetApp 文件实现 SAP HANA 纵向扩展的高可用性

本文介绍通过 NFS 装载 HANA 文件系统时,如何在纵向扩展部署中使用 Azure NetApp 文件配置 SAP HANA 系统复制。 在示例配置和安装命令中,使用实例编号 03 和 HANA 系统 ID HN1。 SAP HANA 复制由一个主节点和至少一个辅助节点组成。

如果本文档中的步骤标有以下前缀,它们的含义如下:

  • [A] :该步骤适用于所有节点。
  • [1]:该步骤仅适用于 node1。
  • [2]:该步骤仅适用于 node2。

请先阅读以下 SAP 说明和文档:

注意

本文包含对 Microsoft 不再使用的术语的引用。 在从软件中删除该术语后,我们会将其从本文中删除。

概述

传统上,在纵向扩展环境中,SAP HANA 的所有文件系统都从本地存储进行装载。 在 SLES 上设置 SAP HANA 系统复制中发布了如何在 SUSE Enterprise Linux 上设置 SAP HANA 系统复制的 HA 的说明。

若要在 Azure NetApp 文件 NFS 共享上实现纵向扩展系统的 SAP HANA HA,需要在群集中进行额外资源配置。 进行此配置的目的是当一个节点失去对 Azure NetApp 文件上 NFS 共享的访问权限时 HANA 资源能够恢复。

Diagram that shows SAP HANA HA scale-up on Azure NetApp Files.

在每个节点上使用 Azure NetApp 文件将 SAP HANA 文件系统装载到 NFS 共享。 文件系统 /hana/data、/hana/log 和 /hana/shared 对于每个节点都是唯一的。

已在 node1 (hanadb1) 上装载:

  • /hana/data 上的 10.3.1.4:/hanadb1-data-mnt00001 on
  • /hana/log 上的 10.3.1.4:/hanadb1-log-mnt00001
  • /hana/shared 上的 10.3.1.4:/hanadb1-shared-mnt00001

已在 node2 (hanadb2) 上装载:

  • /hana/data 上的 10.3.1.4:/hanadb2-data-mnt00001
  • /hana/log 上的 10.3.1.4:/hanadb2-log-mnt00001
  • /hana/data 上的 10.3.1.4:/hanadb2-shared-mnt0001

注意

两个节点之间不共享文件系统 /hana/shared、/hana/data 和 /hana/log。 每个群集节点都有自己的单独文件系统。

SAP HA HANA 系统复制配置使用专用的虚拟主机名和虚拟 IP 地址。 在 Azure 上,需要负载均衡器才能使用虚拟 IP 地址。 显示的配置展示了一个负载均衡器,其中:

  • 前端配置 IP 地址:10.3.0.50 (hn1-db)
  • 探测端口:62503

设置 Azure NetApp 文件基础结构

在继续设置 Azure NetApp 文件基础结构之前,请先通过 Azure NetApp 文件文档熟悉该基础结构。

Azure NetApp 文件在多个 Azure 区域中可用。 查看所选 Azure 区域是否提供 Azure NetApp 文件。

有关 Azure NetApp 文件在各 Azure 区域的可用性的信息,请参阅按 Azure 区域划分的 Azure NetApp 文件可用性

重要注意事项

为 SAP HANA 纵向扩展系统创建 Azure NetApp 文件时,请注意适用于 SAP HANA 的 Azure NetApp 文件上的 NFS v4.1 卷中记录的重要注意事项。

调整 Azure NetApp 文件上的 HANA 数据库的大小

Azure NetApp 文件卷的吞吐量取决于卷大小和服务级别,如 Azure NetApp 文件的服务级别中所述。

使用 Azure NetApp 文件为 Azure 上的 SAP HANA 设计基础结构时,请注意适用于 SAP HANA 的 Azure NetApp 文件上的 NFS v4.1 卷中的建议。

本文中的配置提供了简单的 Azure NetApp 文件卷。

重要

对于性能是关键的生产系统,建议评估和考虑使用针对 SAP HANA 的 Azure NetApp 文件应用程序卷组

本文中用于装载 /hana/shared 的所有命令均为 NFSv4.1 /hana/shared 卷展示。 如果将 hana/shared 卷作为 NFSv3 卷部署,请不要忘记为 NFSv3 调整 /hana/shared 的装载命令。

部署 Azure NetApp 文件资源

以下说明假定你已部署 Azure 虚拟网络。 Azure NetApp 文件资源和 VM(装载 Azure NetApp 文件资源处)必须部署在同一 Azure 虚拟网络或对等 Azure 虚拟网络中。

  1. 按照创建 NetApp 帐户中的说明,在所选的 Azure 区域中创建一个 NetApp 帐户。

  2. 按照设置 Azure NetApp 文件容量池中的说明,设置 Azure NetApp 文件容量池。

    本文中介绍的 HANA 体系结构使用超高性能服务级别的单个 Azure NetApp 文件容量池。 对于 Azure 上的 HANA 工作负载,建议使用 Azure NetApp 文件“超高性能”或“高级”服务级别

  3. 按照将子网委派给 Azure NetApp 文件中的说明所述,将子网委派给 Azure NetApp 文件。

  4. 按照为 Azure NetApp 文件创建 NFS 卷中的说明部署 Azure NetApp 文件卷。

    部署卷时,请务必选择“NFSv4.1”版本。 将卷部署在指定的 Azure NetApp 文件子网中。 将自动分配 Azure NetApp 文件卷的 IP 地址。

    Azure NetApp 文件资源和 Azure VM 必须位于同一 Azure 虚拟网络或对等 Azure 虚拟网络中。 例如,hanadb1-data-mnt00001、hanadb1-log-mnt00001 等是卷名称,nfs://10.3.1.4/hanadb1-data-mnt00001、nfs://10.3.1.4/hanadb1-log-mnt00001 等是 Azure NetApp 文件卷的文件路径。

    hanadb1 上:

    • 卷 hanadb1-data-mnt00001 (nfs://10.3.1.4:/hanadb1-data-mnt00001)
    • 卷 hanadb1-log-mnt00001 (nfs://10.3.1.4:/hanadb1-log-mnt00001)
    • 卷 hanadb1-shared-mnt00001 (nfs://10.3.1.4:/hanadb1-shared-mnt00001)

    hanadb2 上:

    • 卷 hanadb2-data-mnt00001 (nfs://10.3.1.4:/hanadb2-data-mnt00001)
    • 卷 hanadb2-log-mnt00001 (nfs://10.3.1.4:/hanadb2-log-mnt00001)
    • 卷 hanadb2-shared-mnt00001 (nfs://10.3.1.4:/hanadb2-shared-mnt00001)

准备基础结构

SUSE Linux Enterprise Server for SAP Applications 中已随附 SAP HANA 的资源代理。 Azure 市场中提供了 SUSE Linux Enterprise Server for SAP Applications 12 或 15 的映像。 可使用该映像来部署新的 VM。

通过 Azure 门户手动部署 Linux VM

本文档假定你已部署 Azure 虚拟网络资源组和子网。

部署用于 SAP HANA 的 VM。 选择 HANA 系统支持的合适的 SLES 映像。 可以通过任何一个可用性选项(虚拟机规模集、可用性区域或可用性集)来部署 VM。

重要

请确保你选择的 OS 已通过 SAP 针对你计划在部署中使用的特定 VM 类型上的 SAP HANA 的认证。 可以在 SAP HANA 认证的 IaaS 平台中查找 SAP HANA 认证的 VM 类型及其 OS 版本。 请确保查看 VM 类型的详细信息,以获取适用于特定 VM 类型的 SAP HANA 支持的 OS 版本的完整列表。

配置 Azure 负载均衡器

在配置 VM 期间,可以在网络部分中创建或选择现有的负载均衡器。 按照后续步骤设置用于 HANA 数据库 HA 设置的标准负载均衡器。

按照创建负载均衡器中的步骤,使用 Azure 门户为高可用性 SAP 系统设置标准负载均衡器。 在设置负载均衡器期间,请注意以下几点:

  1. 前端 IP 配置:创建前端 IP。 选择与数据库虚拟机相同的虚拟网络和子网名称。
  2. 后端池:创建后端池并添加数据库 VM。
  3. 入站规则:创建负载均衡规则。 对两个负载均衡规则执行相同步骤。
    • 前端 IP 地址:选择前端 IP。
    • 后端池:选择后端池。
    • 高可用性端口:选择此选项。
    • 协议:选择“TCP”。
    • 运行状况探测:创建具有以下详细信息的运行状况探测:
      • 协议:选择“TCP”。
      • 端口:例如 625<instance-no.>。
      • 间隔时间:输入 5。
      • 探测阈值:输入 2。
    • 空闲超时(分钟):输入 30。
    • 启用浮动 IP:选择此选项。

注意

不会遵循运行状况探测配置属性 numberOfProbes(在门户中也称为“运行不正常阈值”)。 若要控制成功或失败的连续探测的数量,请将属性 probeThreshold 设置为 2。 当前无法使用 Azure 门户设置此属性,因此请使用 Azure CLIPowerShell 命令。

有关 SAP HANA 所需端口的详细信息,请参阅 SAP HANA 租户数据库指南中的连接到租户数据库一章或 SAP 说明 2388694

重要

负载均衡方案中的 NIC 辅助 IP 配置不支持浮动 IP。 有关详细信息,请参阅 Azure 负载均衡器限制。 如果需要更多用于 VM 的 IP 地址,可再部署一个 NIC。

如果没有公共 IP 地址的 VM 放在内部(无公共 IP 地址)标准 Azure 负载均衡器的后端池中,则除非执行更多的配置以允许路由到公共终结点,否则就没有出站 Internet 连接。 有关如何实现出站连接的详细信息,请参阅 SAP 高可用性方案中使用 Azure 标准负载均衡器的 VM 的公共终结点连接

重要

  • 请勿在放置于负载均衡器之后的 Azure VM 上启用 TCP 时间戳。 启用 TCP 时间戳会导致运行状况探测失败。 将参数 net.ipv4.tcp_timestamps 设置为 0。 有关详细信息,请参阅负载均衡器运行状况探测和 SAP 说明 2382421
  • 为防止 saptune 将手动设置的 net.ipv4.tcp_timestamps 值从 0 更改回 1,请将 saptune 版本更新为 3.1.1 或更高版本。 有关详细信息,请参阅 saptune 3.1.1 – 我是否需要更新?

装载 Azure NetApp 文件卷

  1. [A] 为 HANA 数据库卷创建装入点。

    sudo mkdir -p /hana/data/HN1/mnt00001
    sudo mkdir -p /hana/log/HN1/mnt00001
    sudo mkdir -p /hana/shared/HN1
    
  2. [A] 验证 NFS 域设置。 请确保域配置为默认的 Azure NetApp 文件域(即 defaultv4iddomain.com),并且映射设置为 nobody

    sudo cat /etc/idmapd.conf
    

    示例输出:

    [General]
    Domain = defaultv4iddomain.com
    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nobody
    

    重要

    确保在 VM 上的 /etc/idmapd.conf 中设置 NFS 域,以匹配 Azure NetApp 文件上的默认域配置 defaultv4iddomain.com。 如果 NFS 客户端(即 VM)上的域配置和 NFS 服务器(即 Azure NetApp 配置)之间不匹配,则 VM 上已装载的 Azure NetApp 卷上文件的权限将显示为“nobody”

  3. [A] 编辑两个节点上的 /etc/fstab,以永久装载与每个节点相关的卷。 以下示例演示如何永久装载卷。

    sudo vi /etc/fstab
    

    在两个节点上的 /etc/fstab 中添加以下条目。

    hanadb1 的示例:

    10.3.1.4:/hanadb1-data-mnt00001 /hana/data/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.3.1.4:/hanadb1-log-mnt00001 /hana/log/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.3.1.4:/hanadb1-shared-mnt00001 /hana/shared/HN1  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    

    hanadb2 的示例:

    10.3.1.4:/hanadb2-data-mnt00001 /hana/data/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.3.1.4:/hanadb2-log-mnt00001 /hana/log/HN1/mnt00001  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    10.3.1.4:/hanadb2-shared-mnt00001 /hana/shared/HN1  nfs   rw,nfsvers=4.1,hard,timeo=600,rsize=262144,wsize=262144,noatime,lock,_netdev,sec=sys  0  0
    

    装载所有卷。

    sudo mount -a
    

    对于需要更高吞吐量的工作负载,请考虑使用 nconnect 装载选项,如适用于 SAP HANA 的 Azure NetApp 文件上的 NFS v4.1 卷中所述。 在你的 Linux 版本中检查 nconnect 是否受 Azure NetApp 文件支持

  4. [A] 验证是否使用 NFS 协议版本 NFSv4 装载了所有 HANA 卷。

    sudo nfsstat -m
    

    验证标志 vers 是否设置为 4.1

    来自 hanadb1 的示例:

    /hana/log/HN1/mnt00001 from 10.3.1.4:/hanadb1-log-mnt00001
    Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.3.0.4,local_lock=none,addr=10.3.1.4
    /hana/data/HN1/mnt00001 from 10.3.1.4:/hanadb1-data-mnt00001
    Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.3.0.4,local_lock=none,addr=10.3.1.4
    /hana/shared/HN1 from 10.3.1.4:/hanadb1-shared-mnt00001
    Flags: rw,noatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.3.0.4,local_lock=none,addr=10.3.1.4
    
  5. [A] 验证 nfs4_disable_idmapping。 它应设置为“Y”。若要创建 nfs4_disable_idmapping 所在的目录结构,请运行装载命令。 无法在 /sys/modules 下手动创建目录,因为访问权限是为内核或驱动程序保留的。

    #Check nfs4_disable_idmapping
    sudo cat /sys/module/nfs/parameters/nfs4_disable_idmapping
    
    #If you need to set nfs4_disable_idmapping to Y
    sudo echo "Y" > /sys/module/nfs/parameters/nfs4_disable_idmapping
    
    #Make the configuration permanent
    sudo echo "options nfs nfs4_disable_idmapping=Y" >> /etc/modprobe.d/nfs.conf
    

SAP HANA 安装

  1. [A] 为所有主机设置主机名解析。

    可以使用 DNS 服务器,或修改所有节点上的 /etc/hosts 文件。 此示例演示如何使用 /etc/hosts 文件。 请替换以下命令中的 IP 地址和主机名:

    sudo vi /etc/hosts
    

    将以下代码行插入到 /etc/hosts 文件中。 根据你的环境更改 IP 地址和主机名。

    10.3.0.4   hanadb1
    10.3.0.5   hanadb2
    
  2. [A] 准备 OS 以在具有 NFS 的 Azure NetApp 上运行 SAP HANA,如 SAP 说明 3024346 - 适用于 NetApp NFS 的 Linux 内核设置中所述。 为 NetApp 配置设置创建配置文件 /etc/sysctl.d/91-NetApp-HANA.conf

    sudo vi /etc/sysctl.d/91-NetApp-HANA.conf
    

    在配置文件中添加以下条目:

    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_rmem = 4096 131072 16777216
    net.ipv4.tcp_wmem = 4096 16384 16777216
    net.core.netdev_max_backlog = 300000
    net.ipv4.tcp_slow_start_after_idle=0
    net.ipv4.tcp_no_metrics_save = 1
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_sack = 1
    
  3. [A] 使用更多优化设置创建配置文件 /etc/sysctl.d/ms-az.conf

    sudo vi /etc/sysctl.d/ms-az.conf
    

    在配置文件中添加以下条目:

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv4.tcp_max_syn_backlog = 16348
    net.ipv4.conf.all.rp_filter = 0
    sunrpc.tcp_slot_table_entries = 128
    vm.swappiness=10
    

    提示

    避免在 sysctl 配置文件中显式设置 net.ipv4.ip_local_port_rangenet.ipv4.ip_local_reserved_ports,以允许 SAP 主机代理管理端口范围。 有关详细信息,请参阅 SAP 说明 2382421

  4. [A] 根据 SAP 说明 3024346 - NetApp NFS 的 Linux 内核设置,调整 sunrpc 设置。

    sudo vi /etc/modprobe.d/sunrpc.conf
    

    插入以下行:

    options sunrpc tcp_max_slot_table_entries=128
    
  5. [A] 配置用于 HANA 的 SLES。

    根据 SLES 版本,按照以下 SAP 说明中的描述配置 SLES:

  6. [A] 安装 SAP HANA。

    从 HANA 2.0 SPS 01 开始,多租户数据库容器 (MDC) 为默认选项。 安装 HANA 系统时,将一起创建 SYSTEMDB 以及具有相同 SID 的租户。 在某些情况下,不需要默认租户。 如果不想在安装过程中创建初始租户,可按照 SAP 说明 2629711 进行操作。

    1. 从 HANA 安装软件目录启动 hdblcm 程序。

      ./hdblcm
      
    2. 在提示符处输入以下值:

      • 对于“选择安装”:输入 1(安装)。
      • 对于“选择要安装的其他组件”:输入 1。
      • 对于“输入安装路径 [/hana/shared]”:按 Enter 接受默认值
      • 对于“输入本地主机名 [..]”:按 Enter 接受默认值
      • 在“是否要将其他主机添加到系统? (y/n) [n]”下面:选择“n”。
      • 对于“输入 SAP HANA 系统 ID”:输入 HN1
      • 对于“输入实例编号 [00]”:输入 03
      • 对于“选择数据库模式/输入索引 [1]”:按 Enter 接受默认值
      • 对于“选择系统使用情况/输入索引[4]”:输入 4(用于自定义)
      • 对于“输入数据卷 [/hana/data] 的位置”:按 Enter 接受默认值
      • 对于“输入日志卷 [/hana/log] 的位置”:按 Enter 接受默认值
      • 对于“是否限制最大内存分配? [n]”:按 Enter 接受默认值。
      • 对于“输入主机‘...’的证书主机名 [...]”:按 Enter 接受默认值
      • 对于“输入 SAP 主机代理用户 (sapadm) 密码”:输入主机代理用户密码
      • 对于“确认 SAP 主机代理用户 (sapadm) 密码”:再次输入主机代理用户密码以确认
      • 对于“输入系统管理员 (hn1adm) 密码”:输入系统管理员密码
      • 对于“确认系统管理员 (hn1adm) 密码”:再次输入系统管理员密码以确认
      • 对于“输入系统管理员主目录 [/usr/sap/HN1/home]”:按 Enter 接受默认值
      • 对于“输入系统管理员登录 Shell [/bin/sh]”:按 Enter 接受默认值
      • 对于“输入系统管理员用户 ID [1001]”:按 Enter 接受默认值
      • 对于“输入用户组的 (sapsys) [79] 的 ID”,按 Enter 接受默认值
      • 对于“输入数据库用户 (SYSTEM) 密码”:输入数据库用户密码
      • 对于“确认数据库用户 (SYSTEM) 密码”:再次输入数据库用户密码以确认
      • 对于“是否在计算机重启后重启系统? [n]”:按 Enter 接受默认值。
      • 对于“是否继续? (y/n)”:验证摘要。y 继续。
  7. [A] 升级 SAP 主机代理。

    SAP 软件中心下载最新的 SAP 主机代理存档,并运行以下命令来升级代理。 替换存档的路径,使其指向已下载的文件。

    sudo /usr/sap/hostctrl/exe/saphostexec -upgrade -archive <path to SAP Host Agent SAR>
    

配置 SAP HANA 系统复制

按照 SAP HANA 系统复制中的步骤配置 SAP HANA 系统复制。

群集配置

本部分介绍使用 Azure NetApp 文件在 NFS 共享上安装 SAP HANA 时群集无缝运行所需的必要步骤。

创建 Pacemaker 群集

按照在 Azure 中的 SUSE Enterprise Linux 上设置 Pacemaker 的步骤,创建适用于此 HANA 服务器的基本 Pacemaker 群集。

实现 HANA 挂钩 SAPHanaSR 和 susChkSrv

这是优化与群集的集成并在需要进行群集故障转移时改进检测的重要步骤。 强烈建议同时配置 SAPHanaSR 和 susChkSrv Python 挂钩。 按照实现 Python 系统复制挂钩 SAPHanaSR 和 susChkSrv 中的步骤操作。

配置 SAP HANA 群集资源

本部分介绍配置群集资源而需要完成的 SAP HANA 步骤。

创建 SAP HANA 群集资源

按照创建 SAP HANA 集群资源中的步骤为 HANA 服务器创建群集资源。 创建资源后,应该通过以下命令查看群集的状态:

sudo crm_mon -r

示例输出:

# Online: [ hn1-db-0 hn1-db-1 ]
# Full list of resources:
# stonith-sbd     (stonith:external/sbd): Started hn1-db-0
# Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]
#     Started: [ hn1-db-0 hn1-db-1 ]
# Master/Slave Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03]
#     Masters: [ hn1-db-0 ]
#     Slaves: [ hn1-db-1 ]
# Resource Group: g_ip_HN1_HDB03
#     rsc_ip_HN1_HDB03   (ocf::heartbeat:IPaddr2):       Started hn1-db-0
#     rsc_nc_HN1_HDB03   (ocf::heartbeat:azure-lb):      Started hn1-db-0

创建文件系统资源

创建虚拟文件系统群集资源。 它会监视是否在访问 NFS 装载的文件系统 /hana/shared 时遇到问题,并相应报告失败。 此操作能够在访问 /hana/shared 出现问题时使群集触发故障转移。 有关详细信息,请参阅为 HANA 系统复制处理 SUSE HA 群集中失败的 NFS 共享

  1. [A] 在两个节点上均创建目录结构。

    sudo mkdir -p /hana/shared/HN1/check
    sudo mkdir -p /hana/shared/check
    
  2. [1] 配置群集以添加要监视的目录结构。

    sudo crm configure primitive rsc_fs_check_HN1_HDB03 Filesystem params \
        device="/hana/shared/HN1/check/" \
        directory="/hana/shared/check/" fstype=nfs  \
        options="bind,defaults,rw,hard,rsize=262144,wsize=262144,proto=tcp,noatime,_netdev,nfsvers=4.1,lock,sec=sys" \
        op monitor interval=120 timeout=120 on-fail=fence \
        op_params OCF_CHECK_LEVEL=20 \
        op start interval=0 timeout=120 \
        op stop interval=0 timeout=120
    
  3. [1] 克隆并检查群集中新配置的卷。

    sudo crm configure clone cln_fs_check_HN1_HDB03 rsc_fs_check_HN1_HDB03 meta clone-node-max=1 interleave=true
    

    示例输出:

    sudo crm status
    
    # Cluster Summary:
    # Stack: corosync
    # Current DC: hanadb1 (version 2.0.5+20201202.ba59be712-4.9.1-2.0.5+20201202.ba59be712) - partition with quorum
    # Last updated: Tue Nov  2 17:57:39 2021
    # Last change:  Tue Nov  2 17:57:38 2021 by root via crm_attribute on hanadb1
    # 2 nodes configured
    # 11 resource instances configured
    
    # Node List:
    # Online: [ hanadb1 hanadb2 ]
    
    # Full List of Resources:
    # Clone Set: cln_azure-events [rsc_azure-events]:
    #  Started: [ hanadb1 hanadb2 ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]:
    #  rsc_SAPHanaTopology_HN1_HDB03     (ocf::suse:SAPHanaTopology):     Started hanadb1 (Monitoring)
    #  rsc_SAPHanaTopology_HN1_HDB03     (ocf::suse:SAPHanaTopology):     Started hanadb2 (Monitoring)
    # Clone Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03] (promotable):
    #  rsc_SAPHana_HN1_HDB03     (ocf::suse:SAPHana):     Master hanadb1 (Monitoring)
    #  Slaves: [ hanadb2 ]
    # Resource Group: g_ip_HN1_HDB03:
    #  rsc_ip_HN1_HDB03  (ocf::heartbeat:IPaddr2):        Started hanadb1
    #  rsc_nc_HN1_HDB03  (ocf::heartbeat:azure-lb):       Started hanadb1
    # rsc_st_azure        (stonith:fence_azure_arm):       Started hanadb2
    # Clone Set: cln_fs_check_HN1_HDB03 [rsc_fs_check_HN1_HDB03]:
    #  Started: [ hanadb1 hanadb2 ]
    

    在监视操作中添加 OCF_CHECK_LEVEL=20 属性,以便监视操作在文件系统上执行读取/写入测试。 如果没有此属性,则监视操作仅验证是否已装载文件系统。 这可能是一个问题,因为连接丢失时,尽管无法访问文件系统,但它仍可能保持装载状态。

    on-fail=fence 属性也会添加到监视操作中。 使用此选项时,如果监视操作在节点上失败,则会立即隔离该节点。

重要

前述配置中的超时值可能需要适应特定的 HANA 设置,以避免不必要的隔离操作。 请勿将超时值设置得过低。 请注意,文件系统监视器与 HANA 系统复制无关。 有关详细信息,请参阅 SUSE 文档

测试群集设

本部分介绍如何测试设置。

  1. 在开始测试之前,确保 Pacemaker 没有任何失败操作(通过 crm 状态)和任何意外位置约束(例如迁移测试的遗留内容)。 此外,确保 HANA 系统复制处于同步状态,例如与 systemReplicationStatus 同步。

    sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
    
  2. 使用此命令验证 HANA 资源的状态:

    SAPHanaSR-showAttr
    
    # You should see something like below
    # hanadb1:~ SAPHanaSR-showAttr
    # Global cib-time                 maintenance
    # --------------------------------------------
    # global Mon Nov  8 22:50:30 2021 false
    # Sites srHook
    # -------------
    # SITE1 PRIM
    # SITE2 SOK
    # Site2 SOK
    # Hosts   clone_state lpa_hn1_lpt node_state op_mode   remoteHost roles                            score site  srmode sync_state version                vhost
    # --------------------------------------------------------------------------------------------------------------------------------------------------------------
    # hanadb1 PROMOTED    1636411810  online     logreplay hanadb2    4:P:master1:master:worker:master 150   SITE1 sync   PRIM       2.00.058.00.1634122452 hanadb1
    # hanadb2 DEMOTED     30          online     logreplay hanadb1    4:S:master1:master:worker:master 100   SITE2 sync   SOK        2.00.058.00.1634122452 hanadb2
    
  3. 在节点关闭时验证故障方案的群集配置。 以下示例演示如何关闭节点 1:

    sudo crm status
    sudo crm resource move msl_SAPHana_HN1_HDB03 hanadb2 force
    sudo crm resource cleanup
    

    示例输出:

    sudo crm status
    
    #Cluster Summary:
    # Stack: corosync
    # Current DC: hanadb2 (version 2.0.5+20201202.ba59be712-4.9.1-2.0.5+20201202.ba59be712) - partition with quorum
    # Last updated: Mon Nov  8 23:25:36 2021
    # Last change:  Mon Nov  8 23:25:19 2021 by root via crm_attribute on hanadb2
    # 2 nodes configured
    # 11 resource instances configured
    
    # Node List:
    # Online: [ hanadb1 hanadb2 ]
    # Full List of Resources:
    # Clone Set: cln_azure-events [rsc_azure-events]:
    #  Started: [ hanadb1 hanadb2 ]
    # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]:
    #  Started: [ hanadb1 hanadb2 ]
    # Clone Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03] (promotable):
    #  Masters: [ hanadb2 ]
    #  Stopped: [ hanadb1 ]
    # Resource Group: g_ip_HN1_HDB03:
    #  rsc_ip_HN1_HDB03  (ocf::heartbeat:IPaddr2):        Started hanadb2
    #  rsc_nc_HN1_HDB03  (ocf::heartbeat:azure-lb):       Started hanadb2
    # rsc_st_azure        (stonith:fence_azure_arm):       Started hanadb2
    # Clone Set: cln_fs_check_HN1_HDB03 [rsc_fs_check_HN1_HDB03]:
    #  Started: [ hanadb1 hanadb2 ]
    

    停止 Node1 上的 HANA:

    sudo su - hn1adm
    sapcontrol -nr 03 -function StopWait 600 10
    

    将节点 1 注册为辅助节点并检查状态:

    hdbnsutil -sr_register --remoteHost=hanadb2 --remoteInstance=03 --replicationMode=sync --name=SITE1 --operationMode=logreplay
    

    示例输出:

    #adding site ...
    #nameserver hanadb1:30301 not responding.
    #collecting information ...
    #updating local ini files ...
    #done.
    
    sudo crm status
    
    sudo SAPHanaSR-showAttr
    
  4. 验证节点失去 NFS 共享 (/hana/shared) 访问权限的故障方案中的群集配置。

    SAP HANA 资源代理依赖于二进制文件,这些文件存储在 /hana/shared 中,以便在故障转移过程中执行操作。 在所示方案中,文件系统 /hana/shared 已通过 NFS 装载。

    当其中一台服务器失去 NFS 共享访问权限时,很难模拟故障。 作为测试,可以将文件系统重新装载为只读模式。 此方法验证在活动节点上失去 /hana/shared 访问权限时,群集是否能够进行故障转移。

    预期结果:将 /hana/shared 设置为只读文件系统时,资源 hana_shared1OCF_CHECK_LEVEL 属性(在文件系统上执行读/写操作)失败。 其失败是因为无法在文件系统上写入任何内容并执行 HANA 资源故障转移。 当 HANA 节点失去 NFS 共享访问权限时,会出现相同的结果。

    开始测试之前的资源状态:

    sudo crm  status
    
    #Cluster Summary:
     # Stack: corosync
     # Current DC: hanadb2 (version 2.0.5+20201202.ba59be712-4.9.1-2.0.5+20201202.ba59be712) - partition with quorum
     # Last updated: Mon Nov  8 23:01:27 2021
     # Last change:  Mon Nov  8 23:00:46 2021 by root via crm_attribute on hanadb1
     # 2 nodes configured
     # 11 resource instances configured
    
     #Node List:
     # Online: [ hanadb1 hanadb2 ]
    
     #Full List of Resources:
     # Clone Set: cln_azure-events [rsc_azure-events]:
       # Started: [ hanadb1 hanadb2 ]
     # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]:
       # Started: [ hanadb1 hanadb2 ]
     # Clone Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03] (promotable):
       # Masters: [ hanadb1 ]
       # Slaves: [ hanadb2 ]
     # Resource Group: g_ip_HN1_HDB03:
       # rsc_ip_HN1_HDB03  (ocf::heartbeat:IPaddr2):        Started hanadb1
       # rsc_nc_HN1_HDB03  (ocf::heartbeat:azure-lb):       Started hanadb1
     # rsc_st_azure        (stonith:fence_azure_arm):       Started hanadb2
     # Clone Set: cln_fs_check_HN1_HDB03 [rsc_fs_check_HN1_HDB03]:
       # Started: [ hanadb1 hanadb2 ]
    

    可以使用以下命令在活动群集节点上将 /hana/shared 置于只读模式:

    sudo mount -o ro 10.3.1.4:/hanadb1-shared-mnt00001 /hana/sharedb
    

    服务器 hanadb1 根据设置的操作重新启动或关闭。 服务器 hanadb1 关闭后,HANA 资源移至 hanadb2。 可以从 hanadb2 检查群集的状态。

    sudo crm status
    
    #Cluster Summary:
     # Stack: corosync
     # Current DC: hanadb2 (version 2.0.5+20201202.ba59be712-4.9.1-2.0.5+20201202.ba59be712) - partition with quorum
     # Last updated: Wed Nov 10 22:00:27 2021
     # Last change:  Wed Nov 10 21:59:47 2021 by root via crm_attribute on hanadb2
     # 2 nodes configured
     # 11 resource instances configured
    
     #Node List:
     # Online: [ hanadb1 hanadb2 ]
    
     #Full List of Resources:
     # Clone Set: cln_azure-events [rsc_azure-events]:
       # Started: [ hanadb1 hanadb2 ]
     # Clone Set: cln_SAPHanaTopology_HN1_HDB03 [rsc_SAPHanaTopology_HN1_HDB03]:
       # Started: [ hanadb1 hanadb2 ]
     # Clone Set: msl_SAPHana_HN1_HDB03 [rsc_SAPHana_HN1_HDB03] (promotable):
       # Masters: [ hanadb2 ]
       # Stopped: [ hanadb1 ]
     # Resource Group: g_ip_HN1_HDB03:
          # rsc_ip_HN1_HDB03  (ocf::heartbeat:IPaddr2):        Started hanadb2
       # rsc_nc_HN1_HDB03  (ocf::heartbeat:azure-lb):       Started hanadb2
     # rsc_st_azure        (stonith:fence_azure_arm):       Started hanadb2
     # Clone Set: cln_fs_check_HN1_HDB03 [rsc_fs_check_HN1_HDB03]:
       # Started: [ hanadb1 hanadb2 ]
    

    我们建议通过执行 SAP HANA 系统复制中描述的测试,彻底测试 SAP HANA群集配置。

后续步骤