你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 SUSE Linux Enterprise Server 上使用 Azure NetApp 文件实现 SAP HANA 纵向扩展的高可用性
本文介绍通过 NFS 装载 HANA 文件系统时,如何在纵向扩展部署中使用 Azure NetApp 文件配置 SAP HANA 系统复制。 在示例配置和安装命令中,使用实例编号 03 和 HANA 系统 ID HN1。 SAP HANA 复制由一个主节点和至少一个辅助节点组成。
如果本文档中的步骤标有以下前缀,它们的含义如下:
- [A] :该步骤适用于所有节点。
- [1]:该步骤仅适用于 node1。
- [2]:该步骤仅适用于 node2。
请先阅读以下 SAP 说明和文档:
- SAP 说明 1928533 包含:
- SAP 软件部署支持的 Azure VM 大小的列表。
- 按 Azure 虚拟机 (VM) 大小提供的重要容量信息。
- 支持的 SAP 软件、操作系统 (OS) 和数据库组合。
- Windows 和 Linux on Azure 所需的 SAP 内核版本。
- SAP 说明 2015553 列出了在 Azure 中 SAP 支持的 SAP 软件部署的先决条件。
- SAP 说明 405827 列出了适用于 HANA 环境的建议文件系统。
- SAP 说明 2684254,包含适用于 SUSE Linux Enterprise Server (SLES) 15/SLES for SAP Applications 15 的推荐 OS 设置。
- SAP 说明 1944799 包含适用于 SLES OS 安装的 SAP HANA 指南。
- SAP 说明 2178632 包含为 Azure 中的 SAP 报告的所有监控指标的详细信息。
- SAP 说明 2191498 包含 Azure 中的 Linux 所需的 SAP 主机代理版本。
- SAP 说明 2243692 包含 Azure 中的 Linux 上的 SAP 许可的相关信息。
- SAP 说明 1999351 包含适用于 SAP 的 Azure 增强型监视扩展的更多故障排除信息。
- SAP 说明 1900823:包含有关 SAP HANA 存储要求的信息。
- SUSE SAP 高可用性 (HA) 最佳做法指南包含在本地设置 NetWeaver HA 以及 SAP HANA 系统复制的所有必需信息(用作一般基线)。 它们提供更多详细信息。
- SAP Community Wiki 包含适用于 Linux 的所有必需 SAP 说明。
- 适用于 Linux 上的 SAP 的 Azure 虚拟机规划和实施
- 适用于 Linux 上的 SAP 的 Azure 虚拟机部署
- 适用于 Linux 上的 SAP 的 Azure 虚拟机 DBMS 部署
- 常规 SLES 文档:
- Azure 特定的 SLES 文档:
- 使用 Azure NetApp 文件的 Microsoft Azure 上的 NetApp SAP 应用程序
- 适用于 SAP HANA 的 Azure NetApp 文件上的 NFS v4.1 卷
- 适用于 Linux 上的 SAP 的 Azure 虚拟机规划和实施
注意
本文包含对 Microsoft 不再使用的术语的引用。 在从软件中删除该术语后,我们会将其从本文中删除。
概述
传统上,在纵向扩展环境中,SAP HANA 的所有文件系统都从本地存储进行装载。 在 SLES 上设置 SAP HANA 系统复制中发布了如何在 SUSE Linux Enterprise Server 上设置 SAP HANA 系统复制的 HA 的说明。
若要在 Azure NetApp 文件 NFS 共享上实现纵向扩展系统的 SAP HANA HA,需要在群集中进行额外资源配置。 进行此配置的目的是当一个节点失去对 Azure NetApp 文件上 NFS 共享的访问权限时 HANA 资源能够恢复。
在每个节点上使用 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 虚拟网络中。
按照创建 NetApp 帐户中的说明,在所选的 Azure 区域中创建一个 NetApp 帐户。
按照设置 Azure NetApp 文件容量池中的说明,设置 Azure NetApp 文件容量池。
本文中介绍的 HANA 体系结构使用超高性能服务级别的单个 Azure NetApp 文件容量池。 对于 Azure 上的 HANA 工作负载,建议使用 Azure NetApp 文件“超高性能”或“高级”服务级别。
按照将子网委派给 Azure NetApp 文件中的说明所述,将子网委派给 Azure NetApp 文件。
按照为 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 系统设置标准负载均衡器。 在设置负载均衡器期间,请注意以下几点:
- 前端 IP 配置:创建前端 IP。 选择与数据库虚拟机相同的虚拟网络和子网名称。
- 后端池:创建后端池并添加数据库 VM。
- 入站规则:创建负载均衡规则。 对两个负载均衡规则执行相同步骤。
- 前端 IP 地址:选择前端 IP。
- 后端池:选择后端池。
- 高可用性端口:选择此选项。
- 协议:选择“TCP”。
- 运行状况探测:创建具有以下详细信息的运行状况探测:
- 协议:选择“TCP”。
- 端口:例如 625<instance-no.>。
- 间隔时间:输入 5。
- 探测阈值:输入 2。
- 空闲超时(分钟):输入 30。
- 启用浮动 IP:选择此选项。
注意
不会遵循运行状况探测配置属性 numberOfProbes
(在门户中也称为“运行不正常阈值”)。 若要控制成功或失败的连续探测的数量,请将属性 probeThreshold
设置为 2
。 当前无法使用 Azure 门户设置此属性,因此请使用 Azure CLI 或 PowerShell 命令。
有关 SAP HANA 所需端口的详细信息,请参阅 SAP HANA 租户数据库指南中的连接到租户数据库一章或 SAP 说明 2388694。
如果没有公共 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 文件卷
[A] 为 HANA 数据库卷创建装入点。
sudo mkdir -p /hana/data/HN1/mnt00001 sudo mkdir -p /hana/log/HN1/mnt00001 sudo mkdir -p /hana/shared/HN1
[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”。
[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 文件支持。[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
[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 安装
[A] 为所有主机设置主机名解析。
可以使用 DNS 服务器,或修改所有节点上的
/etc/hosts
文件。 此示例演示如何使用/etc/hosts
文件。 请替换以下命令中的 IP 地址和主机名:sudo vi /etc/hosts
将以下代码行插入到
/etc/hosts
文件中。 根据你的环境更改 IP 地址和主机名。10.3.0.4 hanadb1 10.3.0.5 hanadb2
[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
[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_range
和net.ipv4.ip_local_reserved_ports
,以允许 SAP 主机代理管理端口范围。 有关详细信息,请参阅 SAP 说明 2382421。[A] 根据 SAP 说明 3024346 - NetApp NFS 的 Linux 内核设置,调整
sunrpc
设置。sudo vi /etc/modprobe.d/sunrpc.conf
插入以下行:
options sunrpc tcp_max_slot_table_entries=128
[A] 配置用于 HANA 的 SLES。
根据 SLES 版本,按照以下 SAP 说明中的描述配置 SLES:
- 2684254 针对 SLES 15 / SLES for SAP Applications 15 推荐了操作系统设置
- 2205917 针对 SLES 12 / SLES for SAP Applications 12 推荐了操作系统设置
- 2455582 Linux: Running SAP applications compiled with GCC 6.x2455582 - Linux:运行使用 GCC 6.x 编译的 SAP 应用程序)
- 2593824 Linux: Running SAP applications compiled with GCC 7.x(2593824 Linux:运行使用 GCC 7.x 编译的 SAP 应用程序)
- 2886607 Linux: Running SAP applications compiled with GCC 9.x(2886607 Linux:运行使用 GCC 9.x 编译的 SAP 应用程序)
[A] 安装 SAP HANA。
从 HANA 2.0 SPS 01 开始,多租户数据库容器 (MDC) 为默认选项。 安装 HANA 系统时,将一起创建 SYSTEMDB 以及具有相同 SID 的租户。 在某些情况下,不需要默认租户。 如果不想在安装过程中创建初始租户,可按照 SAP 说明 2629711 进行操作。
从 HANA 安装软件目录启动
hdblcm
程序。./hdblcm
在提示符处输入以下值:
- 对于“选择安装”:输入 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 继续。
[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 Linux Enterprise Server 上设置 Pacemaker 中的步骤为此 HANA 服务器创建一个基本 Pacemaker 群集。
实现 HANA 挂钩 SAPHanaSR 和 susChkSrv
这是优化与群集的集成并在需要进行群集故障转移时改进检测的重要步骤。 强烈建议同时配置 SAPHanaSR 和 susChkSrv Python 挂钩。 按照实现 Python 系统复制挂钩 SAPHanaSR/SAPHanaSR-angi 和 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
创建文件系统资源
对于 HANA 操作以及确定 HANA 状态的 Pacemaker 监视操作,文件系统 /hana/shared/SID 是必需的。 实现资源代理,以在发生故障时进行监视并采取行动。 该节包含两个选项,一个用于 SAPHanaSR
,另一个用于 SAPHanaSR-angi
。
创建虚拟文件系统群集资源。 它会监视是否在访问 NFS 装载的文件系统 /hana/shared 时遇到问题,并相应报告失败。 此操作能够在访问 /hana/shared 出现问题时使群集触发故障转移。 有关详细信息,请参阅为 HANA 系统复制处理 SUSE HA 群集中失败的 NFS 共享。
[A] 在两个节点上均创建目录结构。
sudo mkdir -p /hana/shared/HN1/check sudo mkdir -p /hana/shared/check
[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
[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 文档。
测试群集设
本部分介绍如何测试设置。
在开始测试之前,确保 Pacemaker 没有任何失败操作(通过 crm 状态)和任何意外位置约束(例如迁移测试的遗留内容)。 此外,确保 HANA 系统复制处于同步状态,例如与
systemReplicationStatus
同步。sudo su - hn1adm -c "python /usr/sap/HN1/HDB03/exe/python_support/systemReplicationStatus.py"
使用此命令验证 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
在节点关闭时验证故障方案的群集配置。 以下示例演示如何关闭节点 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
验证节点失去 NFS 共享 (/hana/shared) 访问权限的故障方案中的群集配置。
SAP HANA 资源代理依赖于二进制文件,这些文件存储在 /hana/shared 中,以便在故障转移过程中执行操作。 在所示方案中,文件系统 /hana/shared 已通过 NFS 装载。
当其中一台服务器失去 NFS 共享访问权限时,很难模拟故障。 作为测试,可以将文件系统重新装载为只读模式。 此方法验证在活动节点上失去 /hana/shared 访问权限时,群集是否能够进行故障转移。
预期结果:将 /hana/shared 设置为只读文件系统时,资源
hana_shared1
的OCF_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群集配置。