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

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

本文介绍通过 NFS 装载 HANA 文件系统时,如何在纵向扩展部署中使用 Azure NetApp 文件 (ANF) 配置 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 系统复制的高可用性的说明

若要在 Azure NetApp 文件 NFS 共享上实现纵向扩展系统的 SAP HANA 高可用性,我们需要在群集中进行一些其他资源配置,以便在一个节点失去对 ANF 上的 NFS 共享的访问权限时恢复 HANA 资源。

ANF 上的 SAP HANA HA 纵向扩展

在每个节点上使用 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 高可用性 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 文件可用性

部署 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)

重要注意事项

在为 SAP HANA 纵向扩展系统创建 Azure NetApp 文件时,请注意以下事项:

  • 最小容量池为 4 TiB。
  • 最小卷大小为 100 GiB。
  • Azure NetApp 文件和所有虚拟机(将装载 Azure NetApp 文件卷)必须位于同一 Azure 虚拟网络中或同一区域中的对等虚拟网络中。
  • 所选的虚拟网络必须具有一个委派给 Azure NetApp 文件的子网。
  • Azure NetApp 文件卷的吞吐量取决于卷配额和服务级别,如 Azure NetApp 文件的服务级别中所述。 调整 HANA Azure NetApp 卷的大小时,请确保生成的吞吐量满足 HANA 系统要求。
  • 通过 Azure NetApp 文件导出策略,可以对允许的客户端、访问类型(读写、只读等)进行控制。
  • Azure NetApp 文件功能尚无区域感知性。 目前,该功能未在 Azure 区域中的所有可用性区域中部署。 请注意某些 Azure 区域的潜在延迟影响。

重要

对于 SAP HANA 工作负载,低延迟至关重要。 与 Microsoft 代表合作,确保虚拟机和 Azure NetApp 文件卷在邻近位置部署。

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

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

在 Azure 中为 SAP 设计基础结构时,请注意 SAP 的一些最小存储要求,这可转化为最低吞吐量特征:

  • I/O 大小为 1 MB 时,/hana/log 上的读/写速率为 250 兆字节/秒 (MB/s)。
  • I/O 大小为 16 MB 和 64 MB 时,/hana/data 上的读取活动速率至少为 400 MB/s。
  • I/O 大小为 16 MB 和 64 MB 时,/hana/data 上的写入活动速率至少为 250 MB/s。

每 1 TiB 的卷配额的 Azure NetApp 文件吞吐量限制为:

  • 高级存储层 - 64 MiB/s。
  • 超高性能存储层 - 128 MiB/s。

为了符合 /hana/data 和 /hana/log 的 SAP 最低吞吐量要求以及 /hana/shared 准则,建议的大小为:

数据量(Volume) 高级存储层大小 超高性能存储层大小 支持的 NFS 协议
/hana/log 4 TiB 2 TiB v4.1
/hana/data 6.3 TiB 3.2 TiB v4.1
/hana/shared 1 x RAM 1 x RAM v3 或 v4.1

注意

此处所述的 Azure NetApp 文件大小调整建议旨在满足 SAP 向其基础结构提供商建议的最低要求。 在实际客户部署和工作负载方案中,这些大小可能还不够。 请将这些建议作为起点,并根据具体工作负载的要求进行调整。

提示

可以动态调整 Azure NetApp 文件卷的大小,而无需卸载卷、停止虚拟机或停止 SAP HANA。 此方法具有灵活性,可以满足应用程序的预期和不可预见的吞吐量需求。

注意

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

通过 Azure 门户部署 Linux 虚拟机

首先,需要创建 Azure NetApp 文件卷。 然后执行以下步骤:

  1. 创建资源组。
  2. 创建虚拟网络。
  3. 创建可用性集。 设置最大更新域。
  4. 创建负载均衡器(内部)。 建议使用标准负载均衡器。 选择在步骤 2 中创建的虚拟网络。
  5. 创建虚拟机 1 (hanadb1)。
  6. 创建虚拟机 2 (hanadb2)。
  7. 创建虚拟机时,我们不会添加任何磁盘,因为所有装载点都将位于 Azure NetApp 文件的 NFS 共享上。

重要

负载均衡方案中的 NIC 辅助 IP 配置不支持浮动 IP。 有关详细信息,请参阅 Azure 负载均衡器限制。 如果你需要为 VM 提供其他 IP 地址,请部署第二个 NIC。

注意

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

  1. 要设置标准负载均衡器,请执行以下配置步骤:

    1. 首先创建前端 IP 池:
      1. 打开负载均衡器,选择“前端 IP 配置”,然后选择“添加”。
      2. 输入新前端 IP 的名称(例如 hana-frontend)。
      3. 将“分配”设置为“静态”并输入 IP 地址(例如 10.3.0.50)
      4. 选择“确定”。
      5. 创建新前端 IP 池后,请记下池 IP 地址。
    2. 接下来创建后端池:
      1. 打开负载均衡器,选择后端池,然后选择“添加”。
      2. 输入新后端池的名称(例如 hana-backend)。
      3. 选择“添加虚拟机”。
      4. 选择“虚拟机”。
      5. 选择 SAP HANA 群集的虚拟机及其 IP 地址。
      6. 选择 添加
    3. 接下来创建运行状况探测:
      1. 打开负载均衡器,选择运行状况探测,然后选择“添加”。
      2. 输入新运行状况探测的名称(例如 hana-hp)。
      3. 选择“TCP”作为协议,并选择端口 62503。 将“间隔”值保留设置为 5,将“不正常阈”值设置为 2。
      4. 选择“确定”。
    4. 接下来,创建负载均衡规则:
      1. 打开负载均衡器,选择负载均衡规则,然后选择“添加”。
      2. 输入新负载均衡器规则的名称(例如 hana-lb)。
      3. 选择前面创建的前端 IP 地址、后端池和运行状况探测(例如 hana-frontend、hana-backend 和 hana-hp)。
      4. 选择“HA 端口”。
      5. 确保启用浮动 IP
      6. 选择“确定”。
  2. 或者,只有在你的方案规定使用基本负载均衡器时,才改为执行以下配置步骤:

    1. 配置负载均衡器。 首先创建前端 IP 池:
      1. 打开负载均衡器,选择“前端 IP 配置”,然后选择“添加”。
      2. 输入新前端 IP 的名称(例如 hana-frontend)。
      3. 将“分配”设置为“静态”并输入 IP 地址(例如 10.3.0.50)
      4. 选择“确定”。
      5. 创建新前端 IP 池后,请记下池 IP 地址。
    2. 接下来创建后端池:
      1. 打开负载均衡器,选择后端池,然后选择“添加”。
      2. 输入新后端池的名称(例如 hana-backend)。
      3. 选择“添加虚拟机”。
      4. 选择在步骤 3 中创建的可用性集。
      5. 选择 SAP HANA 群集的虚拟机。
      6. 选择“确定”。
    3. 接下来创建运行状况探测:
      1. 打开负载均衡器,选择运行状况探测,然后选择“添加”。
      2. 输入新运行状况探测的名称(例如 hana-hp)。
      3. 选择“TCP”作为协议,并选择端口 62503。 将“间隔”值保留设置为 5,将“不正常阈”值设置为 2。
      4. 选择“确定”。
    4. 对于 SAP HANA 1.0,请创建负载均衡规则:
      1. 打开负载均衡器,选择负载均衡规则,然后选择“添加”。
      2. 输入新负载均衡器规则的名称(例如 hana-lb-30315)。
      3. 选择前面创建的前端 IP 地址、后端池和运行状况探测(例如 hana-frontend)。
      4. 将“协议”保留设置为“TCP”,输入端口 30315。
      5. 将“空闲超时”增大到 30 分钟。
      6. 确保启用浮动 IP
      7. 选择“确定”。
      8. 针对端口 30317 重复上述步骤。
    5. 对于 SAP HANA 2.0,请为系统数据库创建负载均衡规则:
      1. 打开负载均衡器,选择负载均衡规则,然后选择“添加”。
      2. 输入新负载均衡器规则的名称(例如 hana-lb-30313)。
      3. 选择前面创建的前端 IP 地址、后端池和运行状况探测(例如 hana-frontend)。
      4. 将“协议”保留设置为“TCP”,输入端口 30313。
      5. 将“空闲超时”增大到 30 分钟。
      6. 确保启用浮动 IP
      7. 选择“确定”。
      8. 针对端口 30314 重复上述步骤。
    6. 对于 SAP HANA 2.0,请先为租户数据库创建负载均衡规则:
      1. 打开负载均衡器,选择负载均衡规则,然后选择“添加”。
      2. 输入新负载均衡器规则的名称(例如 hana-lb-30340)。
      3. 选择前面创建的前端 IP 地址、后端池和运行状况探测(例如 hana-frontend)。
      4. 将“协议”保留设置为“TCP”,输入端口 30340。
      5. 将“空闲超时”增大到 30 分钟。
      6. 确保启用浮动 IP
      7. 选择“确定”。
      8. 针对端口 30341 和 30342 重复上述步骤。

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

重要

请勿在放置于 Azure 负载均衡器之后的 Azure VM 上启用 TCP 时间戳。 启用 TCP 时间戳将导致运行状况探测失败。 将参数“net.ipv4.tcp_timestamps”设置为“0”。 有关详细信息,请参阅负载均衡器运行状况探测。 另请参阅 SAP 说明 2382421

装载 Azure NetApp 文件卷

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

mkdir -p /hana/data/HN1/mnt00001
mkdir -p /hana/log/HN1/mnt00001
mkdir -p /hana/shared/HN1

2.[A] 验证 NFS 域设置。 请确保域配置为默认的 Azure NetApp 文件域(即 defaultv4iddomain.com),并且映射设置为 nobody。

sudo cat /etc/idmapd.conf
# Example
[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

# Add the following entries in /etc/fstab on both nodes 
# Example for hanadb1

10.3.1.4:/hanadb1-data-mnt00001 /hana/data/HN1/mnt00001  nfs   rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,intr,noatime,lock,_netdev,sec=sys  0  0
10.3.1.4:/hanadb1-log-mnt00001 /hana/log/HN1/mnt00001  nfs   rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,intr,noatime,lock,_netdev,sec=sys  0  0
10.3.1.4:/hanadb1-shared-mnt00001 /hana/shared/HN1  nfs   rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,intr,noatime,lock,_netdev,sec=sys  0  0 

# Example for hanadb2    
10.3.1.4:/hanadb2-data-mnt00001 /hana/data/HN1/mnt00001  nfs   rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,intr,noatime,lock,_netdev,sec=sys  0  0
10.3.1.4:/hanadb2-log-mnt00001 /hana/log/HN1/mnt00001  nfs   rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,intr,noatime,lock,_netdev,sec=sys  0  0
10.3.1.4:/hanadb2-shared-mnt00001 /hana/shared/HN1  nfs   rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,intr,noatime,lock,_netdev,sec=sys  0  0

# Mount all volumes
sudo mount -a

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

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

sudo nfsstat -m

# Verify that flag vers is set to 4.1 
# Example from 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 所在的目录结构,请执行 mount 命令。 无法在 /sys/modules 下手动创建目录,因为访问权限是为内核/驱动程序保留的。

# Check nfs4_disable_idmapping
cat /sys/module/nfs/parameters/nfs4_disable_idmapping

# If you need to set nfs4_disable_idmapping to Y
echo "Y" > /sys/module/nfs/parameters/nfs4_disable_idmapping

# Make the configuration permanent
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
# Insert the following lines in the /etc/hosts file. Change the IP address and hostname to match your environment  
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。

vi /etc/sysctl.d/91-NetApp-HANA.conf
# Add the following entries in the configuration file
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。

vi /etc/sysctl.d/ms-az.conf
Add the following entries in the configuration file
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_range 和 net.ipv4.ip_local_reserved_ports,以允许 SAP 主机代理管理端口范围。 有关详细信息,请参阅 SAP 说明 2382421

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

vi /etc/modprobe.d/sunrpc.conf
# Insert the following line
options sunrpc tcp_max_slot_table_entries=128

5.[A] SLESL for HANA 配置

根据 SLES 版本,按照以下 SAP 说明所述配置 SLES

6.[A] 安装 SAP HANA

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

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

./hdblcm

b. 在提示符处输入以下值:

  • 对于“选择安装”:输入 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] 配置群集以添加要监视的目录结构

crm configure primitive rsc_fs_check_HN1_HDB03 Filesystem params \
    device="/hana/shared/HN1/check/" \
    directory="/hana/shared/check/" fstype=nfs4  \
    options="bind,defaults,rw,hard,rsize=262144,wsize=262144,proto=tcp,intr,noatime,_netdev,vers=4,minorversion=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] 克隆并检查群集中新配置的卷

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

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 status)、没有任何意外的位置约束(例如迁移测试的遗留设置),且 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 ]

# Stop the HANA on Node1
sudo su - hn1adm
sapcontrol -nr 03 -function StopWait 600 10

#Register Node 1 as the Secondary Node and check status
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
# Example output
#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/shared

hanadb1 将设置的操作重新引导或关闭。 服务器 (hanadb1) 关闭后,HANA 资源将移至 hanadb2。 可以从 hanadb2 检查群集的状态。

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群集配置。

后续步骤