SIOS Protection Suite Linux v9 EEによるSAP HANAのHA化

サイオステクノロジーは、2017年3月7日にSAP ERP、 S/4HANA向けのHAクラスターソフトウエアパッケージ”SIOS Protection Suite Linux v9 EE(SPS-EE)”を発表しました。このパッケージを使用すれば、
・SAPの”NetWeaver”環境のHA化や、
・従来のERPで使用しているOracleやDB2等のデータベースのHA化の為の各Application Recovery Kit(ARK)が使用できることに加え、
・SAP HANAの監視と障害時の自動復旧
を実現する”SAP HANA Recover Kit”も利用することができます。

サイオステクノロジーが提供するSAP向けの高可用性ソリューションの全体像はこちらをご参照ください。

SAP HANAの高可用性と災害復旧対応の仕組みとしては、
・自動フェールオーバー
・システムレプリケーション
・ストレージレプリケーション

というオプションがありますが、SPS-EEとSAP HANA Recover Kitが提供する機能とは、
・システムレプリケーション環境を構成したHANAのコンポーネントの状態監視と
・障害発生時の自動復旧
となります。

(システムレプリケーション構成のSAP HANAには、文字通りレプリケーションの機能はありますが、障害発生時の自動復旧や切り替え機能はありません。)

今回は、SAP HANA Recovery Kitが提供する監視機能と起動処理、停止処理について解説します。

では、Recovery Kitで実施するSAP HANAの制御処理について、ひとつずつ見ていきましょう。

1. 監視処理 

まず、監視処理です。SAP HANA Recovery Kitの監視機能は、LKCHECKINTERVALで設定した間隔(デフォルトは120秒)で、プライマリーサーバー、セカンダリーサーバー両方に対して、以下のサービスを監視します。
必要なプロセスおよびデータベースがアクティブでないことを検出した場合は、対象のプロセスおよびデータベースを再起動するために、回復処理を実行します。この処理は、HANA_TIMEOUTで指定した時間でタイムアウトします。

1)ホストエージェントの監視(プライマリー)
 SAPホストエージェントが動作しているかどうかを確認します。動作していなければその旨をログに記録します。

2)sapstartsrvサービスの監視(プライマリー)
 sapstartsrvサービスが動作しているかどうかを確認します。動作していなければその旨をログに記録します。

3)レプリケーションモードの監視(プライマリー)
 プライマリーとして動作しているかどうかを確認します。

4)レプリケーションモードの監視(セカンダリー)
 接続できることを確認し、レプリケーションモードが定義されていなければその旨をログに記録します。また、プライマリーではないことを確認します。

5)DBインスタンスの監視(プライマリー)
 HANA DBのインスタンスが動作していない場合は、その旨をログに記録します。

6)ホストエージェントの監視(セカンダリー)
 SAPホストエージェントが動作しているかどうかを確認します。動作していなければその旨をログに記録します。

7)sapstartsrvサービスの監視(セカンダリー)
 sapstartsrvサービスが動作しているかどうかを確認します。動作していなければその旨をログに記録します。

8)DBインスタンスの監視(セカンダリー)
 HANA DBのインスタンスが動作していなければその旨をログに記録します。

2. 起動処理

次に、起動処理です。Recovery KitはHANAリソース起動時に、以下のプロセスおよびデータベースを起動します。処理は、HANA_TIMEOUTで設定された時間でタイムアウトします。

1) ホストエージェントの開始(プライマリー)
 SAPホストエージェントを起動します。起動に失敗した場合は一度だけリトライします。起動結果をログに記録します。

2) sapstartsrvサービスの開始(プライマリー)
 sapstartsrvサービスを起動します。起動に失敗した場合は一度だけリトライします。起動結果をログに記録します。

3) レプリケーションモードの変更を開始(プライマリー)
 プライマリーノードでレプリケーションモードの変更を開始します。レプリケーションモードの現在の起動状態を確認し、起動していなければ起動させます。

4) レプリケーションモードの変更を開始(セカンダリー)
 セカンダリーノードでレプリケーションモードの変更を開始します。レプリケーションモードの現在の起動状態を確認し、起動していなければ起動します。

5) プライマリノード(プライマリー)でレプリケーションモードを開始します。はじめに以前のプライマリーノードのHDBを停止し、次に新しいプライマリーノードでsr_takeoverを実行します。

6) DBインスタンスの開始(プライマリー)
 HANA DBを起動します。

7) セカンダリーノードでレプリケーションモードの変更を開始します。その後、以前のプライマリーノードでsr_registerを実行します。レプリケーションモードの現在の起動状態を確認し、起動していなければ起動します。

8) ホストエージェントの起動(セカンダリー)
 SAPホストエージェントを起動します。

9) sapstartsrv サービスの起動(セカンダリー)
 sapstartsrvサービスを起動します。

10)  DBインスタンスの起動(セカンダリー)
 HANA DBのインスタンスを起動します。

3. 停止処理 

SAP HANAリソースの停止では、プライマリーノードのデータベースのみを停止します。
システムレプリケーションモードと同様、セカンダリーノードのデータベースはアクティブのままとなります。処理はHANA_STOP_WAITで指定されている時間でタイムアウトします。

SAP HANAシステム全体をシャットダウンする場合は、まずコマンド
# /opt/LifeKeeper/bin/flg_remove -f “!volatile!noHANAremove”
を使用して制御フラグ “!volatile!noHANAremove” を削除してから、「Out of Service」状態にします。

通常は、プライマリーデータベースインスタンスのスイッチオーバーが開始されると、Recovery Kitは以下の処理を実行します。
 1)プライマリーサーバーでDBを停止する。
 2)セカンダリーサーバーにテイクオーバーを実行する。
 3)セカンダリーサーバーでDBを起動する。

4. 回復処理

Recovery Kitはリソースの異常を検知した場合、「2. 起動処理」で説明した各起動処理を行い、回復を試みます。

処理はHANA_TIMEOUTで指定されている時間でタイムアウトします。

 - SAP host agent
 - sapstartsrvサービス
 - プライマリーノードのレプリケーションモード
 - セカンダリーノードのレプリケーションモード
 - DBインスタンス

上記、回復処理が失敗した場合、Recovery Kitは以下の処理を自動で実行します。
 1)プライマリーサーバーでDBを停止します。
 2)セカンダリーサーバーにテイクオーバーを実行します。
 3)セカンダリーサーバーでDBを起動します。

5. パラメーター

以下の各パラメーターは、/etc/default/LifeKeeperの任意の場所に記載してください。
記載のない場合はデフォルト値で動作します。

HANA_START_WAIT
デフォルト:2700(秒)
※sapcontrolに対応するリソースの起動時に有効となるタイムアウト値です。

HANA_STOP_WAIT
デフォルト:600(秒)
※sapcontrolに対応するリソースの停止時に有効となるタイムアウト値です。

HANA_TIMEOUT
デフォルト:LKCHKINTERVALの値 – 10(固定)
※監視処理時に有効となるタイムアウト値です。

HANA_DEBUG
デフォルト:0 [0:無効、1:有効]