3.2. SAP HANA srConnectionChanged() フックの有効化
SAP の Implementing a HA/DR Provider に記載されているように、SAP HANA の最新バージョンでは、SAP HANA が特定のイベントの通知を送信できるようにするいわゆる "hooks" が提供されています。srConnectionChanged()
フックを使用すると、HA クラスターのアクションを必要とする SAP HANA システムレプリケーションのステータスの変更が発生したことを検出する HA クラスターの機能を向上させ、偶発的なテイクオーバーが回避すべき状況でトリガーされないようにすることで、データ損失/データ破損を避けることができます。
SAP HANA 2.0 SPS0 以降、および srConnectionChanged()
フックをサポートするコンポーネントを提供する resource-agents-sap-hana
パッケージのバージョンを使用する場合は、HA クラスターのセットアップを続行する前にフックを有効にすることが必須となります。
3.2.1. resource-agents-sap-hana
パッケージのバージョンの確認
RHEL 8 のバージョンで srConnectionChanged()
フックを有効にするために必要なコンポーネントを提供する resource-agents-sap-hana
パッケージの正しいバージョンがインストールされていることを確認してください。詳細は、ソリューション記事 How can the srConnectionChanged() hook be used to improve the detection of situations where a takeover is required, in a Red Hat Pacemaker cluster managing HANA Scale-up or Scale-out System Replication?
3.2.2. すべての SAP HANA インスタンスで srConnectionChanged()
フックのアクティブ化
srConnectionChanged()
フックをアクティブ化する手順は、すべての HA クラスターノード上の SAP HANA インスタンスごとに実行する必要があります。
両方のノードの HA クラスターを停止します (このコマンドは 1 つの HA クラスターノードでのみ実行する必要があります)。
[root]# pcs cluster stop --all
すべての SAP HANA インスタンスが完全に停止していることを確認します。
各 SAP HANA インスタンスの
/hana/shared/myHooks
ディレクトリーにフックスクリプトをインストールし、すべてのノードで正しい所有権があることを確認します (rh1adm
をSAP HANA インスタンスの管理ユーザーのユーザー名に置き換えます)。[root]# mkdir -p /hana/shared/myHooks [root]# cp /usr/share/SAPHanaSR/srHook/SAPHanaSR.py /hana/shared/myHooks [root]# chown -R rh1adm:sapsys /hana/shared/myHooks
各ノードの SAP HANA
global.ini
ファイルを更新して、(ファイル/hana/shared/RH1/global/hdb/custom/config/global.ini
などの) 両方の SAP HANA インスタンスでフックスクリプトを使用できるようにします。[ha_dr_provider_SAPHanaSR] provider = SAPHanaSR path = /hana/shared/myHooks execution_order = 1 [trace] ha_dr_saphanasr = info
各 HA クラスターノードで、次のコマンドを実行し、以下のコンテンツを追加することで、ファイル
/etc/sudoers.d/20-saphana
を作成し、srConnectionChanged()
フックが呼び出された際にフックスクリプトがノード属性を更新できるようにします。[root]# visudo -f /etc/sudoers.d/20-saphana Cmnd_Alias DC1_SOK = /usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC1 -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias DC1_SFAIL = /usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC1 -v SFAIL -t crm_config -s SAPHanaSR Cmnd_Alias DC2_SOK = /usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC2 -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias DC2_SFAIL = /usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC2 -v SFAIL -t crm_config -s SAPHanaSR rh1adm ALL=(ALL) NOPASSWD: DC1_SOK, DC1_SFAIL, DC2_SOK, DC2_SFAIL Defaults!DC1_SOK, DC1_SFAIL, DC2_SOK, DC2_SFAIL !requiretty
rh1
をSAP HANA インストールの小文字の SID に置き換え、DC1
とDC2
を SAP HANA サイト名に置き換えます。Defaults
設定が必要な理由の詳細は、The srHook attribute is set to SFAIL in a Pacemaker cluster managing SAP HANA system replication, even though replication is in a healthy state を参照してください。HA クラスターを起動せずに、両方の HA クラスターノードで SAP HANA インスタンスを手動で起動します。
[rh1adm]$ HDB start
フックスクリプトが期待どおりに動作していることを確認します。SAP HANA インスタンスを停止するなど、フックをトリガーするための何らかのアクションを実行します。次に、以下のような方法を使用して、フックが何かを記録したかどうかを確認します。
[rh1adm]$ cdtrace [rh1adm]$ 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 [rh1adm]# grep ha_dr_ *
注記SAP HANA フックが正しく動作していることを確認する方法の詳細は、SAP ドキュメント Install and Configure a HA/DR Provider Script 参照してください。
フックの機能が確認されたら、HA クラスターを再度起動できます。
[root]# pcs cluster start --all