サイオステクノロジーは、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:有効]