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:有効]

    SNSでもご購読できます。