SAP HANA 服务控制
修改管理 SAP HANA 服务的方式以启用集群接管和操作。
将 sidadm 添加到 haclient 组
Pacemaker 软件会创建一个 haclient 操作系统组。为确保集群访问权限正确,请在所有集群节点上将 sidadm 用户添加到此组中。以根用户身份运行以下命令:
# 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> 并修改或添加 Autostart 参数,确保将其设置为 0:
Autostart = 0
配置 SAPHanaSR 集群钩子用于优化集群响应
如果系统复制失败,SAPHanaSR 钩子会立即通知集群,这是对标准集群轮询机制的补充。这种优化可以显著缩短失效转移响应时间。
按照以下步骤配置 SAPHanaSR 钩子:
-
验证集群软件包
钩子配置因正在使用的资源代理而异(有关详细信息,请参阅部署指南)。
-
确认钩子位置
默认情况下软件包安装在
/usr/share/sap-hana-ha/或/usr/share/SAPHanaSR/srHook中。我们建议使用默认位置,但您可以选择将其复制到自定义目录,例如/hana/share/myHooks。该钩子必须在所有 SAP HANA 集群节点上可用。 -
配置 global.ini
更新位于每个 SAP HANA 集群节点上
/hana/shared/<SID>/global/hdb/custom/config/的global.ini文件。继续操作之前,请先制作一份备份副本。 -
配置 Sudo 权限
SAPHanaSR Python 钩子需要 sudo 权限才能让 <sid>adm 用户访问集群属性:
-
在
/etc/sudoers.d/中以根用户身份创建新的 sudoers 文件,例如60-SAPHanaSR-hook -
使用 visudo 安全地编辑新文件
visudo /etc/sudoers.d/60-SAPHanaSR-hook -
添加以下配置,将 <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。
-
-
重新加载配置
<sid>adm 将更改重新加载到
global.ini时,使用 HANA 重新启动或以下命令:hdbadm> hdbnsutil -reconfig -
验证钩子配置
以 <sid>adm 的身份验证钩子是否已加载:
hdbadm> cdtrace hdbadm> grep "loading HA/DR Provider" nameserver* -
将配置复制到辅助系统
-
确认 global.ini 更改已复制到辅助系统
-
在辅助系统上创建对应的 sudoers.d 文件
-
(可选)配置快速启动选项
SAP HANA 快速重启选项不在本文档的讨论范围内,该选项使用 tmpfs 文件系统来保留和重复使用 MAIN 数据片段,从而加快 SAP HANA 的重启速度。这在操作系统未重新启动(包括索引服务器的本地重启)的情况下很有用。
快速启动选项可以作为 susChkSrv 钩子的替代方案。
有关更多信息,请参阅 SAP 文档:SAP HANA Fast Restart Option
查看 systemd 集成
查看 HANA 版本和 systemd 版本以确定是否满足了 systemd 的先决条件:
sidadm> systemctl --version
操作系统版本
-
Red Hat Enterprise Linux 8(systemd 版本 239)
SAP HANA 修订版
-
SAP HANA SPS07 修订版 70
使用带有 systemd 集成的 SAP HANA 版本(SPS07 及更高版本)时,您必须运行以下步骤,以防止在特意停止 Amazon EC2 实例时节点被隔离。请参阅 Note 3189534 - Linux: systemd integration for sapstartsrv and SAP HANA
-
验证 SAP HANA 是否已与 systemd 集成。如果已集成,则会显示 systemd 服务名称,例如 SAP<SID>_<hana_sys_nr>.service。例如,对于 SID HDB 和实例编号 00,服务名称是 SAPHDB_00.service。
以根用户身份使用以下命令查找 SAP systemd 服务:
# systemctl list-unit-files | grep -i sap -
创建 Pacemaker 服务即时接入文件:
# mkdir -p /etc/systemd/system/pacemaker.service.d/ -
创建包含以下内容的文件
/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 -
通过重新加载 systemd 来启用即时接入文件:
# systemctl daemon-reload -
验证更改是否生效:
# 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