3.9. 为 hdbindexserver 进程失败操作启用 SAP HANA srServiceStateChanged () hook (可选)
当 HANA 检测到 indexserver 进程时,它将通过停止并通过内置在 SAP HANA 中的内置功能来自动重新启动它。
然而,在某些情况下,服务可能需要很长时间才能"停止"阶段。在此期间,System Replication 可能会不同步,而 HANA 仍继续工作并接受新的连接。最后,该服务完成 stop-and-restart 进程并恢复。
ChkSrv.py hook 脚本无法等待这个长时间运行的重启(这可能会造成数据一致性的风险),否则 ChkSrv.py
hook 脚本可以响应该情况并停止 HANA 实例,以便更快地恢复。在启用了自动故障切换的设置中,如果辅助节点处于健康状态,实例会停止会导致启动。否则,恢复将在本地继续,但强制的实例重启会加快它的速度。
在 global.ini
配置文件中配置时,SAP HANA 会为实例中的任何事件调用 ChkSrv.py
hook 脚本。该脚本根据它应用到事件详情的过滤器的结果处理事件并执行操作。这样,它可以区分 在从与实例关闭过程中停止相同的进程后被 HANA 停止并重新启动的 HANA 索引
进程。
以下是可以采取的不同可能的操作:
- ignore:此操作只是将解析的事件和决策信息写入专用日志文件,这可用于验证 hook 脚本的作用。
-
stop :此操作通过
sapcontrol
命令为实例执行安全StopSystem
。 -
kill:此操作使用默认的
信号 9 执行 HDB kill-&
lt;signal> 命令,可以配置它。
请注意,stop 和 kill 操作都会导致已停止的 HANA 实例,但最后的终止速度会更快。
此时,集群会注意到 HANA 资源失败,并以其配置方式对其做出反应;通常是重新启动实例,如果启用,它也负责接管。
3.9.1. 验证 resource-agents-sap-hana
软件包的版本
请验证是否安装了 RHEL 9 版本启用 srServiceStateChanged ()
hook 的 resource-agents-sap-hana
软件包的正确版本,因为 Pacemaker 集群在主 HANA实例的 hdbindexserver
进程挂起/crashes 时不会触发 HANA 系统复制。
3.9.2. 在所有 SAP HANA 实例上激活 srServiceStateChanged ()
hook
需要为所有 HA 集群节点上的每个 SAP HANA 实例执行激活 srServiceStateChanged ()
hook 的步骤。
更新每个节点上的 SAP HANA
global.ini
文件,以启用 SAP HANA 实例(例如,在/hana/shared/RH1/global/hdb/custom/config/global.ini
文件中)使用 hook 脚本:[ha_dr_provider_chksrv] provider = ChkSrv path = /usr/share/SAPHanaSR/srHook execution_order = 2 action_on_lost = stop [trace] ha_dr_saphanasr = info ha_dr_chksrv = info
设置可选参数,如下所示:
-
action_on_lost
(默认为 ignore) -
stop_timeout
(默认为 20) -
kill_signal
(默认为 9)
以下是
action_on_lost
可用选项的说明:-
忽略
:这启用了该功能,但只启用日志事件。这可用于监控配置环境中的 hook 活动。 -
stop
: 这会执行安全sapcontrol -nr <nr> -function StopSystem
。 -
kill
:这会对最快的停止执行 HDBkill-<signal
>。 -
请注意,
stop_timeout
被添加到 stop 和 kill 操作的命令执行中,而kill_signal
作为HDB kill-<signal>
命令的一部分被使用。
-
通过重新载入
HA/DR
提供程序,在 HANA 运行时激活新的 hook:[rh1adm]$ hdbnsutil -reloadHADRProviders
通过检查新的 trace 文件来验证 hook 初始化:
[rh1adm]$ cdtrace [rh1adm]$ cat nameserver_chksrv.trc