5.5. 为 srConnectionChanged ()hook 方法配置 HanaSR HA/DR 供应商
当使用 SAP HANA 2.0 SPS0 或更高版本在 HA 集群中配置 HANA 实例时,您必须启用并测试 SAP HANA srConnectionChanged ()
hook 方法,然后才能继续集群设置。
先决条件
-
已安装
sap-hana-ha
软件包。 - 您的 HANA 实例尚未由集群管理。否则,使用 更新 SAP HANA 实例的 维护流程来确保集群在配置 hook 脚本过程中不会干扰。
流程
以 <
sid>adm
用户身份停止所有节点上的 HANA 实例:rh1adm $ HDB stop
rh1adm $ HDB stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 HANA 实例完全停止
的所有节点上验证为 <sid>adm
:rh1adm $ sapcontrol -nr ${TINSTANCE} -function GetProcessList | column -s ',' -t ... name description dispstatus textstatus starttime elapsedtime pid hdbdaemon HDB Daemon GRAY Stopped 5381
rh1adm $ sapcontrol -nr ${TINSTANCE} -function GetProcessList | column -s ',' -t ... name description dispstatus textstatus starttime elapsedtime pid hdbdaemon HDB Daemon GRAY Stopped 5381
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<instance
> 替换为您的 HANA 实例号。
-
将
使用别名
cdcoc
(内置在 <sid>adm
用户 shell 中),以 <sid>adm 用户身份更改到
HANA 配置目录。这会自动更改/hana/shared/<SID>/global/hdb/custom/config/
路径:rh1adm $ cdcoc
rh1adm $ cdcoc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 SAP HANA 实例的
global.ini
文件,以配置HanaSR
hook。编辑所有 HANA 实例节点上的配置文件并添加以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
execution_order
设置为1
,以确保始终以最高优先级执行HanaSR
hook。可选:当您还想为对
hdbindexserver
失败时采取行动配置可选的ChkSrv
hook 时,您可以同时添加对global.ini
的更改,请参阅 为 srServiceStateChanged ()hook 方法配置 ChkSrv HA/DR 供应商中的 第 1 步:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
root
用户身份在每个集群节点上创建文件/etc/sudoers.d/20-saphana
,其内容如下:这些命令特权允许 <sid>adm
用户更新某些集群节点属性,作为 HanaSR hook 执行的一部分:visudo -f /etc/sudoers.d/20-saphana
[root]# visudo -f /etc/sudoers.d/20-saphana <sid>adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_* Defaults:<sid>adm !requiretty
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
有关为什么需要
Defaults
设置的更多信息,请参阅在 管理 SAP HANA 系统复制的 Pacemaker 集群中将 The srHook 属性设置为 SFAIL,即使复制处于健康状态。
-
有关为什么需要
在两个集群节点上手动启动 HANA 实例,而不启动 HA 集群。以 <
;sid>adm 身份运行
:rh1adm $ HDB start
rh1adm $ HDB start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以 <
sid>adm 用户身份更改到
SAP HANA 目录,其中存储了 trace 日志文件。使用命令别名cdtrace
,它内置在 <sid>adm
用户 shell 中:rh1adm $ cdtrace
rh1adm $ cdtrace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 HANA nameserver 服务日志中是否有 HA/DR 供应商加载消息:
如果只配置
HanaSR
供应商:rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_* loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_* loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果也实施了可选的
ChkSrv
供应商:rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_* loading HA/DR Provider 'ChkSrv' from /usr/share/sap-hana-ha/ loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_* loading HA/DR Provider 'ChkSrv' from /usr/share/sap-hana-ha/ loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在系统中以
root
用户身份验证sudo
命令是否成功执行的安全日志。如果 sudoers 文件不正确,则执行sudo
命令时会记录一个错误:grep -e 'sudo.*crm_attribute.*' /var/log/secure
[root]# grep -e 'sudo.*crm_attribute.*' /var/log/secure sudo[4267]: rh1adm : PWD=/hana/shared/RH1/HDB02/node1 ; USER=root ; COMMAND=/usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC2 -v SFAIL -t crm_config -s SAPHanaSR sudo[4319]: rh1adm : PWD=/hana/shared/RH1/HDB02/node1 ; USER=root ; COMMAND=/usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC2 -v SOK -t crm_config -s SAPHanaSR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 HANA 实例在两个节点上启动后,您通常会看到几个
srHook
属性更新。首先是设置SFAIL
,因为主启动后会立即设置 SFAIL,因为它尚未与次要同步,目前仍在同步。在系统复制状态最终更改为完全同步后,HANA 事件会触发对
SOK
的最后一个更新。-
如果还没有同时完成,在第二个实例上重复验证步骤 1-2。步骤 3 的
sudo
日志消息仅在发送系统复制事件的主实例节点上可见。 检查任何节点上的集群属性,并验证
hana_<sid>_site_srHook_<DC2>
; 属性的值是否已如预期更新:cibadmin --query | grep -e 'SAPHanaSR.*srHook'
[root]# cibadmin --query | grep -e 'SAPHanaSR.*srHook' <nvpair id="SAPHanaSR-hana_rh1_site_srHook_DC2" name="hana_rh1_site_srHook_DC2" value="SOK"/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
当 HANA 系统复制处于
ACTIVE
状态时,会设置SOK
,这意味着已建立并完全同步。 -
当系统复制处于任何其他状态时,会设置
SFAIL
。
-
当 HANA 系统复制处于
故障排除
- 请参阅 hook 更改后,不启动 HANA 实例。