使用 RHEL HA 附加组件自动化 SAP HANA 扩展系统复制
使开源包含更多 复制链接链接已复制到粘贴板!
红帽承诺替换我们的代码和文档中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于这一努力的精力,这些更改将在即将发布的版本中逐渐实施。有关让我们的语言更加包含的更多详情,请参阅我们的CTO Chris Wright 信息。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
第 1 章 简介 复制链接链接已复制到粘贴板!
本文档提供了有关为 SAP HANA Scale-Out System Replication 部署规划和实施自动化接管的信息。此解决方案中的 SAP HANA 系统复制提供了两个 SAP HANA 数据库之间的持续同步,以支持高可用性和灾难恢复。实际实施的挑战通常比在前期测试中涉及的复杂程度要复杂。请确保您的环境已广泛测试。
红帽建议熟悉 SAP HANA 和基于 Pacemaker 的 RHEL 高可用性附加组件的认证顾问来实施设置和后续操作。
随着 SAP HANA 的使用中央化功能,作为 SAP 环境的主要数据库平台,稳定性和可靠性的要求也显著提高。用于 SAP Solutions 的 Red Hat Enterprise Linux (RHEL)通过增强原生 SAP HANA 复制和故障转移技术来满足这些要求,从而自动化执行过程。在 SAP HANA Scale-Out System Replication 部署中故障转移期间,系统管理员必须手动指示应用对次要环境执行接管,以防主环境中出现问题。
为了自动化这个过程,红帽提供了一个完整的解决方案,用于管理 SAP HANA Scale-Out System Replication,它基于 RHEL HA 附加组件是 RHEL for SAP Solutions 订阅的一部分。本文档提供了有关如何使用 RHEL for SAP Solutions 设置自动化 SAP HANA Scale-Out System Replication 解决方案的概念、规划和高级说明。此解决方案经过广泛测试,经过验证后才可以正常工作,但实际实施的挑战通常比此解决方案涵盖的内容复杂得多。因此,红帽建议对 SAP HANA 和基于 Pacemaker 的 RHEL High Availability Add-On 设置以及随后的服务(如解决方案)熟悉的认证顾问。
有关 RHEL for SAP Solutions 的更多信息,请参阅 Red Hat Enterprise Linux for SAP Solutions 订阅概述。
此解决方案适用于经验丰富的 Linux 管理员和 SAP 认证技术关联。该解决方案包含 SAP HANA Scale-Out with System Replication 的规划和部署信息,以及 Pacemaker 与 RHEL 8 或更高版本的集成信息。
使用 HANA System Replication 和 Pacemaker 连接构建 SAP HANA 横向扩展环境,结合了几个复杂的技术。本文档包含 SAP 备注或描述 SAP HANA 配置的文档的引用。
作为扩展集群的 SAP HANA 系统主要通过新硬件扩展不断增长的 SAP HANA 环境。对于此功能,基础架构的基本组件(如存储和网络)需要使用共享资源。根据此配置,可以使用待机节点来扩展环境可用性,在站点启动前提供另一级别的高可用性解决方案。
SAP HANA 横向扩展解决方案可扩展为包括两个或者多个完全独立的横向扩展解决方案,它们充当额外的镜像。系统复制过程根据具有最大性能的主动/被动方法镜像数据库。这个通信完全通过网络发生。不需要额外的基础架构组件。
当关键组件失败时,Pacemaker 会自动进行系统复制过程。为此,将评估横向扩展环境以及系统复制流程中的数据,以确保继续操作。集群管理客户端用于连接数据库的主 IP 地址。这样可确保在集群触发数据库发生时,客户端仍然可以连接到活跃的实例。
1.1. 支持职责 复制链接链接已复制到粘贴板!
对于 SAP HANA 设备设置,SAP,硬件合作伙伴/云供应商支持以下内容:
- 支持的硬件和环境
- SAP HANA
- 存储配置
- SAP HANA Scale-Out 配置(SAP 集群设置)
- SAP HANA 系统复制(SAP 集群设置)
红帽支持以下内容:
- 根据 SAP 指南,用于在 RHEL 上运行 SAP HANA 的基本操作系统配置
- RHEL HA 附加组件
- 用于 SAP HANA Scale-Out System Replication 的红帽 HA 解决方案
如需更多信息,请参阅 SAP HANA Master 指南 - 操作 SAP HANA - SAP HANA 设备 - 角色和响应能力。对于 TDI 设置,请查看 SAP HANA Master 指南 - 操作 SAP HANA - SAP HANA Tailored Data Center Intergration。
1.2. SAP HANA Scale-Out 复制链接链接已复制到粘贴板!
扩展 SAP HANA 的过程非常动态。在扩展 SAP HANA 数据库的服务器实例的初始设置期间,可以通过额外的 CPU 和内存扩展系统。如果此扩展级别已不再足够,SAP 会将环境扩展到横向扩展环境。通过正确准备的基础架构,可以将额外的服务器实例添加到数据库中。
要"scale-out",请将 SAP HANA 数据库 1-n 服务器添加到现有的单一节点数据库中。目前,所有节点的大小都必须与 CPU 和 RAM 大小相同。所有复制数据库站点的配置都必须相同。因此,您必须在重新同步数据库前,首先升级所有站点上的 HANA 节点数量。
先决条件是共享存储,以及所有节点对应的网络连接。共享存储用于交换数据并使用备用节点,这可以在出现故障时接管现有节点的功能。
图 1:概述扩展和横向扩展系统
主名称服务器
HANA Scale-Out 环境有一个主配置,可在其中一个节点上定义正在运行的 master 实例。这些主实例是应用服务器的主要联系人。可以为横向扩展的高可用性配置定义最多三个 master 角色。如果发生故障,则 master 角色会自动切换。此 master 配置与待机主机配置兼容,其中失败的主机可以接管失败的 master 节点的任务。
图 2:已用存储的横向扩展功能
1.3. scale-Out 存储配置 复制链接链接已复制到粘贴板!
横向扩展存储配置允许 SAP HANA 在横向扩展环境中灵活,并在出现故障时动态移动节点的功能。由于数据提供给所有节点,因此 SAP 实例必须准备好接管故障组件的过程。
SAP HANA 横向扩展环境有两种不同的共享存储场景:
- 第一种情况是共享文件系统,通过 NFS 或 IBM 的 GPFS 提供所有目录的文件系统。在这种情况下,所有节点上都提供了数据,一段时间。
- 第二个场景是非共享存储,用于在需要时完全集成所需的数据。所有数据都通过 SAP HANA 存储连接器 API 管理,它会使用适当的机制从节点中删除访问,如 SCSI 3 保留。
对于这两种情况,请确保 /hana/shared 目录作为共享文件系统可用。此目录必须独立于场景可用并共享。
如果要监控这些共享文件系统,您可以选择创建文件系统资源。应删除 /etc/fstab 中的条目;挂载仅由文件系统资源管理。
1.3.2. 非共享存储 复制链接链接已复制到粘贴板!
非共享存储配置比共享存储配置复杂。它需要 SAP HANA 安装过程中支持的存储组件以及单独配置存储连接器。SAP HANA 数据库通过一些内部更改(如 sudo 访问、lvm 或多路径)重新配置 RHEL 系统。每次更改节点定义后,SAP HANA 都会通过 SCSI3 保留直接更改对存储的访问。非共享存储配置比共享存储配置更优化,因为它能够直接访问存储系统。
图 4:使用存储连接器的横向扩展流程的功能和工作路径
1.4. SAP HANA 系统复制 复制链接链接已复制到粘贴板!
SAP HANA System Replication 提供了一种方式,用于其 SAP HANA 环境在多个站点之间复制数据库。网络复制数据并将其预载入到第二个 SAP HANA 安装中。当主 HANA Scale-Out 站点出现故障时,SAP HANA System Replication 可显著减少恢复时间。您必须确保所有复制环境都使用跨硬件、软件和配置设置相同的规格构建。
1.5. 网络配置 复制链接链接已复制到粘贴板!
三个网络是 SAP HANA Scale-Out System Replication 设置的最低网络要求,该设置由 RHEL HA 附加组件管理。然而,应使用 SAP-recommended 网络配置来构建高性能生产环境。
这三个网络为:
- 公共网络:连接应用服务器和客户端(最低要求)需要。
- 通信网络:系统复制通信、节点通信和存储配置需要。
- heartbeat 网络: HA 集群通信需要。
推荐的配置使用以下网络:
- 应用程序服务器网络
- 客户端网络
- 复制网络
- 存储网络
- 两个互连网络
- 备份网络
- 管理网络
- Pacemaker 网络
根据此解决方案的配置,需要 SAP HANA 配置流程中的更改。系统复制主机名解析被调整为用于系统复制的网络。这在 SAP HANA Network 要求 文档中描述。
图 5:通过 SAP HANA 系统复制连接的两个扩展系统的网络配置示例
1.6. RHEL HA 附加组件 复制链接链接已复制到粘贴板!
在本文档中描述的解决方案中,RHEL HA 附加组件用于确保 SAP HANA Scale-Out System Replication 在两个站点间的操作。因此,使用专门为 SAP HANA 横向扩展环境发布的资源代理,用于管理 SAP HANA Scale-Out System Replication 环境。根据 SAP HANA Scale-Out System Replication 环境的当前状态,可以做出一个决定将活跃的 master 节点切换到另一个可用的备用节点,或者将 scale-out 系统复制环境的整个活跃端切换到第二个站点。对于此解决方案,配置了隔离机制以避免脑裂的情况。
图 6:基于系统复制环境的 Pacemaker 集成概述
有关使用 RHEL HA 附加组件在 RHEL 8 上设置 HA 集群的更多信息,请参阅以下文档:
务必要了解 SAP HANA 数据库的横向扩展和系统复制方法,因为 SAP HANA 横向扩展资源代理正在使用每个环境中的数据。
首先,资源代理正在监控每个站点上的稳定横向扩展环境。它将检查是否配置了足够的 SAP HANA 横向扩展主名称服务器节点,并且处于有效状态。因此,资源代理会检查系统复制状态。如果一切正常,它会将虚拟 IP 地址附加到系统复制主站点上的活跃 master 节点。在故障状态下,集群被配置为自动切换系统复制配置。
失败状态的定义取决于主名称服务器的配置。例如,当配置一个主名称服务器时,如果主控节点出现故障,集群会直接切换到其他数据中心。如果最多配置了三个主名称服务器,则在切换到其他数据中心之前,SAP HANA 环境可以自行修复。Pacemaker 使用评分数量来决定应该执行的操作。在运行 SAP HANA 时,这些参数在集群设置中不会更改非常重要。
Pacemaker 配置也基于使用 Shoot The Other Node In The Head (STONITH)的隔离配置。无响应节点并不意味着它无法访问数据。使用 STONITH 隔离节点并确保数据安全。STONITH 通过恶意节点或并发访问保护数据被损坏。如果两个站点之间的通信丢失,两个站点都可能认为它们能够继续工作,这可能导致数据损坏。这也被称为脑裂的情况。要防止这种情况,可以添加一个仲裁,这有助于决定谁能够继续。仲裁可以是额外的节点,也可以是 qdevice。在我们的示例中,我们使用了 大多数制造商 的额外节点。
图 7:通过横向扩展的系统复制示例
1.7. 资源代理 复制链接链接已复制到粘贴板!
集群配置使用两个资源代理。
1.7.1. SAPHanaTopology 资源代理 复制链接链接已复制到粘贴板!
SAPHanaTopology 资源代理是一个克隆的资源,从 SAP HANA 环境接收其所有数据。SAP HANA 中的配置流程称为"系统复制 hook",可生成此数据。根据这个数据,资源代理会为 Pacemaker 服务计算 Pacemaker 评分。集群使用评分来确定它是否应该启动将系统复制从一个站点切换到另一个站点。如果 scoring 值大于预定义的值,集群会切换系统复制。
1.7.2. SAPHanaController 资源代理 复制链接链接已复制到粘贴板!
SAPHanaController 资源代理控制 SAP HANA 环境,并为自动切换执行所有命令,或者更改系统复制的活动站点。
第 2 章 准备 SAP HANA Scale-Out 环境 复制链接链接已复制到粘贴板!
对于使用系统复制和 Pacemaker 集成的完整 SAP HANA Scale-Out 环境,建议预先收集所有必要的数据,并为安装过程准备基础架构。SAP HANA 的安装需要来自不同操作系统组件的大量变量,包括 SAP 本身。本章描述了最低要求。
2.1. 订阅和软件仓库 复制链接链接已复制到粘贴板!
SAP HANA 部署的要求:
- 运行 SAP HANA 的所有 RHEL 服务器上必须启用 RHEL for SAP Solutions 订阅。
- 带有 satellite 服务器的暂存环境,以确保在每个系统上安装正确的软件包版本。必须在 RHEL 8 上安装 SAP HANA:
rhel-8-SAP-Solutions:
- rhel-8-for-<arch>-sap-solutions-rpms (RHEL 8.10)
- rhel-8-for-<arch>-sap-solutions-e4s-rpms (RHEL 8.0 到 8.8)
& lt;arch > 表示特定的硬件架构,如下所示:
- x86_64
- ppc64le
如需更多信息,请参阅 Red Hat Enterprise Linux for SAP Solutions Subscription 和 RHEL for SAP Subscriptions 和 Repositories 概述。
此解决方案不需要单独的存储网络、备份网络和 admin 网络。除了网络配置外,使用 Pacemaker 配置额外的虚拟 IP。此 IP 地址允许 SAP 应用服务器和某些最终用户与 SAP HANA 环境通信。
以下示例列出了包含 8 个 SAP HANA 节点的网络配置的最低要求。
| 参数 | value |
| domainname | example.com |
| NTP Server 1 | 0.de.pool.ntp.org |
| NTP Server 2 | 1.de.pool.ntp.org |
| 虚拟 IP | 10.111.222.52/24 |
注:Pacemaker 管理公共网络中的虚拟 IP (VIP)地址,用于 SAP 应用程序服务器和 SAP HANA 数据库之间的通信。以下示例列出了映射到具有三个 NIC (网络接口卡)的主机的物理地址。
| 主机名 | 公共网络 | HANA 通信 | pacemaker |
| dc1hana01 | 10.0.1.21/24 | 192.168.101.101/24 | 192.168.102.101/24 |
| dc1hana02 | 10.0.1.22/24 | 192.168.101.102/24 | 192.168.102.102/24 |
| dc1hana03 | 10.0.1.23/24 | 192.168.101.103/24 | 192.168.102.103/24 |
| dc1hana04 | 10.0.1.24/24 | 192.168.101.104/24 | 192.168.102.104/24 |
| 主机名 | 公共网络 | HANA 通信 | pacemaker |
| dc2hana01 | 10.0.1.31/24 | 192.168.101.201/24 | 192.168.102.201/24 |
| dc2hana02 | 10.0.1.32/24 | 192.168.101.202/24 | 192.168.102.202/24 |
| dc2hana03 | 10.0.1.33/24 | 192.168.101.203/24 | 192.168.102.203/24 |
| dc2hana04 | 10.0.1.34/24 | 192.168.101.204/24 | 192.168.102.204/24 |
| 主机名 | 公共网络 | pacemaker |
| majoritymaker | 10.0.1.41/24 | 192.168.102.100/24 |
2.2. Storage 复制链接链接已复制到粘贴板!
为 SAP HANA Scale-Out 场景配置存储有两种方法:
- 共享存储
- 非共享存储
存储级别的两个横向扩展环境之间没有通信。因此,必须在每个横向扩展环境中完成存储配置,以确保 SAP HANA System Replication 按预期工作。
2.2.2. 非共享存储 复制链接链接已复制到粘贴板!
非共享存储配置需要集成存储连接器。存储连接器通过 SCSI 或 LVM 锁定机制管理对 LUN 或 LVM 设备的访问。对于此配置类型,需要 WWID 或者 LVM 设备。对于非共享存储配置,每个扩展环境都需要一个共享目录。此配置在 SAP HANA 光纤通道存储连接器管理指南 中进行了描述。
| 参数 | value |
| ha_provider | hdb_ha.fcClient |
| 方法 | 参数名称 | WWID |
| SAN | partition_1_data wwid | 3600508b400105e210000900000491000 |
| SAN | partition_1_log wwid | 3600508b400105e210000900000492000 |
| SAN | partition_2_data wwid | 3600508b400105e210000900000493000 |
| SAN | partition_2_log wwid | 3600508b400105e210000900000494000 |
| SAN | partition_3_data wwid | 3600508b400105e210000900000495000 |
| SAN | partition_3_log wwid | 3600508b400105e210000900000496000 |
| 方法 | 参数名称 | WWID |
| SAN | partition_1_data wwid | 3600508b400105e210000900000491000 |
| SAN | partition_1_log wwid | 3600508b400105e210000900000492000 |
| SAN | partition_2_data wwid | 3600508b400105e210000900000493000 |
| SAN | partition_2_log wwid | 3600508b400105e210000900000494000 |
| SAN | partition_3_data wwid | 3600508b400105e210000900000495000 |
| SAN | partition_3_log wwid | 3600508b400105e210000900000496000 |
2.2.3. 共享设备 复制链接链接已复制到粘贴板!
| 方法 | NFS 服务器 | NFS 路径 | 挂载点 |
| NFS | 10.0.1.61 | /data/dc1/shared | /hana/shared |
| 方法 | NFS 服务器 | NFS 路径 | 挂载点 |
| NFS | 10.0.1.61 | /data/dc2/shared | /hana/shared |
如果共享存储由文件系统资源管理,则不应将挂载添加到 /etc/fstab 中。
2.3. SAP HANA 复制链接链接已复制到粘贴板!
为带有 SAP HANA System Replication 的横向扩展环境构建 SAP HANA 部署有四个步骤:
- 配置操作系统.
- 安装 SAP 主机代理.
- 部署两个横向扩展环境。
- 在 SAP HANA Scale-Out 环境运行时,激活 HANA 系统复制。
RHEL 环境的准备包括置备 SAP HANA 安装源。SAP 提供了安装源。您必须有一个 SAP 帐户,才能下载通过共享目录提供的安装源,或者手动复制到每个主机上。
SAP 软件可以从 SAP Software Center 下载。在我们的示例中,我们将软件置于共享目录 /install 中。
| 软件 | 路径 |
| 主机代理 | /install/51053381/DATA_UNITS/HDB_SERVER_LINUX_X86_64/server/HOSTAGEN T.TGZ |
| SAP HANA | /install/51053381/DATA_UNITS/HDB_SERVER_LINUX_X86_64/ |
SAP HANA 主机代理部署需要以下信息:
| 参数 | value |
| sapadm 用户密码 | Us3Your0wnS3cur3Password |
| Hostagent SSL 证书密码 | Us3Your0wnS3cur3Password |
| sapadm User ID | 996 |
对于 SAP HANA 部署,需要以下额外参数:
| 参数 | value |
| shmadm 组 ID | 20201 |
| sapsys 组 ID | 996 |
| SID | RH1 |
| 系统号 | 10 |
| <SID>adm password | Us3Your0wnS3cur3Password |
| HANA 组件 | client,server |
| 系统类型 | Master |
| 系统使用 | custom |
| 系统用户密码(SAP) | Us3Your0wnS3cur3Password |
| hdblcm Parameter | value |
| hostname | dc1hana01 |
| Addhosts 参数 | dc1hana02:role=worker,dc1hana03:role=worke r,dc1hana04:role=standby |
| scaleout Network DC1 internal_network | 192.168.101.0/24 |
| hdblcm Parameter | value |
| hostname | dc2hana01 |
| Addhosts 参数 | dc2hana02:role=worker,dc2hana03:role=worke r,dc2hana04:role=standby |
| scaleout Network DC2 internal_network | 192.168.101.0/24 |
| 参数 | value |
| 操作模式 | logrelay |
| 复制模式 | sync |
| 备份目录 | /hana/shared/L01/HDB10/backup/ |
| 参数 | value |
| 系统复制名称 | DC1 |
| HSR 类型 | 主 |
| HSR 远程主机 | dc1hana01 |
| SR 网络 | 192.168.101.0/24 |
| 参数 | value |
| 系统复制名称 | DC2 |
| HSR 类型 | secondary |
| HSR 远程主机 | dc2hana01 |
| SR 网络 | 192.168.101.0/24 |
2.4. pacemaker 复制链接链接已复制到粘贴板!
Pacemaker 管理 SAP HANA Scale-Out System Replication 的配置。对于正常工作的配置,Pacemaker 需要一个隔离方法。这可以通过 STONITH Pacemaker 配置来实现。有关 STONITH 方法的概述,请参阅 RHEL High Availability Clusters-Fencing/STONITH 的支持政策。有许多 fence-agents 可用,还要检查:
yum search fence-agents
Pacemaker 隔离配置取决于底层硬件或虚拟化环境。在此解决方案中,由于使用了 Red Hat Virtualization (RHV),所以必须根据环境配置 fence_ ipahealthcheck 隔离方法。
为了防止脑裂情形,需要一个 仲裁。这需要使用 大多数制造商 的额外集群节点实现。如果您需要更多有关仲裁的信息,请检查 RHEL 高可用性集群设计指南 - 带有 qdevice Quorum Arbitration 和 Explor ing 概念的 RHEL High Availability 集群-Quorum 的注意事项。
| 主机名 | 公共网络 | pacemaker |
| Majoritymaker | 10.0.1.42/24 | 192.168.101.100/24 |
| 参数 | value |
| 集群名称 | hana-scaleout-sr |
| 隔离方法 | fence_rhevm |
| 隔离 ipaddr/hostname | 10.20.30.40 |
| 隔离参数 | fencing_user/password |
| corosync 网络 | 192.168.101.0/24 |
| 密码 hacluster 用户 | Us3Your0wnS3cur3Password |
在本例中,我们使用 fence_ipahealthcheck。有关配置 fence_need 的更多详细信息,请查看 如何在红帽高可用性集群中配置 fence_ rhevm stonith 设备?
第 3 章 配置 SAP HANA Scale-Out 环境 复制链接链接已复制到粘贴板!
此解决方案使用系统复制和 Pacemaker 设置和配置 SAP HANA Scale-Out 环境。它分为两个部分:设置基本的 RHEL 配置,每个环境都有所不同。为系统复制和 Pacemaker 部署和配置 SAP HANA Scale-Out。
最小要求是每个站点使用 2 个节点,再加上一个仲裁设备,在我们的示例中是额外的 大多数制造商 节点。此处描述的测试环境使用 8 个 SAP HANA 节点构建,并为集群仲裁构建额外的 大多数制造商 节点。所有 SAP HANA 节点都有一个 50 GB 根磁盘,以及额外的 80 GB 分区用于 /usr/sap 目录。每个 SAP HANA 节点都有 32 GB RAM。多数制造商 节点可以较小,例如 50GB 根磁盘和 8GB RAM。对于共享目录,有两个具有 128 GB 的 NFS 池。为确保平稳部署,建议您记录所有必要的参数,如本文档的 准备 SAP HANA Scale-Out 环境 部分所述。以下示例概述所需的配置参数。
环境
| pacemaker | ||
| 4 个节点(3 + 1) | Majoritymaker | 4 个节点(3 + 1) |
| 共享存储(用于 DC1 的 NFS) | swig system Replication → | 共享存储(用于 DC2 的 NFS) |
| 网络
| 网络
| |
3.1. 设置基本 RHEL 配置 复制链接链接已复制到粘贴板!
使用本节中的步骤在您的环境中设置基本的 RHEL 配置。您还可以在 SAP-Notes 2772999 - Red Hat Enterprise Linux 8.x 中检查 RHEL 8:安装和配置和 2777782 - SAP HANA DB: 推荐的 RHEL 8 设置。
请检查 SAP Note 2235581 - SAP HANA: 受支持的操作系统,以验证将要使用的 RHEL 8 次要版本支持运行 SAP HANA。此外,还需要检查服务器/存储供应商或云供应商,以确保使用的服务器/存储或云实例上支持 SAP HANA 和 RHEL 8 的组合。
有关最新 RHEL 版本的详情,请查看客户门户网站中的 发行注记文档。要查找您安装的版本并查看是否需要更新,请运行以下命令:
[root:~]# subscription-manager release
Release: 8.2
[root:~]# cat /etc/redhat-release Red Hat Enterprise Linux
release 8.2 (Ootpa)
[root:~]#
3.1.1. 注册 RHEL 系统并启用软件仓库 复制链接链接已复制到粘贴板!
-
在这个解决方案中,红帽直接接收系统注册,因为没有暂存配置。建议您为 SAP HANA 系统创建一个暂存配置,使其具有可重复生成的环境。卫星服务器提供数据包管理,其还包括暂存进程(
dev/qa/prod.)如需更多信息,请参阅 Satellite 服务器 产品信息。 - 您必须在注册系统前验证主机名是否正确,因为这样可以更轻松地在管理订阅时识别系统。如需更多信息,请参阅如何在 Red Hat Enterprise Linux 7、8、9 中设置主机名 的解决方案。对于 RHEL 8,请检查 配置基本系统设置。
先决条件
- 已安装了 RHEL 8。
- 您以用户 root 身份登录在每个主机上,包括用于订阅管理的"主要制造商"。
流程
如果没有暂存配置,您可以使用以下命令将 SAP HANA 测试部署直接分配给 Red Hat Subscription Management (RHSM):
[root:~]# subscription-manager register- 输入用户名和密码。
列出
rhel-8-for-x86_64-sap-solutions-rpms软件仓库提供的所有池:[root:~]# subscription-manager list --available --matches="rhel-8-for-x86_64-sap-solutions-rpms"如需更多信息,请参阅配置基本系统设置。
注意公司池 ID 是必需的。如果列表为空,请联系红帽获取公司订阅的列表。
将池 ID 附加到您的服务器实例:
[root:~]# subscription-manager attach --pool=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX检查是否启用了
sap-solutions的存储库:[root:~]# yum repolist | grep sap-solution rhel-8-for-x86_64-sap-solutions-rpms RHEL for x86_64 - SAP Solutions (RPMs)您可以启用 RHEL 8 所需的仓库:
[root:~]# subscription-manager repos --enable=rhel-8-for-x86_64-sap-solutions-rpms --enable=rhel-8-for-x86_64-highavailability-rpms如需更多信息,请参阅 用于 SAP 订阅和存储库的 RHEL。
更新所有系统上的软件包,以验证是否已安装正确的 RPM 软件包和版本:
[root:~]# yum update -y
3.1.2. 配置网络设置 复制链接链接已复制到粘贴板!
本节论述了此解决方案中使用的网络参数。此解决方案的配置取决于环境,并应考虑一个示例。网络的配置应根据 SAP 规格进行。本文档的 Preparing the SAP HANA Scale-Out environment 部分中包括了节点 dc1hana01 的示例。
[root:~]# nmcli con add con-name eth1 ifname eth1 autoconnect yes type ethernet ip4 192.168.101.101/24 nmcli con add con-name eth2 ifname eth2 autoconnect yes type ethernet ip4 192.168.102.101/24
3.1.3. 配置 /etc/hosts 复制链接链接已复制到粘贴板!
使用这个流程在 RHEL 系统上配置 /etc/hosts。这个配置是一致的主机名解析所必需的。
流程
-
以 root 用户身份登录每个主机,并配置
/etc/hosts文件。 - 在横向扩展环境中,为每个 SAP HANA 主机创建一个主机条目。
将 hosts 文件复制到每个节点。按照以下输出示例所示的顺序设置主机名非常重要。如果没有,SAP HANA 环境会在部署或操作过程中失败。
注意此配置基于本文档的 Preparing the SAP HANA Scale-Out environment 部分中列出的参数。
[root:~]# cat << EOF >> /etc/hosts 10.0.1.21 dc1hana01.example.com dc1hana01 10.0.1.22 dc1hana02.example.com dc1hana02 10.0.1.23 dc1hana03.example.com dc1hana03 10.0.1.24 dc1hana04.example.com dc1hana04 10.0.1.31 dc2hana01.example.com dc2hana01 10.0.1.32 dc2hana02.example.com dc2hana02 10.0.1.33 dc2hana03.example.com dc2hana03 10.0.1.34 dc2hana04.example.com dc2hana04 10.0.1.41 majoritymaker.example.com majoritymaker EOF
3.1.4. 配置磁盘 复制链接链接已复制到粘贴板!
完成这个流程来在 RHEL 系统中配置磁盘。
流程
在每个 SAP HANA 主机上以 root 用户身份登录额外的
/usr/sap分区。注意通常,默认的 XFS 格式和挂载选项适用于大多数工作负载。红帽建议使用默认值,除非有特定的配置更改应该可以影响文件系统的工作负载。所有支持的文件系统都可使用。如需更多信息,请参阅 SAP Note 2972496 - SAP HANA Filesystem Types。如果使用软件 RAID,
mks.xfs命令会自动使用正确的条带单元和宽度配置自己,以便与硬件保持一致。创建所需的挂载点:
[root:~]# mkdir -p /usr/sap在逻辑卷中,基于 XFS 创建文件系统:
[root:~]# mkfs -t xfs -b size=4096 /dev/sdb有关创建 XFS 文件系统和调优可能性的更多信息,请运行
man mkfs.xfs命令。有关 XFS 文件系统的最佳性能,请参阅知识库文章 什么是调整 XFS 文件系统的一些最佳实践。将 mount 指令写入
/etc/fstab:[root:~]# echo "/dev/sdb /usr/sap xfs defaults 1 6" >> /etc/fstab注意如果挂载点由文件系统资源管理,那么之后必须在
/etc/fstab文件中再次注释掉这些文件系统。检查
/etc/fstab中的 XFS 文件系统是否可以挂载:[root:~]# mount /usr/sap
3.1.5. 使用每个数据中心的共享存储配置 Scale-Out 复制链接链接已复制到粘贴板!
在云环境中,不同可用区中同一挂载点可能存在不同的源。
使用这个流程为每个数据中心配置带有共享服务的 scale-out。
流程
在每个 SAP HANA 主机上以 root 用户身份登录共享存储配置。
注意需要
nfs-utils软件包。每个数据中心都需要自己的存储配置。在本例中,存储配置作为共享存储环境构建。两个横向扩展环境都使用自己的 NFS 共享。此配置基于本文档的 准备 SAP HANA Scale-Out 环境 部分中的信息。在生产环境中,应该将此流程配置为您首选的硬件供应商支持。安装
nfs-utils软件包:[root:~]# yum install -y nfs-utils在 Datacenter 1 中配置节点:
[root:~]# mkdir -p /hana/{shared,data,log} cat <<EOF >> /etc/fstab 10.0.1.61:/data/dc1/shared /hana/shared nfs4 defaults 0 0 10.0.1.61:/data/dc1/data /hana/data nfs4 defaults 0 0 10.0.1.61:/data/dc1/log /hana/log nfs4 defaults 0 0 EOF要挂载卷,请运行以下命令:
[root:~]# mount -a在 Datacenter 2 中配置节点:
[root:~]# mkdir -p /hana/{shared,data,log} cat <<EOF >> /etc/fstab 10.0.1.62:/data/dc2/shared /hana/shared nfs4 defaults 0 0 10.0.1.62:/data/dc2/data /hana/data nfs4 defaults 0 0 10.0.1.62:/data/dc2/log /hana/log nfs4 defaults 0 0 EOF要挂载卷,请运行以下命令:
[root:~]# mount -a
3.2. 配置和部署 SAP HANA 复制链接链接已复制到粘贴板!
3.2.1. 配置运行 SAP HANA 所需的 RHEL 设置 复制链接链接已复制到粘贴板!
使用这个流程为运行 SAP HANA 配置 HA 集群节点。需要在运行 HANA 实例的每个 RHEL 系统上执行这些步骤。
先决条件
- 您以 root 用户身份登录共享存储配置的每个主机。
- 您已准备了 SAP HANA 的安装源。
您已设置了与 SAP HANA 兼容的主机名:
[root:~]# hostnamectl set-hostname dc1hana01
步骤: 验证 /etc/hosts
验证
/etc/hosts是否包含与系统主机名和 IP 地址匹配的条目:.example.com:[root:~]# hostname <hostname> [root:~]# hostname -s <hostname> [root:~]# hostname -f <hostname>.example.com [root:~]# hostname -d example.com将系统语言设置为英语:
[root:~]# localectl set-locale LANG=en_US.UTF-8
步骤: 配置 NTP
编辑
/etc/chrony.conf,并验证服务器行是否反映了您的 ntp 服务器:[root:~]# yum -y install chrony [root:~]# systemctl stop chronyd.service检查时间服务器条目:
[root:~]# grep ^server /etc/chrony.conf server 0.de.pool.ntp.org server 1.de.pool.ntp.org启用并启动 chrony 服务:
[root:~]# systemctl enable chronyd.service [root:~]# systemctl start chronyd.service [root:~]# systemctl restart systemd-timedated.service验证
chrony服务是否已启用:[root:~]# systemctl status chronyd.service chronyd.service enabled [root:~]# chronyc sources 210 Number of sources = 3 MS Name/IP address Stratum Poll Reach LastRx Last sample ===================================================================== ^* 0.de.pool.ntp.org 2 8 377 200 -2659ns[-3000ns] +/- 28ms ^-de.pool.ntp.org 2 8 377 135 -533us[ -533us] +/- 116ms ^-ntp2.example.com 2 9 377 445 +14ms[ +14ms] +/- 217ms
3.2.2. 为 SAP HANA 预配置 RHEL 复制链接链接已复制到粘贴板!
使用这个流程为 SAP HANA 预配置 RHEL 系统。此配置基于公布的 SAP 备注。以 root 用户身份在集群中的每个 SAP HANA 主机上运行此步骤。
- 这个过程基于 SAP 备注 SAP 备注 2777782:SAP HANA DB:RHEL 8 的推荐操作系统 设置和 SAP 备注 2772999 - Red Hat Enterprise Linux 8.x:安装和配置。
- 在 RHEL 8 中,您还可以使用 SAP 的 RHEL 系统角色来自动安装和配置 HA 集群节点。有关更多信息,请访问: SAP 的 Red Hat Enterprise Linux 系统角色。
3.2.3. 安装 SAP 主机代理 复制链接链接已复制到粘贴板!
在安装具有 SAP 内核 7.20 或更高版本的所有新 SAP 系统实例或实例时,会自动安装 SAP Host Agent。在大多数情况下,不需要这个手动安装。请首先安装 SAP HANA,然后检查是否需要安装 saphostagent。
先决条件
-
您已确认
umask配置被配置为标准值(命令 umask 应该回复 0022.);否则,SAP Host Agent 安装可能会失败。 - 您以 root 用户身份登录 SAP 主机代理安装的每个主机上。
如果用户/组不存在,则在 SAP HANA 安装过程中创建用户和组,并通过安装 SAP 软件安装/升级 SAPHOSTAGENT。
流程(可选)
为 SAP Host Agent 创建
sapadm和sapsys用户,并为sapadm用户设置密码。用户sapadm的 UID 996 和组sapsys的 GID 79 基于本文档的 准备 SAP HANA Scale-Out 环境 部分中的参数。[root:~]# adduser sapadm --uid 996 [root:~]# groupadd sapsys --gid 79 [root:~]# passwd sapadm创建 temp 目录,解压缩安装源,并从 temp 目录安装 SAP 主机代理。变量
INSTALLDIRHOSTAGENT是一个示例:[root:~]# export TEMPDIR=$(mktemp -d) [root:~]# export INSTALLDIRHOSTAGENT=/install/HANA/DATA_UNITS/HDB_SERVER_LINUX_X86_64/ [root:~]# systemctl disable abrtd [root:~]# systemctl disable abrt-ccpp [root:~]# cp -rp ${INSTALLDIRHOSTAGENT}/server/HOSTAGENT.TGZ $TEMPDIR/ cd $TEMPDIR [root:~]# tar -xzvf HOSTAGENT.TGZ [root:~]# cd global/hdb/saphostagent_setup/ [root:~]# ./saphostexec -install安全操作只适用于加密的连接。您可以配置正常工作的 SSL 连接来达到此目的。需要 SSL 密码。以下示例基于本文档的 Preparing SAP HANA Scale-Out environment 部分中的参数。
[root:~]# export MYHOSTNAME=$(hostname) [root:~]# export SSLPASSWORD=Us3Your0wnS3cur3Password [root:~]# export LD_LIBRARY_PATH=/usr/sap/hostctrl/exe/ [root:~]# export SECUDIR=/usr/sap/hostctrl/exe/sec [root:~]# cd /usr/sap/hostctrl/exe [root:~]# mkdir /usr/sap/hostctrl/exe/sec [root:~]# /usr/sap/hostctrl/exe/sapgenpse gen_pse -p SAPSSLS.pse -x $SSLPASSWORD -r /tmp/${MYHOSTNAME}-csr.p10 "CN=$MYHOSTNAME" [root:~]# /usr/sap/hostctrl/exe/sapgenpse seclogin -p SAPSSLS.pse -x $SSLPASSWORD -O sapadm chown sapadm /usr/sap/hostctrl/exe/sec/SAPSSLS.pse [root:~]# /usr/sap/hostctrl/exe/saphostexec -restart*验证 SAP Host Agent 是否适用于所有 SAP HANA 节点:
[root:~]# netstat -tulpen | grep sapstartsrv tcp 0 0 0.0.0.0:50014 0.0.0.0:* LISTEN 1002 84028 4319/sapstartsrv tcp 0 0 0.0.0.0:50013 0.0.0.0:* LISTEN 1002 47542 4319/sapstartsrv注意并非所有进程都被识别。不显示非拥有的进程信息。您必须是 root 用户才能查看所有进程。
[root:~]# netstat -tulpen | grep 1129 tcp 0 0 0.0.0.0:1129 0.0.0.0:* LISTEN 996 25632 1345/sapstartsrv有关如何安装 SAP 主机代理的更多信息,请参阅 SAP 主机代理安装。
3.2.4. 使用 Scale-Out 和 System Replication 部署 SAP HANA 复制链接链接已复制到粘贴板!
在使用 Scale-Out 和 System Replication 部署 SAP HANA 之前,您必须了解 SAP 网络映射。此解决方案为在实验室环境中部署提供最少的配置详细信息。但是,在配置生产环境时,需要通过单独的网络映射横向扩展网络通信和系统复制通信。此配置在 SAP HANA System Replication 的网络配置 中进行了描述。
根据 SAP HANA 服务器安装和更新指南中所述,应安装 SAP HANA 数据库。
有不同的选项可用于设置 SAP HANA 数据库。您必须在具有相同 SID 的两个数据中心上安装数据库。横向扩展配置需要每个站点至少 2 个 HANA 实例。
每个 HANA 站点的安装由以下步骤组成:
-
使用
hdblcm在第一个节点上安装 SAP HANA 数据库(检查 SAP HANA 安装介质的SAP_HANA_DATABASE子目录中的hdblcm)。 在此第一节点上为 scale-out 配置内部网络(这只需要一次):
[root:~]# ./hdblcm --action=configure_internal_network使用第一个安装创建的共享可执行文件在其他节点上安装额外的 HANA 实例:
[root:~]# /hana/shared/RH1/hdblcm/hdblcm- 为每个 HANA 实例选择正确的 HANA 角色(worker 或 standby)。
- 对辅助 HANA 站点重复相同的步骤。
在两个站点之间设置 SAP HANA 系统复制:
- 复制密钥。
-
备份主数据库(
SYSTEMDB和租户)。 - 在辅助站点上停止 HANA。
- 将辅助 HANA 网站注册到主要 HANA 站点。
- 在辅助站点上启动 HANA。
HANA 数据库安装也可以在批处理模式中使用 hdblcm 命令来完成。可以使用配置文件模板,该模板用作完整自动安装的应答文件。
在本解决方案中,SAP 数据库通过批处理模式安装,并集成通过每个数据中心的 SAP Host Agent 执行自动部署的额外主机。生成临时密码文件,其中包含所有必要的部署密码。基于此文件,将启动基于命令的批处理模式安装。
对于批处理模式安装,必须更改以下参数:
- SID
- 系统号
-
安装实例的主机名(
主机名) -
所有主机名和角色(
添加主机) -
系统类型(
system_usage) -
<
sid>adm用户的主目录 -
来自用户
sapadm的userid -
sapsys中的 GroupId
大多数参数都由 SAP 提供。
流程
- 在每个数据中心中,以用户 root 用户身份登录一个 SAP HANA 节点,以启动 SAP HANA Scale-Out 安装。
在这个解决方案中,在每个数据中心的一个节点中执行以下命令:
[root:~]# INSTALLDIR=/install/51053381/DATA_UNITS HDB_SERVER_LINUX_X86_64/ [root:~]# cd $INSTALLDIR [root:~]# ./hdblcm --dump_configfile_template=/tmp/templateFile重要必须使用正确的 addhosts 参数。这不得包含安装节点。
更改
/tmp/templateFile.xml中的密码:注意internal_network参数用于内部横向扩展通信网络。这会在安装过程中使用正确配置来预先填充 SAP HANA 配置文件global.ini。数据中心 1 示例:
[root:~]# cat /tmp/templateFile.xml | ./hdblcm \ --batch \ --sid=RH1 \ --number=10 \ --action=install \ --hostname=dc1hana01 \ --addhosts=dc1hana02:role=worker,dc1hana03:role=worker,dc1hana04:role =standby \ --install_hostagent \ --system_usage=test \ --sapmnt=/hana/shared \ --datapath=/hana/data \ --logpath=/hana/log \ --root_user=root \ --workergroup=default \ --home=/usr/sap/RH1/home \ --userid=79 \ --shell=/bin/bash \ --groupid=79 \ --read_password_from_stdin=xml \ --internal_network=192.168.101.0/24 \ --remote_execution=saphostagent数据中心 2 示例:
[root:~]# cat /tmp/templateFile.xml | ./hdblcm \ --batch \ --sid=RH1 \ --number=10 \ --action=install \ --hostname=dc2hana01 \ --addhosts=dc2hana02:role=worker,dc2hana03:role=worker,dc2hana04:role =standby \ --install_hostagent \ --system_usage=test \ --sapmnt=/hana/shared \ --datapath=/hana/data \ --logpath=/hana/log \ --root_user=root \ --workergroup=default \ --home=/usr/sap/RH1/home \ --userid=79 \ --shell=/bin/bash \ --groupid=79 \ --read_password_from_stdin=xml \ --internal_network=192.168.101.0/24 \ --remote_execution=saphostagent安装完成后,验证每个数据中心的一个主机上是否都在一个主机上工作:
[root:~]# su - rh1adm /usr/sap/hostctrl/exe/sapcontrol -nr 10 -function GetSystemInstanceList 10.04.2019 08:38:21 GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus dc1hana01,10,51013,51014,0.3,HDB|HDB_WORKER, GREEN dc1hana03,10,51013,51014,0.3,HDB|HDB_STANDBY, GREEN dc1hana02,10,51013,51014,0.3,HDB|HDB_WORKER, GREEN dc1hana04,10,51013,51014,0.3,HDB|HDB_WORKER, GREEN rh1adm@dc1hana01:/usr/sap/RH1/HDB10> HDBSettings.sh landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | --------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | dc1hana01 | yes | ok | | | 1 | 1 | default | default | master 1 | master | worker | master | worker | worker | default | default | | dc1hana02 | yes | ok | | | 2 | 2 | default | default | master 3 | slave | worker | slave | worker | worker | default | default | | dc1hana03 | yes | ok | | | 2 | 2 | default | default | master 3 | slave | worker | slave | worker | worker | default | default | | dc1hana04 | yes | ignore | | | 0 | 0 | default | default | master 2 | slave | standby | standby | standby | standby | default | - | rh1adm@dc1hana01: HDB info USER PID PPID %CPU VSZ RSS COMMAND rh1adm 31321 31320 0.0 116200 2824 -bash rh1adm 32254 31321 0.0 113304 1680 \_ /bin/sh /usr/sap/RH1/HDB10/HDB info rh1adm 32286 32254 0.0 155356 1868 \_ ps fx -U rh1adm -o user:8,pid:8,ppid:8,pcpu:5,vsz:10,rss:10,args rh1adm 27853 1 0.0 23916 1780 sapstart pf=/hana/shared/RH1/profile/RH1_HDB10_dc1hana01 rh1adm 27863 27853 0.0 262272 32368 \_ /usr/sap/RH1/HDB10/dc1hana01/trace/hdb.sapRH1_HDB10 -d -nw -f /usr/sap/RH1/HDB10/dc1hana01/daemon.ini pf=/usr/sap/RH1/SYS/profile/RH1_HDB10_dc1hana01 rh1adm 27879 27863 53.0 9919108 6193868 \_ hdbnameserver rh1adm 28186 27863 0.7 1860416 268304 \_ hdbcompileserver rh1adm 28188 27863 65.8 3481068 1834440 \_ hdbpreprocessor rh1adm 28228 27863 48.2 9431440 6481212 \_ hdbindexserver -port 31003 rh1adm 28231 27863 2.1 3064008 930796 \_ hdbxsengine -port 31007 rh1adm 28764 27863 1.1 2162344 302344 \_ hdbwebdispatcher rh1adm 27763 1 0.2 502424 23376 /usr/sap/RH1/HDB10/exe/sapstartsrvpf=/hana/shared/RH1/profile/RH1_HDB10_dc1hana01 -D -u rh1adm
3.2.5. 配置 SAP HANA 系统复制 复制链接链接已复制到粘贴板!
配置 SAP HANA 系统复制是在同时安装横向扩展环境后完成的。配置步骤有:
- 备份主数据库。
- 在主数据库上启用系统复制。
- 停止次要数据库。
- 复制数据库密钥。
- 注册二级数据库。
- 启动次要数据库。
- 验证系统复制。
此解决方案提供有关每个步骤的高级信息。
3.2.5.1. 备份主数据库 复制链接链接已复制到粘贴板!
SAP HANA System Replication 需要备份主数据库。如果没有它,您无法将 SAP HANA 引入系统复制配置。
- 此解决方案提供了一个简单的示例。在生产环境中,您必须考虑备份基础架构和设置。
-
在 SQL 命令中包含"/"非常重要;例如,
/hana/shared/backup/。如果不这样做,则需要对目录的写入权限进行写入,因为 SAP HANA 将不使用该目录,而是创建名为PATH_databackup*的文件。
# Do this as root
[root@dc1hana01]# mkdir -p /hana/shared/backup/
[root@dc1hana01]# chown rh1adm /hana/shared/backup/
[root@dc1hana01]# su - rh1adm
[rh1adm@dc1hana01]% hdbsql -i 10 -u SYSTEM -d SYSTEMDB "BACKUP DATA USING FILE ('/hana/shared/backup/')"
[rh1adm@dc1hana01]% hdbsql -i 10 -u SYSTEM -d RH1 "BACKUP DATA USING FILE ('/hana/shared/backup/')"
3.2.5.2. 启用 HANA 系统复制 复制链接链接已复制到粘贴板!
在数据中心上创建备份功能后,您可以开始配置系统复制。第一个数据中心从配置作为源站点开始。
在 scale-out 系统的一个主机上启用第一个数据中心(DC1)的系统复制。
[root@dc1hana01]# su - rh1adm [rh1adm@dc1hana01]% hdbnsutil -sr_enable --name=DC1 nameserver is active, proceeding … successfully enabled system as system replication source site done.在为系统复制启用第一个数据中心后,必须将第二个数据中心注册到第一个数据中心。您必须将两个密钥从已启用的源系统复制到第二个数据中心。这必须在数据库停止时完成。
将密钥和密钥数据文件从主站点复制到次要站点。这只在每个数据中心的一个节点上完成。此文件通过分隔的横向扩展环境中的
/hana/shared目录共享。如需更多信息,请参阅 SAP Note 2369981 - 使用 HANA System Replication 进行身份验证所需的配置步骤。在数据中心 1 (DC1)的一个节点上启动这个命令:
[root@dc1hana01]# scp -rp /usr/sap/RH1/SYS/global/security/rsecssfs/data/SSFS_RH1.DAT root@dc2hana01:/usr/sap/RH1/SYS/global/security/rsecssfs/data/SSFS_RH 1.DAT [root@dc1hana01]# scp -rp /usr/sap/RH1/SYS/global/security/rsecssfs/key/SSFS_RH1.KEY root@dc2hana01:/usr/sap/RH1/SYS/global/security/rsecssfs/key/SSFS_RH1 .KEY在将两个密钥复制到次要站点后,您可以将第二个数据中心(从 SAP HANA 实例)注册到主 SAP HANA 实例。这必须在数据中心 2 (DC2)的节点上作为
'user <sid>adm来完成。注意现在,可以使用两个复制类型模式:
- delta_datashipping
- logreplay
复制模式应当是
sync或syncmem。"classic" 操作模式是delta_datashipping。HA 的首选模式是logreplay。使用操作模式logreplay使您的次要站点在 SAP HANA System Replication a hot standby 系统中。如需更多信息,请参阅 SAP HANA System Replication。使用首选操作模式,系统复制在 DC2 节点上配置为 <
sid>adm用户:[root@dc1hana01]# su - rh1adm [rh1adm@dc1hana01]% hdbnsutil -sr_register --name=DC2 \ --remoteHost=dc1hana03 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --online # Start System [rh1adm@dc1hana01]% /usr/sap/hostctrl/exe/sapcontrol -nr 10 -function StartSystem系统启动后,运行以下命令验证所有内容是否按预期工作。当 HANA Scale-Out 环境正确运行时,
dispstatus必须为sapcontrol的GetSystemInstanceList功能输出中的所有节点显示GREEN(这在初始启动后可能需要几分钟时间)。另外,环境主机配置必须处于OK状态。GetInstanceList: rh1adm@dc2hana01:/usr/sap/RH1/HDB10> /usr/sap/hostctrl/exe/sapcontrol -nr 10 -function GetSystemInstanceList 01.04.2019 14:17:28 GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus dc2hana02, 10, 51013, 51014, 0.3, HDB|HDB_WORKER, GREEN dc2hana01, 10, 51013, 51014, 0.3, HDB|HDB_WORKER, GREEN dc2hana04, 10, 51013, 51014, 0.3, HDB|HDB_STANDBY, GREEN dc2hana03, 10, 51013, 51014, 0.3, HDB|HDB_WORKER, GREEN Check landscapeHostConfiguration: rh1adm@dc2hana01:/usr/sap/RH1/HDB10> HDBSettings.sh landscapeHostConfiguration.py Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | | | | | | | | | | | | | | | | | | | dc2hana01 | yes | ok | | | 1 | | default | default | master 1 | master | worker | master | worker | worker | default | default | | dc2hana02 | yes | ok | | | 2 | | default | default | slave | slave | worker | slave | worker | worker | default | default | | dc2hana03 | yes | ok | | | 3 | | default | default | master 3 | slave | worker | slave | worker | worker | default | default | | dc2hana04 | yes | ignore | | | 0 | 0 | default | default | master 2 | slave | standby | standby | standby | standby | default | - | overall host status: ok在 Datacenter 1 网站上,
dispstatus必须为sapcontrol的GetSystemInstanceList功能输出中的所有节点显示GREEN,而环境主机配置必须处于OK状态。rh1adm@dc1hana01: /usr/sap/hostctrl/exe/sapcontrol -nr 10 -function GetSystemInstanceList rh1adm@dc1hana01:/hana/shared/backup> /usr/sap/hostctrl/exe/sapcontrol -nr 10 -function GetSystemInstanceList Red Hat Enterprise Linux HA Solution for SAP HANA Scale Out and System Replication Page 55 26.03.2019 12:41:13 GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus dc1hana01, 10, 51013, 51014, 0.3, HDB|HDB_WORKER, GREEN dc1hana02, 10, 51013, 51014, 0.3, HDB|HDB_WORKER, GREEN dc1hana03, 10, 51013, 51014, 0.3, HDB|HDB_WORKER, GREEN dc1hana04, 10, 51013, 51014, 0.3, HDB|HDB_STANDBY, GREEN rh1adm@dc1hana01:/usr/sap/RH1/HDB10> HDBSettings.sh landscapeHostConfiguration.py | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | --------- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------- | ------- | ------- | ------- | | dc1hana01 | yes | ok | | | 1 | 1 | default | default | master 1 | master | worker | master | worker | worker | default | default | | dc1hana02 | yes | ok | | | 2 | 2 | default | default | master 2 | slave | worker | slave | worker | worker | default | default | | dc1hana03 | yes | ok | | | 3 | 3 | default | default | slave | slave | worker | slave | worker | worker | default | default | | dc1hana04 | yes | ignore | | | 0 | 0 | default | default | master 3 | slave | standby | Red Hat Enterprise Linux HA Solution for SAP HANA Scale Out and System Replication Page 56 standby | standby | standby | default | - | overall host status: ok rh1adm@dc1hana01:/usr/sap/RH1/HDB10> # Show Systemreplication state rh1adm@dc1hana01:/usr/sap/RH1/HDB10> HDBSettings.sh systemReplicationStatus.py | Database | Host | Port | Service Name | Volume ID | Site ID | Site Name | Secondary | Secondary | Secondary | Secondary | Secondary | Replication | Replication | Replication | | | | | | | | | Host | Port | Site ID | Site Name | Active Status | Mode | Status | Status Details | | -------- | --------- | ----- | ------------ | --------- | ------- | --------- | --------- | --------- | --------- | --------- | ------------- | ----------- | ----------- | -------------- | | SYSTEMDB | dc1hana01 | 31001 | nameserver | 1 | 1 | DC1 | dc2hana01 | 31001 | 2 | DC2 | YES | SYNC | ACTIVE | | | RH1 | dc1hana01 | 31007 | xsengine | 2 | 1 | DC1 | dc2hana01 | 31007 | 2 | DC2 | YES | SYNC | ACTIVE | | | RH1 | dc1hana01 | 31003 | indexserver | 3 | 1 | DC1 | dc2hana01 | 31003 | 2 | DC2 | YES | SYNC | ACTIVE | | | RH1 | dc1hana03 | 31003 | indexserver | 5 | 1 | DC1 | dc2hana03 | 31003 | 2 | DC2 | YES | SYNC | ACTIVE | | | RH1 | dc1hana02 | 31003 | indexserver | 4 | 1 | DC1 | dc2hana02 | 31003 | 2 | DC2 | YES | SYNC | ACTIVE | | status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State Red Hat Enterprise Linux HA Solution for SAP HANA Scale Out and System Replication Page 57 ~~~~~~~~~~ mode: PRIMARY site id: 1 site name: DC1 rh1adm@dc1hana01:/usr/sap/RH1/HDB10>检查 HANA 系统复制是否处于活动状态。
rh1adm@dc1hana01:/usr/sap/RH1/HDB10> HDBSettings.sh systemReplicationStatus.py | Database | Host | Port | Service Name | Volume ID | Site ID | Site Name | Secondary | Secondary | Secondary | Secondary | Secondary | Replication | Replication | Replication | | | | | | | | | Host | Port | Site ID | Site Name | Active Status | Mode | Status | Status Details | | -------- | --------- | ----- | ------------ | --------- | ------- | --------- | --------- | --------- | --------- | --------- | ------------- | ----------- | ----------- | -------------- | | SYSTEMDB | dc1hana01 | 31001 | nameserver | 1 | 1 | DC1 | dc2hana01 | 31001 | 2 | DC2 | YES | SYNC | ACTIVE | | | RH1 | dc1hana01 | 31007 | xsengine | 2 | 1 | DC1 | dc2hana01 | 31007 | 2 | DC2 | YES | SYNC | ACTIVE | | | RH1 | dc1hana01 | 31003 | indexserver | 3 | 1 | DC1 | dc2hana01 | 31003 | 2 | DC2 | YES | SYNC | ACTIVE | | | RH1 | dc1hana03 | 31003 | indexserver | 5 | 1 | DC1 | dc2hana03 | 31003 | 2 | DC2 | YES | SYNC | ACTIVE | | | RH1 | dc1hana02 | 31003 | indexserver | 4 | 1 | DC1 | dc2hana02 | 31003 | 2 | DC2 | YES | SYNC | ACTIVE | | status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~ mode: PRIMARY site id: 1 site name: DC1 rh1adm@dc1hana01:/usr/sap/RH1/HDB10>注意如果在生产环境中实施此配置,建议您更改
global.ini文件中的网络通信。此操作将与指定适配器的通信限制到系统复制网络。如需更多信息,请参阅 SAP HANA 系统复制的网络配置。重要需要手动测试完整的 SAP HANA Scale-Out System Replication 环境,并验证所有 SAP HANA 功能是否都正常工作。如需更多信息,请参阅 SAP HANA System Replication。
3.3. 配置 Pacemaker 复制链接链接已复制到粘贴板!
当 HANA Scale-Out 环境配置且 HANA 系统复制按预期工作时,您可以配置 HA 集群,以使用 RHEL HA 附加组件管理 HANA Scale-Out System Replication 环境。
需要额外的仲裁实例,以防止 Pacemaker 脑裂配置。在本例中,我们添加一个节点。此节点作为 大多数制造商称为大多数制造商,需要奇数个集群节点才能进行工作配置。这是一个额外的最小的主机,它只需要 Pacemaker 和公共网络。虽然在这个节点上,没有安装 SAP HANA 数据库,存储配置已过时。
先决条件
-
已安装
saphostagent,并检查 /usr/sap/hostcontrol/exe/sapcontrol 是否存在。如需更多信息,请参阅 1031096 - 安装软件包 SAPHOSTAGENT。 - 您已确认系统中配置了 RHEL 高可用性存储库。您不能在没有此配置的情况下安装 Pacemaker。
- 您已以 root 用户身份登录所有系统。
您已确认所有集群节点都已注册,并启用了必要的软件仓库来安装集群软件包,如 Registering your RHEL system and enable repositories 部分所述。
[root@dc1hana01]# subscription-manager repos --list-enabled +----------------------------------------------------------+ Available Repositories in /etc/yum.repos.d/redhat.repo +----------------------------------------------------------+ Repo ID: rhel-8-for-x86_64-baseos-e4s-rpms Repo Name: Red Hat Enterprise Linux 8 for x86_64 - BaseOS - Update Services for SAP Solutions (RPMs) Repo URL: <Your repo URL> Enabled: 1 Repo ID: rhel-8-for-x86_64-sap-solutions-e4s-rpms Repo Name: Red Hat Enterprise Linux 8 for x86_64 - SAP Solutions - Update Services for SAP Solutions (RPMs) Repo URL: <Your repo URL> Enabled: 1 Repo ID: ansible-2.8-for-rhel-8-x86_64-rpms Repo Name: Red Hat Ansible Engine 2.8 for RHEL 8 x86_64 (RPMs) Repo URL: <Your repo URL> Enabled: 1 Repo ID: rhel-8-for-x86_64-highavailability-e4s-rpms Repo Name: Red Hat Enterprise Linux 8 for x86_64 - High Availability - Update Services for SAP Solutions (RPMs) Repo URL: <Your repo URL> Enabled: 1 Repo ID: rhel-8-for-x86_64-appstream-e4s-rpms Repo Name: Red Hat Enterprise Linux 8 for x86_64 - AppStream - Update Services for SAP Solutions (RPMs) Repo URL: <Your repo URL> Enabled: 1 yum repolist Updating Subscription Management repositories. repo id repo name advanced-virt-for-rhel-8-x86_64-rpms Advanced Virtualization for RHEL 8 x86_64 (RPMs) ansible-2.8-for-rhel-8-x86_64-rpms Red Hat Ansible Engine 2.8 for RHEL 8 x86_64 (RPMs) rhel-8-for-x86_64-appstream-e4s-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream - Update Services for SAP Solutions (RPMs) rhel-8-for-x86_64-baseos-e4s-rpms Red Hat Enterprise Linux 8 for x86_64 - BaseOS - Update Services for SAP Solutions (RPMs) rhel-8-for-x86_64-highavailability-e4s-rpms Red Hat Enterprise Linux 8 for x86_64 - High Availability - Update Services for SAP Solutions (RPMs) rhel-8-for-x86_64-sap-netweaver-e4s-rpms Red Hat Enterprise Linux 8 for x86_64 - SAP NetWeaver - Update Services for SAP Solutions (RPMs) rhel-8-for-x86_64-sap-solutions-e4s-rpms Red Hat Enterprise Linux 8 for x86_64 - SAP Solutions - Update Services for SAP Solutions (RPMs)
流程
- 配置集群。如需更多信息,请参阅 配置和管理高可用性集群。
在集群的每个节点中(包括
大多数制造商)安装 Red Hat High Availability Add-On 软件包,以及 High Availability 频道中所有可用的隔离代理:[root]# yum -y install pcs pacemaker fence-agents或者,您只能安装特定的 fence-agents :
[root]# yum install fence-agents-sbd fence-agents-ipmilan如果您正在运行
防火墙守护进程,请执行以下命令启用红帽高可用性附加组件所需的端口:[root]# firewall-cmd --permanent --add-service=high-availability [root]# firewall-cmd --add-service=high-availability配置后,在每个集群节点上为用户
hacluster设置密码。[root]# passwd hacluster Changing password for user hacluster. New password: Retype new password: passwd: all authentication tokens updated successfully.通过在每个节点上执行以下命令来启动并启用守护进程:
[root]# systemctl start [root]# pcsd.service systemctl enable pcsd.service只在一个节点中,您必须验证
hacluster用户。在此命令中包含每个节点非常重要,这应该是集群的一部分。如果没有指定密码,系统会要求您输入在上一步中定义的hacluster密码。对于 RHEL 8.x,运行以下命令:[root@dc1hana01]# pcshost auth -u hacluster -p <clusterpassword> dc1hana01 dc1hana02 dc1hana03 dc1hana04 dc2hana01 dc2hana02 dc2hana03 dc2hana04 majoritymaker Username: hacluster Password: majoritymaker: Authorized dc1hana03: Authorized dc1hana02: Authorized dc1hana01: Authorized dc2hana01: Authorized dc2hana02: Authorized dc1hana04: Authorized dc2hana04: Authorized dc2hana03: Authorized在同一节点上使用
pcs clustersetup 来生成和同步corosync配置。RHEL 8 示例还显示,如果您使用 2 个集群网络[root@dc1hana01]# pcs cluster setup scale_out_hsr majoritymaker addr=10.10.10.41 addr=192.168.102.100 dc1hana01 addr=10.10.10.21 addr=192.168.102.101 dc1hana02 addr=10.10.10.22 addr=192.168.102.102 dc1hana03 addr=10.10.10.23 addr=192.168.102.103 dc1hana04 addr=10.10.10.24 addr=192.168.102.104 dc2hana01 addr=10.10.10.31 addr=192.168.102.201 dc2hana02 addr=10.10.10.33 addr=192.168.102.202 dc2hana03 addr=10.10.10.34 addr=192.168.212.203 dc2hana04 addr=10.10.10.10 addr=192.168.102.204 Destroying cluster on nodes: dc1hana01, dc1hana02, dc1hana03, dc1hana04, dc2hana01, dc2hana02, dc2hana03, dc2hana04, majoritymaker... dc1hana01: Stopping Cluster (pacemaker)... dc1hana04: Stopping Cluster (pacemaker)... dc1hana03: Stopping Cluster (pacemaker)... dc2hana04: Stopping Cluster (pacemaker)... dc2hana01: Stopping Cluster (pacemaker)... dc2hana03: Stopping Cluster (pacemaker)... majoritymaker: Stopping Cluster (pacemaker)... dc2hana02: Stopping Cluster (pacemaker)... dc1hana02: Stopping Cluster (pacemaker)... dc2hana01: Successfully destroyed cluster dc2hana03: Successfully destroyed cluster dc1hana04: Successfully destroyed cluster dc1hana03: Successfully destroyed cluster dc2hana02: Successfully destroyed cluster dc1hana01: Successfully destroyed cluster dc1hana02: Successfully destroyed cluster dc2hana04: Successfully destroyed cluster majoritymaker: Successfully destroyed cluster Sending 'pacemaker_remote authkey' to 'dc1hana01', 'dc1hana02', 'dc1hana03', 'dc1hana04', 'dc2hana01', 'dc2hana02', 'dc2hana03', 'dc2hana04', 'majoritymaker' dc1hana01: successful distribution of the file 'pacemaker_remote authkey' dc1hana04: successful distribution of the file 'pacemaker_remote authkey' dc1hana03: successful distribution of the file 'pacemaker_remote authkey' dc2hana01: successful distribution of the file 'pacemaker_remote authkey' dc2hana02: successful distribution of the file 'pacemaker_remote authkey' dc2hana03: successful distribution of the file 'pacemaker_remote authkey' dc2hana04: successful distribution of the file 'pacemaker_remote authkey' majoritymaker: successful distribution of the file 'pacemaker_remote authkey' dc1hana02: successful distribution of the file 'pacemaker_remote authkey' Sending cluster config files to the nodes... dc1hana01: Succeeded dc1hana02: Succeeded dc1hana03: Succeeded dc1hana04: Succeeded dc2hana01: Succeeded dc2hana02: Succeeded dc2hana03: Succeeded dc2hana04: Succeeded majoritymaker: Succeeded Starting cluster on nodes: dc1hana01, dc1hana02, dc1hana03, dc1hana04, dc2hana01, dc2hana02, dc2hana03, dc2hana04, majoritymaker... dc2hana01: Starting Cluster... dc1hana03: Starting Cluster... dc1hana01: Starting Cluster... dc1hana02: Starting Cluster... dc1hana04: Starting Cluster... majoritymaker: Starting Cluster... dc2hana02: Starting Cluster... dc2hana03: Starting Cluster... dc2hana04: Starting Cluster... Synchronizing pcsd certificates on nodes dc1hana01, dc1hana02, dc1hana03, dc1hana04, dc2hana01, dc2hana02, dc2hana03, dc2hana04, majoritymaker... majoritymaker: Success dc1hana03: Success dc1hana02: Success dc1hana01: Success dc2hana01: Success dc2hana02: Success dc2hana03: Success dc2hana04: Success dc1hana04: Success Restarting pcsd on the nodes in order to reload the certificates... dc1hana04: Success dc1hana03: Success dc2hana03: Success majoritymaker: Success dc2hana04: Success dc1hana02: Success dc1hana01: Success dc2hana01: Success dc2hana02: Success使用以下命令在每个节点上启用服务:
[root@dc1hana01]# pcs cluster enable --all dc1hana01: Cluster Enabled dc1hana02: Cluster Enabled dc1hana03: Cluster Enabled dc1hana04: Cluster Enabled dc2hana01: Cluster Enabled dc2hana02: Cluster Enabled dc2hana03: Cluster Enabled dc2hana04: Cluster Enabled majoritymaker: Cluster Enabled完成所有步骤会导致配置的集群和节点。配置资源代理的第一步是使用 STONITH 配置隔离方法,这会重启不再可访问的节点。支持的环境需要这个 STONITH 配置。
使用适合您的硬件或虚拟化环境的隔离代理来为环境配置 STONITH。以下是为 STONITH 配置隔离设备的通用示例:
[root@dc1hana01]# pcs stonith create <stonith id> <fence_agent> ipaddr=<fence device> login=<login> passwd=<passwd>注意每个设备的配置都是不同的,配置 STONITH 是这个环境的要求。如果您需要帮助,请联系红帽支持团队以获得直接帮助。如需更多信息,请参阅 RHEL 高可用性集群的支持政策 - 隔离/STONITH 和隔离配置的一般要求。https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/high_availability_add-on_administration/s1-fenceconfig-haaa
配置后,集群状态应当类似于以下输出。这是 Red Hat Enterprise Virtualization 环境的隔离设备示例:
[root@dc1hana01]# pcs status Cluster name: hanascaleoutsr Stack: corosync Current DC: dc2hana01 (version 1.1.18-11.el7_5.4-2b07d5c5a9) - partition with quorum Last updated: Tue Mar 26 13:03:01 2019 Last change: Tue Mar 26 13:02:54 2019 by root via cibadmin on dc1hana01 9 nodes configured 1 resource configured Online: [ dc1hana01 dc1hana02 dc1hana03 dc1hana04 dc2hana01 dc2hana02 dc2hana03 dc2hana04 majoritymaker ] Full list of resources: fencing (stonith:fence_rhevm): Started dc1hana01 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
3.3.1. 为 Scale-Out 系统安装 SAP HANA 资源代理 复制链接链接已复制到粘贴板!
在配置资源代理时,每个系统中都会安装 resource-agent-sap-hana-scaleout 软件包,包括 大多数制造商 :
[root@dc1hana01]# yum install resource-agents-sap-hana-scaleout
验证是否附加了正确的存储库。yum repolist 应包含:
root# yum repolist
"rhel-x86_64-server-sap-hana-<version>” RHEL Server SAP HANA (v. <version> for 64-bit <architecture>).
3.3.2. 在所有 SAP HANA 实例上启用 srConnectionChanged ()hook 复制链接链接已复制到粘贴板!
如 SAP 实施 HA/DR 提供程序 中所述,最新版本的 SAP HANA 提供"hooks",允许 SAP HANA 为某些事件发送通知。srConnectionChanged () hook 可以用来提高集群在出现 SAP HANA System Replication 状态更改时检测到的能力,要求集群采取行动并避免数据丢失/数据损坏,防止意外接管在应避免的情况下触发。在使用 SAP HANA 2.0 SPS06 或更高版本以及 resource-agents-sap-hana-scaleout 软件包的版本时,您必须启用 hook,它提供支持 srConnectionChanged () hook 的组件。
流程
- 在共享设备上每个数据中心的一个节点中安装 hook。如需更多信息,请参阅 实施 HA/DR 提供程序。
在 hana 共享文件夹中创建一个目录来配置 hook。这被配置为从 SAP HANA 数据库创建额外的数据。要启用它,您必须停止系统,并在
global.ini文件中添加两个额外的配置参数。在此解决方案中,以下示例显示了ha_dr_provider_SAPHanaSr和trace的配置。[root@dc1hana01]# su - rh1adm [rh1adm@dc1hana01]% sapcontrol -nr 10 -function StopSystem *[rh1adm@dc1hana01]% cat <<EOF >> /hana/shared/RH1/global/hdb/custom/config/global.ini [ha_dr_provider_SAPHanaSR] provider = SAPHanaSR path = /usr/share/SAPHanaSR-ScaleOut execution_order = 1 [trace] ha_dr_saphanasr = info EOF在每个集群节点上,通过运行
sudo visudo创建文件 /etc/sudoers.d/20-saphana,并添加以下内容,并在调用/etc/sudoers.d/20-saphanasrConnectionChanged ()hook 时允许 hook 脚本更新节点属性:rh1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_rh1_glob_srHook -v * -t crm_config -s SAPHanaSR rh1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_rh1_gsh -v * -l reboot -t crm_config -s SAPHanaSR Defaults:rh1adm !requiretty有关为什么需要默认设置的更多信息,请参阅在 管理 SAP HANA 系统复制的 Pacemaker 集群中将 srHook 属性设置为 SFAIL,即使复制处于健康状态。
在成功集成后启动 SAP HANA 数据库。
# Execute the following commands on one HANA node in every datacenter [root]# su - rh1adm [rh1adm]% sapcontrol -nr 10 -function StartSystem验证 hook 脚本是否按预期工作。执行操作,以触发 hook,如停止 HANA 实例。然后,使用以下方法检查 hook 是否记录任何内容:
[rh1adm@dc1hana01]% cdtrace [rh1adm@dc1hana01]% awk '/ha_dr_SAPHanaSR.*crm_attribute/ \ { printf "%s %s %s %s\n",$2,$3,$5,$16 }' nameserver_* 2018-05-04 12:34:04.476445 ha_dr_SAPHanaSR SFAIL 2018-05-04 12:53:06.316973 ha_dr_SAPHanaSR SOK有关如何验证 SAP HANA hook 是否正常工作的更多信息,请参阅使用 M_HA_DR_PROVIDERS 监控。
3.3.3. 配置 Pacemaker 资源 复制链接链接已复制到粘贴板!
您必须创建两个资源代理: SAPHanaTopology 和 SAPHanaController,它们控制 HANA 和 Pacemaker 环境,以用于 Pacemaker 配置过程。另外,您需要在 Pacemaker 中配置虚拟 IP 地址,以实现最终用户和 SAP 应用服务器的连接。根据执行的操作,添加了两个依赖项,以确保以正确顺序执行资源代理,并且虚拟 IP 地址映射到正确的主机。
先决条件
您已设置了集群
维护模式,以避免在配置过程中造成不必要的影响:[root@dc1hana01]# pcs property set maintenance-mode=true
3.3.3.1. 配置 SAPHanaTopology 资源 复制链接链接已复制到粘贴板!
SAPHanaTopology资源代理会收集每个节点上 SAP HANA System Replication 的状态和配置。此外,它启动并监控本地 SAP HostAgent,这是启动、停止和监控 SAP HANA 实例所必需的。资源代理具有以下属性,它依赖于已安装的 SAP HANA 环境:Expand 属性名称
必需?
默认值
描述
SID
是
null
SAP HANA 安装的 SAP System Identifier (SID) (所有节点必须相同)。示例:RH2
InstanceNumber
是
null
SAP HANA 安装的实例号(所有节点必须相同)。示例: 02
在这个解决方案中,SID 设置为 RH1,实例号设为 10。
注意建议第一次部署 timeout 和 monitor 参数,在测试环境时可以更改它们。有几个依赖项,如环境中的大小和节点数。
以 root 用户身份在整个集群中的一个主机上为 RHEL 8.x 执行以下命令:
[root@dc1hana01]# pcs resource create rsc_SAPHanaTopology_RH1_HDB10 SAPHanaTopology SID=RH1 InstanceNumber=10 op methods interval=0s timeout=5 op monitor interval=10 timeout=600 clone clone-max=6 clone-node-max=1 interleave=true --disabled在 Pacemaker 中创建资源时,会克隆它。
注意clone-node-max参数定义在单个节点上可以启动资源代理的副本数。interleave 表示如果此克隆依赖于另一个使用排序约束的克隆,则允许在其他克隆的本地实例启动后启动,而不是等待其他克隆的所有实例启动。clone-max参数定义可以启动多少个克隆;例如,每个站点的最小配置 2 个节点,您应该为SAPHanaController和SAPHanaTopology使用clone-max=4。每个站点有 3 个节点(不计算待机节点),您应该使用 6。资源启动后,可以查看以节点属性形式存储的信息:
root# pcs status --full
3.3.3.2. 配置 SAPHanaController 资源 复制链接链接已复制到粘贴板!
当 SAPHanaTopology 资源代理的配置过程完成后,可以配置 SAPHanaController 资源代理。虽然 SAP Hana Topology 资源代理只收集数据,但 SAPHanaTopology 资源代理根据之前收集的数据来控制 SAP 环境。如下表所示,五个重要的配置参数定义了集群功能:
| 属性名称 | 必需? | 默认值 | 描述 |
| SID | 是 | null | SAP HANA 安装的 SAP System Identifier (SID) (所有节点必须相同)。示例:RH2 |
| InstanceNumber | 是 | null | SAP HANA 安装的实例号(所有节点必须相同)。示例: 02 |
| PREFER_SITE_TAKEOVER | 否 | null | 资源代理是否更喜欢切换到二级实例,而不是在本地重启主实例?true: prefer to the secondary site; false: prefer restart local; never: on no circumstances 启动到其他节点。 |
| AUTOMATED_REGISTER | 否 | false | 如果发生接管事件,并且 DUPLICATE_PRIMARY_TIMEOUT 应作为次要注册了以前的主实例?("false": no,需要手动干预;"true": yes,前者主将由资源代理注册) [1]。 |
| DUPLICATE_PRIMARY_TIMEOUT | 否 | 7200 | 如果出现双主要情况,在两个主要时间戳之间需要的时间差(以秒为单位)。如果时间差异小于时间差距,集群会将一个或多个实例保存在"WAITING"状态。这是为了让系统管理员有机会响应接管。在传递时间差异后,如果 AUTOMATED_REGISTER 设为 true,则前一个主主将注册为二级。注册新主后,前一个主中的所有数据都会被系统复制覆盖。 |
[1] - 作为测试和概念验证(PoC)环境的最佳实践,建议您将 AUTOMATED_REGISTER 保留为默认值(AUTOMATED_REGISTER="false"),以防止失败的主实例自动注册为二级实例。测试后,如果故障转移场景按预期工作,特别是在生产环境中,建议您设置 AUTOMATED_REGISTER="true",以便系统复制会及时恢复,避免中断。当主节点上出现故障时 AUTOMATED_REGISTER="false" 时,您必须手动将其注册为次要 HANA 系统复制节点。
以下命令是如何创建 SAPHanaController promotable 资源的 RHEL 8.x 示例。该示例基于参数: SID RH1、InstanceNumber 10、Prefer Site Takeover 和 Automated_REGISTER 的值,以及 Duplicate Primary Timeout of 7200 :
[root@dc1hana01]# pcs resource create rsc_SAPHana_RH1_HDB10 SAPHanaController SID=RH1 InstanceNumber=10 PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true op demote interval=0s timeout=320 op methods interval=0s timeout=5 op monitor interval=59 role="Promoted" timeout=700 op monitor interval=61 role="Unpromoted" timeout=700 op promote interval=0 timeout=3600 op start interval=0 timeout=3600 op stop interval=0 timeout=3600 promotable clone-max=6 promoted-node-max=1 interleave=true --disabled
对于 clone-max,请使用命令中列出的 HDB_WORKERs 两倍:
/usr/sap/hostctrl/exe/sapcontrol -nr 10 -function GetSystemInstanceList
GetSystemInstanceList
OK
hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus
dc1hana01,10,51013,51014,0.3,HDB|HDB_WORKER,GREEN
dc1hana02,10,51013,51014,0.3,HDB|HDB_WORKER,GREEN
dc1hana03,10,51013,51014,0.3,HDB|HDB_WORKER,GREEN
dc1hana04,10,51013,51014,0.3,HDB|HDB_STANDBY, GREEN
在本解决方案中,在创建 SAPHanaController 后,该资源被定义为一个可升级的资源:(SID 是 RH1,InstanceNumber 为 10)。
如需更多信息,请参阅 多状态资源: Have Multiple Mode 的资源。
3.3.3.3. 配置资源以管理虚拟 IP 地址 复制链接链接已复制到粘贴板!
集群需要包括一个资源来管理虚拟 IP 地址,供客户端用于访问主 SAP HANA Scale-Out 站点的主名称服务器。
以下命令是如何使用虚拟 IP 10.0.0.250 创建 IPaddr2 资源的示例:
[root@dc1hana01]# pcs resource create rsc_ip_SAPHana_RH1_HDB10 ocf:heartbeat:IPaddr2 ip=10.0.0.250 op monitor interval="10s" timeout="20s"
3.3.4. 创建限制 复制链接链接已复制到粘贴板!
要进行正确的操作,请验证 SAPHanaTopology 资源是否在 SAPHanaController 资源启动之前启动,并且运行 SAPHanaController 的提升资源的节点上存在虚拟 IP 地址。使用这个流程创建四个必要的限制。
步骤: 在 SAPHana之前启动 SAPHanaTopology
以下命令是如何创建约束以强制资源启动顺序的约束。
创建约束:
[root@dc1hana01]# pcs constraint order start rsc_SAPHanaTopology_RH1_HDB10-clone then start rsc_SAPHana_RH1_HDB10-clone将
IPaddr2资源与提升的SAPHana资源共存:[root@dc1hana01]# pcs constraint colocation add rsc_ip_SAPHana_RH1_HDB10 with promoted rsc_SAPHana_RH1_HDB10-clone避免
大多数制造商在集群环境中使用活跃角色:[root@dc1hana01]# pcs constraint location add topology-avoids-majoritymaker rsc_SAPHanaTopology_RH1_HDB10-clone majoritymaker -INFINITY resource-discovery=never [root@dc1hana01]# pcs constraint location add hana-avoids-majoritymaker rsc_SAPHana_RH1_HDB10-clone majoritymaker -INFINITY resource-discovery=never禁用
maintenance-mode:在将
maintenance-mode设置为 false 后,使用maintenance-mode启动资源。为避免在所有配置完成前 pacemaker 活动,我们在上述示例中使用了以上示例。默认情况下,资源会在创建后马上启动。with-disabled,您可以使用以下命令启动资源:[root@dc1hana01]# pcs resource enable <resource-name>要保留
Maintenance-mode,请使用:[root@dc1hana01]# pcs property set maintenance-mode=false运行以下 3 命令以验证集群环境是否正常工作:
-
pcs status提供每个资源的概览,以及它们是否正常运行。 -
pcs status --full提供所有资源和集群环境的额外属性信息的概述。 SAPHanaSR-showAttr --sid=RH1提供了基于属性信息的可读概述。停用
maintenance-mode后,会显示正确的状态。[root@dc1hana01]# pcs status Cluster name: hanascaleoutsr Stack: corosync Current DC: dc2hana01 (version 1.1.18-11.el7_5.4-2b07d5c5a9) - partition with quorum Last updated: Tue Mar 26 14:26:38 2019 Last change: Tue Mar 26 14:25:47 2019 by root via crm_attribute on dc1hana01 9 nodes configured 20 resources configured Online: [ dc1hana01 dc1hana02 dc1hana03 dc1hana04 dc2hana01 dc2hana02 dc2hana03 dc2hana04 majoritymaker ] Full list of resources: fencing (stonith:fence_rhevm): Started dc1hana01 Clone Set: rsc_SAPHanaTopology_RH1_HDB10-clone [rsc_SAPHanaTopology_RH1_HDB10] Started: [ dc1hana01 dc1hana02 dc1hana03 dc1hana04 dc2hana01 dc2hana02 dc2hana03 dc2hana04 ] Stopped: [ majoritymaker ] Clone Set: msl_rsc_SAPHana_RH1_HDB10 [rsc_SAPHana_RH1_HDB10] (promotable): Promoted: [ dc1hana01 ] Unpromoted: [ dc1hana02 dc1hana03 dc1hana04 dc2hana01 dc2hana02 dc2hana03 dc2hana04 ] Stopped: [ majoritymaker ] rsc_ip_SAPHana_RH1_HDB10 (ocf::heartbeat:IPaddr2): Started dc1hana01 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled [root@dc1hana01]# SAPHanaSR-showAttr --sid=RH1 Global prim srHook sync_state ------------------------------ global DC1 SOK SOK Sit lpt lss mns srr --------------------------------- DC1 1553607125 4 dc1hana01 P DC2 30 4 dc2hana01 S H clone_state roles score site -------------------------------------------------------- 1 PROMOTED promoted1 promoted:worker promoted 150 DC1 2 DEMOTED promoted2:slave:worker:slave 110 DC1 3 DEMOTED slave:slave:worker:slave -10000 DC1 4 DEMOTED promoted3:slave:standby:standby 115 DC1 5 DEMOTED promoted2 promoted:worker promoted 100 DC2 6 DEMOTED promoted3:slave:worker:slave 80 DC2 7 DEMOTED slave:slave:worker:slave -12200 DC2 8 DEMOTED promoted1:slave:standby:standby 80 DC2 9 :shtdown:shtdown:shtdown
-
第 4 章 可选设置 复制链接链接已复制到粘贴板!
4.1. 为 Active/Active (Read-Enabled)设置添加辅助虚拟 IP 地址资源 复制链接链接已复制到粘贴板!
从 SAP HANA 2.0 SPS1 开始,SAP 允许 SAP HANA System Replication 的"主动/主动(Read Enabled) "设置。这可让您:
- 启用 SAP HANA 系统复制,以支持辅助系统上的读取访问权限。
- 对辅助系统执行读取性报告,以从主系统中删除此工作负载。
- 降低持续操作中带宽的需求。
如需更多信息,请参阅 SAP HANA System Replication。
需要第二个虚拟 IP 地址来允许客户端访问辅助 SAP HANA 数据库。在失败的情况下,如果辅助站点无法访问,则第二个 IP 将切换到主站点,以避免出现只读访问的停机时间。
operationMode 应设置为 logreplay_readaccess。第二个虚拟 IP 和额外的必要的限制可以使用以下命令配置:
root# pcs resource create rsc_ip2_SAPHana_RH1_HDB10 ocf:heartbeat:IPaddr2 ip=10.0.0.251 op monitor interval="10s" timeout="20s
4.1.1. 配置额外限制 复制链接链接已复制到粘贴板!
以上列出的约束严格推荐。要调整您的环境的行为,需要额外的限制。这些示例包括:
root# pcs constraint location rsc_ip_SAPHana_RH1_HDB10 rule score=500 role=master hana_rh1_roles eq "master1:master:worker:master" and hana_rh1_clone_state eq PROMOTED
当次要站点停机时,将 IP2 移到主站点中:
root# pcs constraint location rsc_ip2_SAPHana_RH1_HDB10 rule score=50 id=vip_slave_master_constraint hana_rh1_roles eq 'master1:master:worker:master'
root# pcs constraint order promote rsc_SAPHana_RH1_HDB10-clone then start rsc_ip_SAPHana_RH1_HDB10
root# pcs constraint order start rsc_ip_SAPHana_RH1_HDB10 then start rsc_ip2_SAPHana_RH1_HDB10
root# pcs constraint colocation add rsc_ip_SAPHana_RH1_HDB10 with Master rsc_SAPHana_RH1_HDB10-clone 2000
root# pcs constraint colocation add rsc_ip2_SAPHana_RH1_HDB10 with Slave rsc_SAPHana_RH1_HDB10-clone 5
流程
如果集群正在运行,测试集群是否能够运行的行为
root# watch pcs status使用以下命令手动停止 secondary HANA 实例:
sidadm% sapcontrol -nr ${TINSTANCE} -function StopSystem HDB几秒钟后,第二台 IP 地址将移到主主机上。然后您可以使用以下内容再次手动启动数据库:
sidadm% sapcontrol -nr ${TINSTANCE} -function StartSystem HDB- 重启集群以进一步使用。
4.2. 添加文件系统监控 复制链接链接已复制到粘贴板!
Pacemaker 不会主动监控挂载点,除非文件系统资源管理它们。在横向扩展环境中,数据库可以分布到不同的可用区。挂载点可以特定于某个区域,然后需要指定为节点属性。如果只应在文件系统资源中处理挂载,则应从 /etc/fstab 中删除它们。需要挂载才能运行 SAP HANA 服务,因此在 SAP HANA 服务启动之前,顺序限制必须确保挂载文件系统。如需更多信息,请参阅 当 HANA 文件系统位于 NFS 共享时,如何在 Pacemaker 集群中配置 SAP HANA Scale-Out System Replication?
4.2.1. filesystem 资源示例 复制链接链接已复制到粘贴板!
示例配置示例类似如下:
列出 pcs node 属性:
[root@dc1hana01]# pcs node attribute
Node Attributes:
saphdb1: hana_hdb_gra=2.0 hana_hdb_site=DC1 hana_hdb_vhost=sapvirthdb1
saphdb2: hana_hdb_gra=2.0 hana_hdb_site=DC1 hana_hdb_vhost=sapvirthdb2
saphdb3: hana_hdb_gra=2.0 hana_hdb_site=DC2 hana_hdb_vhost=sapvirthdb3
saphdb4: hana_hdb_gra=2.0 hana_hdb_site=DC2 hana_hdb_vhost=sapvirthdb4
请注意,pcs node 属性和 saphdb1 hana_hdb_site=DC1 属性名称处于小写。
假设我们有当前的配置:
-
SID=RH1 -
Instance_Number=10
| 节点 | AZ | 属性 | value |
| dc1hana01 | DC1 | NFS_SHARED_RH1_SITE | DC1 |
| dc1hana02 | DC1 | NFS_SHARED_RH1_SITE | DC1 |
| dc2hana01 | DC2 | NFS_SHARED_RH1_SITE | DC2 |
| dc2hana02 | DC2 | NFS_SHARED_RH1_SITE | DC2 |
以下是为数据和日志设置节点属性挂载点的示例:
[root@dc1hana01]# pcs resource create nfs_hana_shared_dc1 ocf:heartbeat:Filesystem device=svm-012ab34cd45ef67.fs-0879de29a7fbb752d.fsx.ap-southeast-2.amazonaws.com:/sap_hana_dc1_log_shared/shared directory=/hana/shared fstype=nfs options=defaults,suid op monitor interval=60s on-fail=fence timeout=20s OCF_CHECK_LEVEL=20 clone
[root@dc1hana01]# pcs resource create nfs_hana_log_dc1 ocf:heartbeat:Filesystem device=svm-012ab34cd45ef67.fs-0879de29a7fbb752d.fsx.ap-southeast-2.amazonaws.com:/sap_hana_dc1_log_shared/lognode1 directory=/hana/log/HDB fstype=nfs options=defaults,suid op monitor interval=60s on-fail=fence timeout=20s OCF_CHECK_LEVEL=20 clone
[root@dc1hana01]# pcs resource create nfs_hana_log2_dc1 ocf:heartbeat:Filesystem device=svm-012ab34cd45ef67.fs-0879de29a7fbb752d.fsx.ap-southeast-2.amazonaws.com:/sap_hana_dc1_log_shared/lognode2 directory=/hana/log/HDB fstype=nfs options=defaults,suid op monitor interval=60s on-fail=fence timeout=20s OCF_CHECK_LEVEL=20 clone
[root@dc1hana01]# pcs resource create nfs_hana_shared_dc2 ocf:heartbeat:Filesystem device=svm-012ab34cd45ef78.fs-088e3f66bf4f22c33.fsx.ap-southeast-2.amazonaws.com:/sap_hana_dc2_log_shared/shared directory=/hana/shared fstype=nfs options=defaults,suid op monitor interval=60s on-fail=fence timeout=20s OCF_CHECK_LEVEL=20 clone
[root@dc1hana01]# pcs resource create nfs_hana_log_dc2 ocf:heartbeat:Filesystem device=svm-012ab34cd45ef678.fs-088e3f66bf4f22c33.fsx.ap-southeast-2.amazonaws.com:/sap_hana_dc2_log_shared/lognode1 directory=/hana/log/HDB fstype=nfs options=defaults,suid op monitor interval=60s on-fail=fence timeout=20s OCF_CHECK_LEVEL=20 clone
[root@dc1hana01]# pcs resource create nfs_hana_log2_dc2 ocf:heartbeat:Filesystem device=svm-012ab34cd45ef678.fs-088e3f66bf4f22c33.fsx.ap-southeast-2.amazonaws.com:/sap_hana_dc2_log_shared/lognode2 directory=/hana/log/HDB fstype=nfs options=defaults,suid op monitor interval=60s on-fail=fence timeout=20s OCF_CHECK_LEVEL=20 clone
[root@dc1hana01]# pcs node attribute sap-dc1-dbn2 NFS_HDB_SITE=DC1N2
[root@dc1hana01]# pcs node attribute sap-dc2-dbn1 NFS_HDB_SITE=DC2N1
[root@dc1hana01]# pcs node attribute sap-dc2-dbn2 NFS_HDB_SITE=DC2N2
[root@dc1hana01]# pcs node attribute sap-dc1-dbn1 NFS_SHARED_HDB_SITE=DC1
[root@dc1hana01]# pcs node attribute sap-dc1-dbn2 NFS_SHARED_HDB_SITE=DC1
[root@dc1hana01]# pcs node attribute sap-dc2-dbn1 NFS_SHARED_HDB_SITE=DC2
[root@dc1hana01]# pcs node attribute sap-dc2-dbn2 NFS_SHARED_HDB_SITE=DC2
[root@dc1hana01]# pcs constraint location nfs_hana_shared_dc1-clone rule resource-discovery=never score=-INFINITY NFS_SHARED_HDB_SITE ne DC1
[root@dc1hana01]# pcs constraint location nfs_hana_log_dc1-clone rule resource-discovery=never score=-INFINITY NFS_HDB_SITE ne DC1N1
[root@dc1hana01]# pcs constraint location nfs_hana_log2_dc1-clone rule resource-discovery=never score=-INFINITY NFS_HDB_SITE ne DC1N2
[root@dc1hana01]# pcs constraint location nfs_hana_shared_dc2-clone rule resource-discovery=never score=-INFINITY NFS_SHARED_HDB_SITE ne DC2
[root@dc1hana01]# pcs constraint location nfs_hana_log_dc2-clone rule resource-discovery=never score=-INFINITY NFS_HDB_SITE ne DC2N1
[root@dc1hana01]# pcs constraint location nfs_hana_log2_dc2-clone rule resource-discovery=never score=-INFINITY NFS_HDB_SITE ne DC2N2
[root@dc1hana01]# pcs resource enable nfs_hana_shared_dc1 *[root@dc1hana01]# pcs resource enable nfs_hana_log_dc1
[root@dc1hana01]# pcs resource enable nfs_hana_log2_dc1
[root@dc1hana01]# pcs resource enable nfs_hana_shared_dc2
[root@dc1hana01]# pcs resource enable nfs_hana_log_dc2
[root@dc1hana01]# pcs resource enable nfs_hana_log2_dc2
[root@dc1hana01]# pcs resource update nfs_hana_shared_dc1-clone meta clone-max=2 interleave=true
[root@dc1hana01]# pcs resource update nfs_hana_shared_dc2-clone meta clone-max=2 interleave=true
[root@dc1hana01]# pcs resource update nfs_hana_log_dc1-clone meta clone-max=1 interleave=true
[root@dc1hana01]# pcs resource update nfs_hana_log_dc2-clone meta clone-max=1 interleave=true
[root@dc1hana01]# pcs resource update nfs_hana_log2_dc1-clone meta clone-max=1 interleave=true
[root@dc1hana01]# pcs resource update nfs_hana_log2_dc2-clone meta clone-max=1 interleave=true
4.3. systemd 管理的 SAP 服务 复制链接链接已复制到粘贴板!
如果使用 启用了 systemd 的 SAP HANA 版本(SAP HANA 2.0 SPS07 及更高版本),则关闭可以安全地停止这些服务。在某些环境中,隔离会导致关闭,这可以安全地停止该服务。在某些情况下,pacemaker 可能无法正常工作。
如果您添加置入文件,则会防止服务停止,例如 - /etc/systemd/system/resource-agents-deps.target.d/sap_systemd_hdb_00.conf。您还可以使用其他文件名。
root@saphdb1:/etc/systemd/system/resource-agents-deps.target.d# more sap_systemd_hdb_00.conf
[Unit]
Description=Pacemaker SAP resource HDB_00 needs the SAP Host Agent service
Wants=saphostagent.service
After=saphostagent.service
Wants=SAPHDB_00.service
After=SAPHDB_00.service
需要激活这些文件。使用以下命令:
[root]# systemctl daemon-reload
如需更多信息,请参阅启用 基于 systemd 的 SAP 启动框架时,为什么 SAPHana 资源代理的 停止 操作会失败?
4.4. 其他 hook 复制链接链接已复制到粘贴板!
以上,您已经配置了 srConnectionChanged () hook。您还可以对 srServiceStateChanged () 使用额外的 hook 来管理 SAP HANA 实例的 hdbindexserver 进程的更改。
执行以下步骤,在所有 HA 集群节点上激活每个 SAP HANA 实例的 srServiceStateChanged () hook。
此解决方案 是技术预览。红帽全球支持服务可代表正在创建支持问题单的订阅客户创建错误报告。
流程
更新每个节点上的 SAP HANA
global.ini文件,以便同时由 SAP HANA 实例使用 hook 脚本(例如,在文件/hana/shared/RH1/global/hdb/custom/config/global.ini中):[ha_dr_provider_chksrv] path = /usr/share/SAPHanaSR-ScaleOut execution_order = 2 action_on_lost = stop [trace] ha_dr_saphanasr = info ha_dr_chksrv = info设置可选参数,如下所示:
-
action_on_lost(default: ignore) -
stop_timeout(默认值:20) kill_signal(默认值:9)以下是
action_on_lost的可用选项的说明:-
忽略:这将启用该功能,但仅记录事件。这可用于监控配置环境中 hook 活动。 -
stop:这会执行安全sapcontrol -nr <nr> -function StopSystem。 kill:这会对最快停止执行 HDB kill-<signal>。注意stop_timeout添加到命令执行 stop 和 kill 操作中,在 kill 操作中使用kill_signal作为HDB kill-<signal> 命令的一部分。
-
重新载入
HA/DR供应商,以在 HANA 运行时激活新的 hook:[rh1adm]$ hdbnsutil -reloadHADRProviders检查新的 trace 文件以验证 hook 初始化:
[rh1adm]$ cdtrace [rh1adm]$ cat nameserver_chksrv.trc如需更多信息,请参阅 实施 HA/DR 提供程序。
第 5 章 示例和最佳实践 复制链接链接已复制到粘贴板!
5.1. 测试环境 复制链接链接已复制到粘贴板!
执行以下步骤检查所有内容是否按预期工作。
流程
执行接管
将 master 节点分数更改为执行故障转移。在本例中,
SAPHana克隆资源是rsc_SAPHana_HDB_HDB00-clone,而saphdb3是第二个可用区中的一个节点:pcs constraint location rsc_SAPHana_HDB_HDB00-clone rule role=master score=100 \#uname eq saphdb3应该使用以下命令再次删除这个约束:
pcs constraint remove rsc_SAPHana_HDB_HDB00否则,pacemaker 会尝试在
SAPHDB1上启动 HANA。隔离节点
您可以使用以下命令隔离节点:
pcs stonith fence <nodename>根据其他的隔离选项和使用的基础架构,此节点将保持关闭或返回。
killHANA您还可以
终止数据库,以检查 SAP 资源代理是否正常工作。 作为sidadm,您可以调用:sidadm% HDB killPacemaker 检测到此问题,并使用解决方案解决它。
5.2. 有用的别名 复制链接链接已复制到粘贴板!
5.2.1. 用户 root 的别名 复制链接链接已复制到粘贴板!
这些别名被添加到 HEKETI /.bashrc 中:
export ListInstances=$(/usr/sap/hostctrl/exe/saphostctrl -function ListInstances| head -1 )
export sid=$(echo "$ListInstances" |cut -d " " -f 5| tr [A-Z] [a-z])
export SID=$(echo $sid | tr [a-z] [A-Z])
export Instance=$(echo "$ListInstances" |cut -d " " -f 7 )
alias crmm='watch -n 1 crm_mon -1Arf'
alias crmv='watch -n 1 /usr/local/bin/crmmv'
alias clean=/usr/local/bin/cleanup
alias cglo='su - ${sid}adm -c cglo'
alias cdh='cd /usr/lib/ocf/resource.d/heartbeat'
alias vhdbinfo="vim /usr/sap/${SID}/home/hdbinfo;dcp /usr/sap/${SID}/home/hdbinfo"
alias gtr='su - ${sid}adm -c gtr'
alias hdb='su - ${sid}adm -c hdb'
alias hdbi='su - ${sid}adm -c hdbi'
alias hgrep='history | grep $1'
alias hri='su - ${sid}adm -c hri'
alias hris='su - ${sid}adm -c hris'
alias killnode="echo 'b' > /proc/sysrq-trigger"
alias lhc='su - ${sid}adm -c lhc'
alias python='/usr/sap/${SID}/HDB${Instance}/exe/Python/bin/python'
alias pss="watch 'pcs status --full | egrep -e Node\|master\|clone_state\|roles'"
alias srstate='su - ${sid}adm -c srstate'
alias shr='watch -n 5 "SAPHanaSR-monitor --sid=${SID}"'
alias sgsi='su - ${sid}adm -c sgsi'
alias spl='su - ${sid}adm -c spl'
alias srs='su - ${sid}adm -c srs'
alias sapstart='su - ${sid}adm -c sapstart'
alias sapstop='su - ${sid}adm -c sapstop'
alias sapmode='df -h /;su - ${sid}adm -c sapmode'
alias smm='pcs property set maintenance-mode=true'
alias usmm='pcs property set maintenance-mode=false'
alias tma='tmux attach -t 0:'
alias tmkill='tmux killw -a'
alias tm='tail -100f /var/log/messages |grep -v systemd'
alias tms='tail -1000f /var/log/messages | egrep -s\
"Setting master-rsc_SAPHana_${SID}_HDB${Instance}|sr_register\ *|WAITING4LPA\|EXCLUDE as posible takeover node|SAPHanaSR|failed|${HOSTNAME}\
|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED"'
alias tmss='tail -1000f /var/log/messages | grep -v systemd\
| egrep -s "secondary with sync status|Settingmaster-rsc_SAPHana_${SID}_HDB${Instance}\
|sr_register|WAITING4LPA|EXCLUDE as posible takeover node|SAPHanaSR\
|failed|${HOSTNAME}|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED"'
alias tmm='tail -1000f /var/log/messages | egrep -s \
"Settingmaster-rsc_SAPHana_${SID}_HDB${Instance}|sr_register\
|WAITING4LPA|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|W aitforStopped\
|FAILED|LPT|SOK|SFAIL|SAPHanaSR-mon"| grep -v systemd'
alias tmsl='tail -1000f /var/log/messages | egrep -s\
"Settingmaster-rsc_SAPHana_${SID}_HDB${Instance}|sr_register|WAITING4LPA\
|PROMOTED|DEMOTED|UNDEFINED|ERROR|Warning|mast er_walk|SWAIT\
|WaitforStopped|FAILED|LPT|SOK|SFAIL|SAPHanaSR-mon"'
alias vih='vim /usr/lib/ocf/resource.d/heartbeat/SAPHanaStart'
alias switch1='pcs constraint location rsc_SAPHana_HDB_HDB00-clone \
rule role=master score=100 \#uname eq saphdb1'
alias switch3='pcs constraint location rsc_SAPHana_HDB_HDB00-clone \
rule role=master score=100 \#uname eq saphdb3'
alias switch0='pcs constraint remove location-rsc_SAPHana_HDB_HDB00-clone
alias switchl='pcs constraint location | grep pcs resource | grep promotable\
| awk "{ print $4 }"` | grep Constraint| awk "{ print $NF }"'
alias scl='pcs constraint location |grep " Constraint"'
5.2.2. SIDadm 用户的别名 复制链接链接已复制到粘贴板!
这些别名添加到 ~/.customer.sh :
alias tm='tail -100f /var/log/messages |grep -v systemd'
alias tms='tail -1000f /var/log/messages | egrep -s \
"Settingmaster-rsc_SAPHana_$SAPSYSTEMNAME_HDB${TINSTANCE}|sr_register\
|WAITING4LPA|EXCLUDE as posible takeover node|SAPHanaSR|failed\
|${HOSTNAME}|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED"'
alias tmsl='tail -1000f /var/log/messages | egrep -s \
"Settingmaster-rsc_SAPHana_$SAPSYSTEMNAME_HDB${TINSTANCE}|sr_register\
|WAITING4LPA|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED|LPT"'
alias sapstart='sapcontrol -nr ${TINSTANCE} -function StartSystem HDB;hdbi'
alias sapstop='sapcontrol -nr ${TINSTANCE} -function StopSystem HDB;hdbi'
alias sapmode='watch -n 5 "hdbnsutil -sr_state --sapcontrol=1 |grep site.\*Mode"'
alias sapprim='hdbnsutil -sr_stateConfiguration| grep -i primary'
alias sgsi='watch sapcontrol -nr ${TINSTANCE} -function GetSystemInstanceList'
alias spl='watch sapcontrol -nr ${TINSTANCE} -function GetProcessList'
alias splh='watch "sapcontrol -nr ${TINSTANCE} -function GetProcessList\
| grep hdbdaemon"'
alias srs="watch -n 5 'python \
/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py * *; echo Status \$?'"
alias cdb="cd /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/backup"
alias srstate='watch -n 10 hdbnsutil -sr_state'
alias hdb='watch -n 5 "sapcontrol -nr ${TINSTANCE} -function GetProcessList\
| egrep -s hdbdaemon\|hdbnameserver\|hdbindexserver "'
alias hdbi='watch -n 5 "sapcontrol -nr ${TINSTANCE} -function GetProcessList\
| egrep -s hdbdaemon\|hdbnameserver\|hdbindexserver\
;sapcontrol -nr ${TINSTANCE} -function GetSystemInstanceList "'
alias hgrep='history | grep $1'
alias vglo="vim /usr/sap/$SAPSYSTEMNAME/SYS/global/hdb/custom/config/global.ini"
alias vgloh="vim /hana/shared/${SAPSYSTEMNAME}/HDB${TINSTANCE}/${HOSTNAME}/global.ini"
alias hri='hdbcons -e hdbindexserver "replication info"'
alias hris='hdbcons -e hdbindexserver "replication info" \
| egrep -e "SiteID|ReplicationStatus_"'
alias gtr='watch -n 10 /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/Python/bin/python \
/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/getTakeoverRecommendation.py \
--sapcontrol=1'
alias lhc='/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/Python/bin/python \
/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/landscapeHostConfiguration.py\
;echo $?'
alias reg1='hdbnsutil -sr_register --remoteHost=hana07 -remoteInstance=${TINSTANCE} \
--replicationMode=syncmem --name=DC3 --remoteName=DC1 \
--operationMode=logreplay --online'
alias reg2='hdbnsutil -sr_register --remoteHost=hana08 -remoteInstance=${TINSTANCE} \
--replicationMode=syncmem --name=DC3 --remoteName=DC2 \
--operationMode=logreplay --online'
alias reg3='hdbnsutil -sr_register --remoteHost=hana09 -remoteInstance=${TINSTANCE} \
--replicationMode=syncmem --name=DC3 --remoteName=DC3 --operationMode=logreplay \
--online'
PS1="\[\033[m\][\[\e[1;33m\]\u\[\e[1;33m\]\[\033[m\]@\[\e[1;36m\]\h\[\033[m\]: \[\e[0m\]\[\e[1;32m\]\W\[\e[0m\]]# "
5.3. 监控故障转移示例 复制链接链接已复制到粘贴板!
有多种方法可以强制接管。本例强制在不关闭节点的情况下强制接管。SAP 资源代理与分数一起工作,以决定哪个节点将提升 SAPHana 克隆资源。使用这个命令查看当前状态:
[root@saphdb2:~]# alias pss='pcs status --full | egrep -e "Node|master|clone_state|roles"'
[root@saphdb2:~]# pss
Node List:
Node Attributes:
* Node: saphdb1 (1):
* hana_hdb_clone_state : PROMOTED
* hana_hdb_roles : master1:master:worker:master
* master-rsc_SAPHana_HDB_HDB00 : 150
* Node: saphdb2 (2):
* hana_hdb_clone_state : DEMOTED
* hana_hdb_roles : slave:slave:worker:slave
* master-rsc_SAPHana_HDB_HDB00 : -10000
* Node: saphdb3 (3):
* hana_hdb_clone_state : DEMOTED
* hana_hdb_roles : master1:master:worker:master
* master-rsc_SAPHana_HDB_HDB00 : 100
* Node: saphdb4 (4):
* hana_hdb_clone_state : DEMOTED
* hana_hdb_roles : slave:slave:worker:slave
* master-rsc_SAPHana_HDB_HDB00 : -12200
在本例中,SAPHana 克隆资源被提升在 saphdb1 上。因此,主数据库在 saphdb1 上运行。此节点的分数为 150,您可以调整二级 saphdb3 的分数,以强制 pacemaker 将数据库接管到次要。
第 6 章 维护过程 复制链接链接已复制到粘贴板!
以下小节描述了在用于管理 HANA Scale-Out System Replication 的 HA 集群设置上执行维护的建议流程。您必须相互独立使用这些流程。
在使用这些步骤时,不需要将集群设置为 maintenance-mode。如需更多信息,请参阅 基于 pacemaker 的集群的 RHEL 高可用性附加组件何时使用 "maintenance-mode"?。
6.1. 更新 OS 和 HA 集群组件 复制链接链接已复制到粘贴板!
6.2. 更新 SAP HANA 实例 复制链接链接已复制到粘贴板!
流程
如果本文档中描述的 HA 集群配置管理 SAP HANA System Replication 设置,那么您需要执行与更新之前和之后更新 SAP HANA 实例的实际流程之外的其他步骤。执行以下步骤:
将
SAPHana资源置于非受管模式:[root]# pcs resource unmanage SAPHana_RH1_HDB10-clone- 使用 SAP 提供的流程更新 SAP HANA 实例。
刷新
SAPHana资源的状态,确保在 SAP HANA 实例的更新完成后,集群了解 SAP HANA System Replication 设置的当前状态,并且验证了 SAP HANA System Replication 再次工作:[root]# pcs resource refresh SAPHana_RH1_HDB10-clone将
SAPHana资源重新置于受管模式,以便在 HA 集群正确获取 SAP HANA System Replication 设置的当前状态时,HA 集群将能够再次响应 SAP HANA System Replication 设置中的任何问题:[root]# pcs resource manage SAPHana_RH1_HDB10-clone
移动可升级的克隆资源,以触发手动接管 SAP HANA 系统复制:
[root]# pcs resource move SAPHana_RH1_HDB10-clone
需要 pcs-0.10.8-1.el8 或更高版本才能使此命令正常工作。如需更多信息,请参阅 可升级的克隆 pcs resource move 命令失败,除非指定了 "--master "。
对于每个 pcs resource move 命令调用,HA 集群会创建一个位置约束,从而导致资源移动。如需更多信息,请参阅 在运行 pcs resource move 时管理约束吗?
此约束必须在 SAP HANA System Replication 接管后删除,以便 HA 集群再次管理以前的主 SAP HANA 实例。
要删除 pcs resource move 创建的约束,请使用以下命令:
[root]# pcs resource clear SAPHana_RH1_HDB10-clone
完成接管后,以前的 SAP HANA 主实例会发生什么,并且约束取决于 SAPHana 资源的 AUTOMATED_REGISTER 参数的设置:
-
如果
Automated_REGISTER=true,则前一个 SAP HANA 主实例将注册为新次要实例,并且 SAP HANA System Replication 再次变为活动状态。 -
如果
AUTOMATED_REGISTER=false,则由操作器决定在接管后与之前的 SAP HANA 主实例发生的情况。
第 7 章 参考 复制链接链接已复制到粘贴板!
7.1. Red Hat 复制链接链接已复制到粘贴板!
7.2. SAP 复制链接链接已复制到粘贴板!
- SAP HANA 服务器安装和更新指南
- SAP HANA 系统复制
- 实施 HA/DR 提供程序
- SAP Note 2057595 - FAQ: SAP HANA High Availability
- SAP 备注 2063657 - SAP HANA System Replication Takeover Decision Guideline
- SAP Note 2235581 - SAP HANA: 支持的操作系统
- SAP 备注 2369981 - 使用 HANA System Replication 进行身份验证所需的配置步骤
- SAP Note 2972496 - SAP HANA 文件系统类型
- SAP Note 3007062 - FAQ: SAP HANA & Third Party Cluster Solutions
- SAP Note 3115048 - sapstartsrv 带有原生 Linux systemd 支持
- SAP Note 3139184 - Linux: 用于 sapstartsrv 和 SAP Host Agent 的 systemd 集成
- SAP Note 3189534 - Linux: 用于 sapstartsrv 和 SAP HANA 的 systemd 集成
