SAP HANA 服务控制 - SAP HANA 开启 Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

SAP HANA 服务控制

修改 SAP HANA 服务的管理方式以启用集群接管和操作。

将 sidadm 添加到客户群组

pacemaker 软件会创建一个 haclient 操作系统组。为确保正确的群集访问权限,请在所有群集节点上将 sidadm 用户添加到该组中。以 root 用户身份运行以下命令:

# usermod -a -G haclient hdbadm

修改 HANA 的 SAP 配置文件

要防止 SAP 启动框架在实例重启时自动启动 SAP HANA,请修改所有节点上的 SAP HANA 实例配置文件。这些配置文件位于/usr/sap/<SID>/SYS/profile/

作为 <sid>adm,编辑 SAP HANA 配置文件<SID>_HDB<hana_sys_nr>_<hostname>并修改或添加自动启动参数,确保将其设置为 0:

Autostart = 0

配置 SAPHana SR 集群挂钩以优化集群响应

如果系统复制失败, SAPHanaSR 挂钩会立即通知群集,从而补充了标准的群集轮询机制。这种优化可以显著缩短故障转移响应时间。

按照以下步骤配置 SAPHana SR 挂钩:

  1. 验证集群 Package

    挂钩配置因使用的资源代理而异(有关详细信息,请参阅部署指南)。

    SAPHanaSR

    检查是否安装了预期的软件包

    # rpm -qa resource-agents-sap-hana
    SAPHanaSR-angi

    检查是否安装了预期的软件包

    # rpm -qa sap-hana-ha
  2. 确认挂钩位置

    默认情况下,软件包安装在/usr/share/sap-hana-ha/或中/usr/share/SAPHanaSR/srHook。我们建议使用默认位置,但您可以选择将其复制到自定义目录;例如,/hana/share/myHooks。该挂钩必须在所有 SAP HANA 集群节点上可用。

  3. 配置 global.ini

    更新位于每个 SAP HANA 群集节点/hana/shared/<SID>/global/hdb/custom/config/上的global.ini文件。在继续操作之前,请先制作一份备份副本。

    SAPHanaSR
    [ha_dr_provider_SAPHanaSR] provider = SAPHanaSR path = /usr/share/SAPHanaSR/srHook execution_order = 1 [trace] ha_dr_saphanasr = info
    注意

    如果您修改了包的位置,请更新路径。

    sap-hana-ha (newer agent)
    [ha_dr_provider_sushanasr] provider = HanaSR path = /usr/share/sap-hana-ha/ execution_order = 1 [trace] ha_dr_sushanasr = info
    注意

    如果您修改了包的位置,请更新路径。

  4. 配置 Sudo 权限

    SAPHanaSR Python 挂钩需要 su <sid>do 权限才能让管理员用户访问集群属性:

    1. 例如,在中以 root 用户身份创建新的 sudoers 文件 /etc/sudoers.d/ 60-SAPHanaSR-hook

    2. 使用 visudo 安全地编辑新文件 visudo /etc/sudoers.d/60-SAPHanaSR-hook

    3. 添加以下配置,<sid>替换为小写系统 ID 和<SID>大写系统 ID:

      Cmnd_Alias SITE_SOK = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_[a-zA-Z0-9_]* -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SITE_SFAIL = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_[a-zA-Z0-9_]* -v SFAIL -t crm_config -s SAPHanaSR Cmnd_Alias HOOK_HELPER = /usr/sbin/SAPHanaSR-hookHelper --sid=<SID> --case=checkTakeover hdbadm ALL=(ALL) NOPASSWD: SITE_SOK, SITE_SFAIL, HOOK_HELPER

      例如:

      Cmnd_Alias SITE_SOK = /usr/sbin/crm_attribute -n hana_hdb_site_srHook_[a-zA-Z0-9_]* -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SITE_SFAIL = /usr/sbin/crm_attribute -n hana_hdb_site_srHook_[a-zA-Z0-9_]* -v SFAIL -t crm_config -s SAPHanaSR Cmnd_Alias HOOK_HELPER = /usr/sbin/SAPHanaSR-hookHelper --sid=HDB --case=checkTakeover hdbadm ALL=(ALL) NOPASSWD: SITE_SOK, SITE_SFAIL, HOOK_HELPER
      注意

      该语法使用 glob 表达式,允许它适应不同的 HSR 站点名称,同时避免使用通配符。这确保了灵活性和安全性。如果 SID 发生变化,仍需要进行修改。将替换为<sid>与您的安装相匹配的小写字母sid<SID>大写字母SID

  5. 重新加载配置

    在 <sid>adm 重新加载时,global.ini使用 HANA 重启或命令重新加载更改:

    hdbadm> hdbnsutil -reconfig
  6. 验证挂钩配置

    以 <sid>adm 的身份验证挂钩是否已加载:

    hdbadm> cdtrace hdbadm> grep "loading HA/DR Provider" nameserver*
  7. 将配置复制到辅助设备

    1. 确认 global.ini 更改已复制到辅助系统

    2. 在辅助系统上创建相应的 sudoers.d 文件

(可选)配置快速启动选项

尽管超出了本文档的范围,但 SAP HANA 快速重启选项使用 tmpfs 文件系统来保留和重复使用主数据片段,以加快 SAP HANA 的重启速度。这在操作系统未重新启动(包括索引服务器的本地重启)的情况下有效。

Fast Start Option 可能是 susChkSrv 挂钩的替代方案。

有关更多信息,请参阅 SAP 文档:SAP HANA 快速重启选项

查看系统集成

查看 HANA 版本和 systemd 版本以确定 systemd 的先决条件是否可用:

sidadm> systemctl --version
操作系统版本
  • 红帽企业 Linux 8(系统版本 239)

SAP HANA 修订版
  • SAP HANA SPS07 修订版 70

在使用具有 systemd 集成的 SAP HANA 版本(SPS07 及更高版本)时,您必须运行以下步骤,以防止在故意停止亚马逊 EC2 实例时节点被屏蔽。参见 Note 3189534-Linux:sapstartsrv 和 SAP HANA 的系统集成

  1. 验证 SAP HANA 是否已与 systemd 集成。如果已集成,则会出现一个 systemd 服务名称,例如 SAP <SID>_ <hana_sys_nr>.service。例如,对于 SID HDB 和实例编号 00,saphdb_00.service 是服务名称。

    以 root 用户身份使用以下命令查找 SAP systemd 服务:

    # systemctl list-unit-files | grep -i sap
  2. 创建起搏器服务插件文件:

    # mkdir -p /etc/systemd/system/pacemaker.service.d/
  3. 创建包含以下内容/etc/systemd/system/pacemaker.service.d/50-saphana.conf的文件:

    [Unit] Description=pacemaker needs SAP instance service Documentation=man:SAPHanaSR_basic_cluster(7) Wants=SAP<SID>_<hana_sys_nr>.service After=SAP<SID>_<hana_sys_nr>.service
  4. 通过重新加载 systemd 来启用插入式文件:

    # systemctl daemon-reload
  5. 验证更改是否处于活动状态:

    # systemctl show pacemaker.service | grep SAP<SID>_<hana_sys_nr>

    例如,对于 SID HDB 和实例编号 00,预计会有以下输出:

    # systemctl show pacemaker.service | grep SAPHDB_00
    Wants=SAPHDB_00.service resource-agents-deps.target dbus.service
    After=system.slice network.target corosync.service resource-agents-deps.target basic.target rsyslog.service SAPHDB_00.service systemd-journald.socket sysinit.target time-sync.target dbus.service sbd.service