SAP HANA スケールアップシステムレプリケーションの高可用性のデプロイ


Red Hat Enterprise Linux for SAP Solutions 9

Advanced Next Generation Interface SAP HANA リソースエージェント(angi)を使用した HANA システムレプリケーションを自動化するための HA クラスターの作成

Red Hat Customer Content Services

概要

スケールアップ環境に合わせて SAP HANA システムレプリケーションを設定し、Pacemaker クラスターをインストールします。より高い可用性のために RHEL for SAP Solutions コンポーネントを使用して、HANA インスタンスをより効率的に管理します。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。

Jira からのフィードバック送信 (アカウントが必要)

  1. Jira の Web サイトにログインしていることを確認してください。
  2. このリンク をクリックしてフィードバックを提供します。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. ダイアログの下部にある Create をクリックします。

第1章 SAP HANA のスケールアップシステムレプリケーション HA の概要

2 つの同一 HANA インスタンス間で SAP HANA システムレプリケーションを設定すると、データベースの基本的な回復力が可能になります。プライマリーインスタンス側で障害が発生した場合にサービスの復旧を自動的に処理する高度な高可用性のために、Pacemaker クラスターにこれら 2 つのインスタンスを設定できます。

1.1. 用語

  • node

    クラスターメンバーとも呼ばれる、HA クラスターセットアップの 1 つ以上のホストまたはシステム。

  • cluster

    クラスターは、RHEL HA アドオンの Pacemaker クラスターマネージャーを使用した高可用性セットアップです。これは、2 つ以上のメンバーまたはノードで設定されます。

  • instance

    1 つの HANA サイトに属する SAP HANA システムの 1 セット。単一ホスト(スケールアップ)HANA 環境では、1 つの HANA サイトは単一の HANA インスタンスで設定されます。マルチホスト(スケールアウト)HANA 設定の場合、各 HANA サイトは 2 つ以上の HANA インスタンスで設定されます。

  • プライマリー

    プライマリー HANA インスタンスまたはプライマリーサイトは、アクティブな HANA インスタンスまたはサイトであるインスタンスを指します。単一ホストセットアップ(スケールアップ)では、これは 1 つのシステムです。マルチホスト(スケールアウト)設定では、プライマリーインスタンスは 1 つの HANA サイトの複数のシステムにまたがり、システムが HANA 環境内の異なるロールを持ち、負荷を分散します。

  • セカンダリー

    セカンダリー HANA インスタンスまたはセカンダリーサイトは、SAP HANA システムレプリケーションメカニズムを介してプライマリー HANA インスタンスと同期するように設定された SAP HANA インスタンスまたはサイトを指します。このインスタンスは、プライマリーインスタンスのインメモリーデータをプリロードし、プライマリーインスタンスに障害が発生した場合に引き継ぐことができます。

1.2. パフォーマンスが最適化された SAP HANA スケールアップ HA

パフォーマンスが最適化されたとは、各ノードで CPU や RAM などのほとんどのリソースを制御できる SAP HANA インスタンスが各ノード上で 1 つだけ実行されていることを意味します。つまり、SAP HANA インスタンスは可能な限りパフォーマンスで実行できます。

SAP HANA 2.0 SPS1 以降のパフォーマンス最適化 SAP HANA システムレプリケーションセットアップでは、セカンダリーシステムへの読み取りアクセスを設定して、プライマリーインスタンスの負荷を軽減することもできます。詳細は、SAP documentation for Active/Active (Read Enabled) configuration を参照してください。

1.3. SAP HANA HA のクラスターリソースエージェント

SAP HANA HA セットアップの高可用性(HA)クラスター設定は、予想される動作の機能を組み合わせる複数のリソースエージェントで機能します。Advanced Next Generation Interface リソースエージェントは、スケールアップおよびスケールアウト環境と同じです。アップストリームでは SAPHanaSR-angi とも呼ばれます。

この組み合わせたリソースエージェントの生成は、パッケージ sap-hana-ha で提供されています。

  • SAPHanaTopology

    SAPHanaTopology リソースエージェントは、SAP HANA 環境からステータス情報を取得し、それをクラスタープロパティーに保存します。エージェントは、ローカル SAP HostAgent も起動および監視します。これは、HANA インスタンスの起動、停止、監視に必要です。システムレプリケーションフックと呼ばれる SAP HANA の設定プロセスは、レプリケーションの正常性情報と保存されたプロパティーに追加します。収集された環境データに基づいて、リソースエージェントはクラスターノードの専用のヘルススコアを定義します。このスコアリングは、あるサイトから別のサイトへのシステムレプリケーションの切り替えを開始する必要があるかどうかを決定するために、クラスターによって使用されます。

  • SAPHANAController

    SAPHanaController リソースエージェントは、SAP HANA 環境を監視および管理します。HANA インスタンスに障害が発生した場合、リソースは、自動スイッチに対してコマンドを実行および実行するリカバリーアクションを決定するか、システムのレプリケーションのアクティブなサイトを変更します。

  • SAPHanaFilesystem

    SAPHanaFilesystem リソースエージェントは、SAP HANA ファイルシステム上のパスの読み取りおよび書き込みアクセスをチェックし、ファイルシステムアクセスの問題を見つけると、プライマリー HANA インスタンスでアクションを実行します。これにより、フェイルオーバーとサービスの復旧を大幅に加速できます。

    このリソースエージェントの使用はオプションですが、プライマリーノードをフェンシングして基盤となる SAP HANA ストレージに障害が発生した場合に、より高速なフェイルオーバーをトリガーすることが推奨されます。プライマリーノードでのみ動作し、HANA システムレプリケーションが同期している場合にのみ動作します。このリソースはファイルシステムのパスのみをモニターし、ファイルシステムをマウントまたはアンマウントしません。ファイルシステム自体を管理するには、他のメカニズムを使用する必要があります。詳細は、The /etc/fstab file を参照してください。

    注記

    お使いの RHEL バージョンでリソースエージェントの新しい生成が利用可能であることを確認します。SAP HANA Scale-Up および Scale-Out System Replication HA ソリューションの Minimum supported package version を確認してください。

1.4. SAP HANA HA/DR プロバイダーフック

現在のバージョンの SAP HANA では、フックの形式で API が提供され、HANA インスタンスが特定のイベントの通知(システムレプリケーションの損失や確立など)を送信できます。各イベントに対して、HANA インスタンスは HA/DR プロバイダーとも呼ばれる設定済みのフックを呼び出します。フックは、HANA が送信するイベントを処理するカスタム Python スクリプトで、スクリプトはイベント情報に基づいてさまざまなアクションをトリガーできます。

特定のイベントの追加アクションをトリガーする必要な機能を有効にするには、HA/DR プロバイダー定義を HANA グローバル設定に追加する必要があります。

srConnectionChanged () フックメソッドの HanaSR

srConnectionChanged () フックメソッドを処理するには、HanaSR フックが必要です。この方法は、HANA システムのレプリケーションステータスの変更を通知するために、プライマリー HANA インスタンスによって使用されます。HANA システムレプリケーション関連のイベントが発生すると、プライマリー HANA インスタンスは HanaSR HA/DR プロバイダーを呼び出します。フックスクリプトの HanaSR.py は、システムレプリケーションステータスの詳細の srConnectionChanged () イベントを解析します。その結果、srHook クラスター属性が更新されます。この属性は、リソースエージェントがランドスケープの状態を評価し、決定を行うために使用されます。システムのレプリケーションまたは同期状態の値は、クラスターが同じノードで障害が発生したプライマリーインスタンスを復元するか、セカンダリーへのテイクオーバーをトリガーするかを定義します。テイクオーバーは、システムのレプリケーションが完全に同期されている場合にのみトリガーされます。つまり、HANA サイト間で HANA データの一貫性が保たれます。

重要

HA クラスターセットアップの適切な機能とフルサポートのために、srConnectionChanged () フックメソッドを有効にするには、HanaSR フックを設定する必要があります。

srServiceStateChanged () フックメソッドの ChkSrv

HANA インスタンスが HANA インデックスサーバープロセスの問題を検出すると、内部メカニズムを介して hdbindexserver サービスを停止および再起動することで、問題を回復します。

ただし、特に非常に大規模な HANA インスタンスの場合、hdbindexserver サービスは、このリカバリープロセスの停止フェーズに非常に長い時間がかかる場合があります。HANA は、HANA ランドスケープでは、このサービスの低下をエラーと報告しますが、その間にインスタンスで何も失敗した場合、データの一貫性にリスクが生じます。予測できないサービスリカバリー時間を改善するには、ChkSrv フックを設定して、影響を受ける HANA インスタンス全体を停止または強制終了できます。

自動フェイルオーバーが有効になっているセットアップ(PREFER_SITE_TAKEOVER=true)では、セカンダリーノードが正常な状態にあると、インスタンスの停止がテイクオーバーします。それ以外の場合は、インスタンスのリカバリーはローカルで行われますが、強制されるローカルインスタンスの再起動によりプロセスが加速します。

HANA インスタンスは、イベント発生時に ChkSrv フックを呼び出します。フックスクリプトの ChkSrv.py は、srServiceStateChanged () フックメソッドを処理し、イベントの詳細に適用されるフィルターの結果に基づいてアクションを実行します。このようにして、ChkSrv.py フックスクリプトは、目的のインスタンスシャットダウンの一部として同じプロセスからの停止後、HANA によって停止および再起動する HANA hdbindexserver プロセスを区別できます。フックスクリプトが、障害によってイベントが発生したと判断すると、設定されたアクションがトリガーされます。

ChkSrv.py フックスクリプトには、indexserver の障害イベントが検出されると何が発生するかを定義する複数のオプションがあります。

  • ignore

    このアクションは、解析されたイベントと決定情報を専用のログファイルに書き込むだけです。これは、stop または kill アクションのアクティブ化時にフックスクリプトが行う内容をテストし、検証するのに役立ちます。

  • stop

    このアクションは、sapcontrol コマンドを使用してインスタンスに対して正常な StopSystem を実行します。

  • kill

    このアクションは、設定可能なデフォルトの シグナル 9 で HDB kill- <signal> コマンドを実行します。結果は、stop を使用する場合と同じですが、より高速になります。

注記

インデックスサーバーの障害は、HANA によって個別に処理されます。単一の indexserver の問題に対して、常に同じプロセスがトリガーされます。

srServiceStateChanged () フックの有効化はオプションです。

1.5. SAP HANA 高可用性のサポートポリシー

Red Hat では、以下のソリューションのコンポーネントをサポートしています。

  • SAP ガイドラインに基づいた、RHEL 上で SAP HANA を実行するための基本的な OS 設定
  • RHEL HA Add-On
  • SAP HANA システムレプリケーション用の Red Hat HA ソリューション

第2章 HA クラスターの設定の計画

HANA ランドスケープの HANA システムレプリケーションを自動化するための HA クラスター設定のすべての要件を満たすように、セットアップを慎重に計画してください。

2.1. SAP HANA HA のサブスクリプションとリポジトリー

高可用性(HA)の Pacemaker クラスター内の SAP HANA のソリューションは、専用のリポジトリーで提供されます。関連するすべてのコンテンツにアクセスするには、RHEL for SAP Solutions サブスクリプションが必要です。このサブスクリプションには、RHEL HighAvailability リポジトリーが含まれています。

  • High Availability

    RHEL HA Add-On のコンテンツは、High Availability という名前のリポジトリーに保存されます。リポジトリー ID は rhel-9-for-<arch>-highavailability-e4s-rpms として表されます。

  • SAP Solutions

    SAP HANA 固有のコンテンツを含むリポジトリーの名前。リポジトリー ID は rhel-9-for-<arch>-sap-solutions-e4s-rpms として表されます。

&lt ;arch> は、特定のハードウェアアーキテクチャーを示します。

  • x86_64
  • ppc64le

RHEL for SAP Solutions サブスクリプションの一部として有効になっているリポジトリーの一覧:

[root]# dnf repolist
Updating Subscription Management repositories.
repo id                                     repo name
rhel-9-for-x86_64-appstream-e4s-rpms        Red Hat Enterprise Linux 9 for x86_64 - AppStream - Update Services for SAP Solutions (RPMs)
rhel-9-for-x86_64-baseos-e4s-rpms           Red Hat Enterprise Linux 9 for x86_64 - BaseOS - Update Services for SAP Solutions (RPMs)
rhel-9-for-x86_64-highavailability-e4s-rpms Red Hat Enterprise Linux 9 for x86_64 - High Availability - Update Services for SAP Solutions (RPMs)
rhel-9-for-x86_64-sap-netweaver-e4s-rpms    Red Hat Enterprise Linux 9 for x86_64 - SAP NetWeaver - Update Services for SAP Solutions (RPMs)
rhel-9-for-x86_64-sap-solutions-e4s-rpms    Red Hat Enterprise Linux 9 for x86_64 - SAP Solutions - Update Services for SAP Solutions (RPMs)
Copy to Clipboard

2.2. OS 要件

OS レベルでの最小 Linux カーネルバージョンおよびその他の SAP HANA 要件については、SAP Note 3108302 - SAP HANA DB: Recommended OS Settings for RHEL 9 を確認してください。

RHEL 9 for SAP Solutions のインストール の説明に従って、ホスト OS をデプロイします。

ルート権限

HANA のインストールとクラスター HA の設定には、root ユーザーまたは sudo コマンドを実行できる特権ユーザーが必要です。

2.3. ストレージ要件

SAP HANA データベースのサイジングに関する情報は、SAP HANA Master Guide を参照してください。

2 つのノード間で HANA システムレプリケーションのあるスケールアップ SAP HANA 環境をセットアップするには、両方のシステムに、HANA データベース用のファイルシステム領域のサイズが同じであることを確認する必要があります。特定の HANA 設定に従って、ローカルデータベースのバックアップファイルおよびログセグメントに必要な領域を計画します。

2.4. ネットワーク要件

SAP HANA ネットワークアーキテクチャーに関する考慮事項は、SAP HANA Administration Guide を参照してください。

HA クラスターでの SAP HANA システムレプリケーションセットアップでは、HANA ネットワークトラフィックとは別の、クラスター通信トラフィックに専用のネットワークと接続を設定することを推奨します。

2.5. HA クラスターの要件

フェンシング

RHEL HA アドオンを使用したサポート対象の HA クラスターセットアップでは、各クラスターノードでフェンシングまたは STONITH デバイスを設定する必要があります。使用可能なフェンシングまたは STONITH デバイスは、クラスターが実行されているプラットフォームによって異なります。フェンシングエージェントの推奨事項については、RHEL 高可用性クラスターのサポートポリシー - フェンシング/STONITH を確認するか、ハードウェアまたはクラウドプロバイダーを参照して、そのプラットフォームでサポートされているフェンスデバイスを確認してください。

注記

フェンシング/STONITH メカニズムとして fence_scsi または fence_mpath には、HA クラスターによって完全に管理されるクラスターノード間で共有ストレージが必要です。SAP 環境にこのような共有ディスク設定が含まれていない場合、これらのフェンシングオプションの使用はサポート対象外です。

クォーラム

通常、クォーラムデバイスは、偶数のノードを持つクラスターには推奨されます。2 ノードクラスターには特に、スプリットブレインの状況を処理する内部メカニズムがあります。この場合、クォーラムデバイスはオプションです。クォーラムデバイスを使用すると、クラスターはスプリットブレインの状況で存続するノードをより適切に判別できます。

クォーラムデバイスの設定オプションは、プラットフォーム、インフラストラクチャー、および設定によって異なります。

2.6. SAP HANA のプランニング

sap-hana-ha パッケージは、SAP HANA 2.0 SPS05 rev 59.04 以降でのセットアップをサポートする結合リソースエージェントを提供します。

HANA セットアップを準備するには、計画された環境のインストールと設定に必要なパラメーターのリストを定義します。

表2.1 表 2.1: SAP HANA 設定パラメーターの例

パラメーター

値の例

クラスター node1 FQDN

node1.example.com

Cluster node2 FQDN

node2.example.com

SID

RH1

SAP インスタンス番号

02

プライマリー HANA サイト名

DC1

セカンダリー HANA サイト名

DC2

HANA SYSTEMDB ユーザーパスワード

<HANA_SYSTEM_PASSWORD>

HANA 管理ユーザー

rh1adm

第3章 2 ノード HA クラスターセットアップ用の SAP HANA のインストール

3.1. スケールアップ SAP HANA インスタンスのインストール

すべてのノードに、同じ SID とインスタンス番号を持つ HANA インスタンスをインストールします。インスタンスの設定は同一である必要があります。

前提条件

手順

  1. インストールメディアを含むディレクトリーに移動します(例: /sapmedia/hana )。

    [root]# cd /sapmedia/hana
    Copy to Clipboard
  2. インストールメディアを展開します。

    [root]# unzip IMDB_SERVER20_*.ZIP
    Copy to Clipboard
  3. デプロイメントしたインストールメディアのパスに移動します。

    [root]# cd /sapmedia/hana/DATA_UNITS/HDB_LCM_LINUX_<arch>
    Copy to Clipboard
  4. 対話型インストールで SAP HANA Lifecycle Management ツール(HDBLCM)を実行します。

    [root]# ./hdblcm
    Copy to Clipboard

    インタラクティブモードでは、システム ID (SID)、インストール番号(インスタンス)、データおよびログボリュームのファイルシステムの場所など、必要なすべての情報の入力を求めるプロンプトが表示されます。

  5. すべてのノードで手順 1-4 を繰り返します。

検証

  1. <sid>adm ユーザーに切り替えます。

    [root]# su - rh1adm
    Copy to Clipboard
  2. HANA インスタンスのランタイム情報をユーザー < sid>adm として確認します。

    rh1adm $ HDB info
    USER          PID     PPID  %CPU        VSZ        RSS COMMAND
    rh1adm      17897    17895   0.0       8972       5248 -sh
    rh1adm      24461    17897   0.0       7524       3840  \_ /bin/sh /usr/sap/RH1/HDB02/HDB info
    rh1adm      24490    24461   0.0      10104       3456      \_ ps fx -U rh1adm -o user:8,pid:8,ppid:8,pcpu:5,vsz:10,rss:10,args
    rh1adm      12924        1   0.0     581456      40072 hdbrsutil  --start --port 34203 --volume 3 --volumesuffix ...
    rh1adm      12284        1   0.0     581376      40000 hdbrsutil  --start --port 34201 --volume 1 --volumesuffix ...
    rh1adm      12193        1   0.0       9028       3028 sapstart pf=/usr/sap/RH1/SYS/profile/RH1_HDB02_node1
    rh1adm      12200    12193   0.0     476372      87652  \_ /usr/sap/RH1/HDB02/node1/trace/hdb.sapRH1_HDB02 -d -nw -f /usr/sap/RH1/HDB02/node1/daemon.ini pf=/usr/sap/RH1/SYS/profile/RH1_HDB02_node1
    rh1adm      12222    12200   9.6   19986956   16126960      \_ hdbnameserver
    rh1adm      12787    12200   0.3    1464980     214468      \_ hdbcompileserver
    rh1adm      12790    12200  94.0    7669612    6970948      \_ hdbpreprocessor
    rh1adm      12828    12200  12.7   19716232   14994012      \_ hdbindexserver -port 34203
    rh1adm      12831    12200   1.1    4995088    1465724      \_ hdbxsengine -port 34207
    rh1adm      13269    12200   0.4    2660096     461776      \_ hdbwebdispatcher
    rh1adm      12016        1   0.0     499404      58336 /usr/sap/RH1/HDB02/exe/sapstartsrv pf=/usr/sap/RH1/SYS/profile/RH1_HDB02_node1
    Copy to Clipboard
  3. さらに、landscapeHostConfiguration.py の出力のステータス ok を確認できます。

    rh1adm $ cdpy; python landscapeHostConfiguration.py
    | Host  | Host   | Host   | Failover | Remove | Storage   | Storage   | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host   | Host   | Worker  | Worker  |
    |       | Active | Status | Status   | Status | Config    | Actual    | Config   | Actual   | Config     | Actual     | Config      | Actual      | Config | Actual | Config  | Actual  |
    |       |        |        |          |        | Partition | Partition | Group    | Group    | Role       | Role       | Role        | Role        | Roles  | Roles  | Groups  | Groups  |
    | ----- | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------ | ------ | ------- | ------- |
    | node1 | yes    | ok     |          |        |         1 |         1 | default  | default  | master 1   | master     | worker      | master      | worker | worker | default | default |
    
    overall host status: ok
    Copy to Clipboard
  4. すべてのノードで手順を繰り返します。HANA プロファイルには、< SID>_HDB<instance>_<node> 形式の個々のノード名が含まれていることに注意して ください。

3.2. SAP HANA インスタンス自動起動の無効化

クラスターは、HA クラスターセットアップ内の HANA インスタンスの起動とシャットダウンを制御します。インスタンス自体を自動的に起動しないように、HANA インスタンスプロファイルを設定する必要があります。

手順

  1. HANA インスタンスのプロファイルディレクトリーに移動します。

    [root]# cd /usr/sap/<SID>/SYS/profile
    Copy to Clipboard
  2. インスタンスプロファイルを編集します。

    [root]# vi <SID>_HDB<instance>_<hostname>
    Copy to Clipboard

    Autostart0 に設定されていることを確認します。

  3. HA クラスターの一部として管理される HANA インスタンスごとに、手順 1 - 2 を繰り返します。

検証

  • HA クラスターによって管理されるすべての HANA インスタンスのインスタンスプロファイルに Autostart = 0 が設定されていることを確認します。

    [root]# grep Autostart /usr/sap/RH1/SYS/profile/*
    /usr/sap/RH1/SYS/profile/RH1_HDB02_node1:Autostart = 0
    Copy to Clipboard

第4章 SAP HANA システムレプリケーションの設定

クラスター内の HANA インスタンスを設定する前に、SAP HANA システムレプリケーションを設定およびテストする必要があります。HANA システムレプリケーションセットアップに関する SAP ガイドライン SAP HANA システムレプリケーション:Configuration に 従ってください。

4.1. SAP HANA システムレプリケーションセットアップの前提条件

SAP HANA の設定

SAP HANA は、両方のノードに同じようにインストールおよび設定する必要があります。

ホスト名の解決

両方のシステムが、両方のシステムの FQDN を解決できる。DNS がなくても FQDN を解決できるようにするには、FQDN を /etc/hosts に配置します。

SAP HANA スケールアップシステムの /etc/hosts エントリーの例:

[root]# cat /etc/hosts
...
192.168.0.11 node1.example.com node1
192.168.0.12 node2.example.com node2
Copy to Clipboard
注記

hostname | SAP Help Portal に記載されているように、SAP HANA は小文字のホスト名のみをサポートします。

SAP HANA log_mode

システムレプリケーションを機能させるには、SAP HANA log_mode 変数を normal (デフォルト値)に設定する必要があります。

両方のノードで HANA 管理ユーザー < sid>adm として現在の log_mode を確認します。

rh1adm $ hdbsql -u system -p '<HANA_SYSTEM_PASSWORD>' -i ${TINSTANCE} \
"select value from "SYS"."M_INIFILE_CONTENTS" where key='log_mode'"
VALUE "normal"
1 row selected
Copy to Clipboard

4.2. 初期 HANA インスタンスバックアップの実行

HANA システムレプリケーションは、計画された SAP HANA システムレプリケーションセットアップのために、SAP HANA インスタンスの初期バックアップがプライマリーインスタンスに存在する場合にのみ有効にできます。

SAP HANA ツールを使用してバックアップを作成し、手動手順をスキップできます。詳細は、SAP HANA Administration Guide - SAP HANA Database Backup and Recovery を参照してください。

前提条件

  • SAP HANA 管理ユーザー < sid>adm バックアップファイルを保存する書き込み可能なディレクトリーがある。
  • バックアップファイルが保存されているファイルシステムに十分な空き領域がある。

手順

  1. 必要に応じて、バックアップ用の専用ディレクトリーを適切なパスに作成します。次に例を示します。

    [root]# mkdir <path>/<SID>-backup
    Copy to Clipboard

    &lt ;path& gt; をシステムのパスに置き換えます。最初のバックアップファイル用の十分な空き容量がある。

  2. ターゲットディレクトリーが HANA ユーザーによって所有されていないか、または書き込み可能でない場合は、バックアップパスの所有者をユーザー < sid>adm に変更します。次に例を示します。

    [root]# chown <sid>adm:sapsys <path>/<SID>-backup
    Copy to Clipboard
  3. 残りの手順で <sid>adm ユーザーに変更します。

    [root]# su - <sid>adm
    Copy to Clipboard
  4. < sid>adm ユーザーとして SYSTEMDB のバックアップを作成します。バックアップが保存されるファイルへのパスを指定します。ターゲットファイルシステムに十分な空き領域が残っていることを確認してから、バックアップを作成します。

    rh1adm $ hdbsql -i ${TINSTANCE} -u system -p '<HANA_SYSTEM_PASSWORD>' -d SYSTEMDB \
    "BACKUP DATA USING FILE ('<path>/${SAPSYSTEMNAME}-backup/bkp-SYS')"
    0 rows affected (overall time xx.xxx sec; server time xx.xxx sec)
    Copy to Clipboard
    • TINSTANCE および SAPSYSTEMNAME は、< sid>adm ユーザーシェル環境の一部である環境変数です。TINSTANCE はインスタンス番号で、SAPSYSTEMNAME はインスタンス番号です。どちらも < sid>adm ユーザーに関連するインスタンス値に自動的に設定されます。
    • &lt ;path&gt; を、< sid>adm ユーザーが書き込みアクセス権を持ち、十分な空き領域が残っている場所へのパスに置き換えます。
  5. < sid>adm ユーザーとして、すべてのテナントデータベースのバックアップを作成します。バックアップが保存されるファイルへのパスを指定します。ターゲットファイルシステムに十分な空き領域が残っていることを確認します。テナント DB バックアップを作成します。

    rh1adm $ hdbsql -i ${TINSTANCE} -u system -p '<HANA_SYSTEM_PASSWORD>' -d SYSTEMDB \
    "BACKUP DATA FOR ${SAPSYSTEMNAME} USING FILE ('<path>/${SAPSYSTEMNAME}-backup/bkp-${SAPSYSTEMNAME}')"
    0 rows affected (overall time xx.xxx sec; server time xx.xxx sec)
    Copy to Clipboard

    &lt ;path&gt; を、< sid>adm ユーザーが書き込みアクセス権を持ち、十分な空き領域が残っている場所へのパスに置き換えます。

検証

  1. 作成されたバックアップファイルを一覧表示します。初期バックアップを保存するディレクトリーとして /hana/log/RH1-backup を使用する場合の例:

    rh1adm $ ls -lh /hana/log/RH1-backup/
    total 7.2G
    -rw-r-----. 1 rh1adm sapsys 156K May  8 08:40 bkp-RH1_databackup_0_1
    -rw-r-----. 1 rh1adm sapsys  81M May  8 08:40 bkp-RH1_databackup_2_1
    -rw-r-----. 1 rh1adm sapsys 3.6G May  8 08:40 bkp-RH1_databackup_3_1
    -rw-r-----. 1 rh1adm sapsys 160K May  8 08:35 bkp-SYS_databackup_0_1
    -rw-r-----. 1 rh1adm sapsys 3.6G May  8 08:35 bkp-SYS_databackup_1_1
    Copy to Clipboard
  2. HANA コマンド hdbbackupcheck を使用して、作成した各インスタンスのバックアップファイルの健全性を確認します。

    rh1adm $ for i in $(ls /hana/log/RH1-backup/*); do hdbbackupcheck $i; done
    ...
    Loaded library 'libhdblivecache'
    Backup '/hana/log/RH1-backup/RH1_databackup_0_1' successfully checked.
    Loaded library 'libhdbcsaccessor'
    ...
    Loaded library 'libhdblivecache'
    Backup '/hana/log/RH1-backup/system_databackup_0_1' successfully checked.
    Loaded library 'libhdbcsaccessor'
    Loaded library 'libhdblivecache'
    Backup '/hana/log/RH1-backup/system_databackup_1_1' successfully checked.
    Copy to Clipboard

トラブルシューティング

  • < sid>adm ユーザーが ターゲットディレクトリーに書き込めないため、バックアップは失敗します。

    * 447: backup could not be completed: [2001003]
    createDirectory(path= '/tmp/RH1-backup/', access= rwxrwxr--, recursive= true):
    Permission denied (rc= 13, 'Permission denied') SQLSTATE: HY000
    Copy to Clipboard

    < sid>adm ユーザーが、バックアップコマンドで定義したターゲットディレクトリーにファイルを作成できることを確認します。手順のステップ 2 を使用するなど、権限を修正します。

  • ターゲットファイルシステムの容量が不足しているため、バックアップが失敗します。

    * 447: backup could not be completed: [2110001]
    Generic stream error: $msg$ - , rc=$sysrc$: $sysmsg$.
    Failed to process item 0x00007fc5796e0000 - '<root>/.bkp-RH1_databackup_3_1'
    ((open, mode= W, file_access= rw-r-----, flags= ASYNC|DIRECT|TRUNCATE|UNALIGNED_SIZE,
    size= 4096), factory= (root= '/tmp/RH1-backup/' (root_access= rwxr-x---,
    flags= AUTOCREATE_PATH|DISKFULL_ERROR, usage= DATA_BACKUP, fs= xfs, config=
    (async_write_submit_active=on,async_write_submit_blocks=all,async_read_submit=on,num_submit_queues=1,num_completion_queues=1,size_kernel_io_queue=512,max_parallel_io_requests=64,min_submit_batch_size=16,max_submit_batch_size=64))
    SQLSTATE: HY000
    Copy to Clipboard

    ターゲットディレクトリーが配置されているファイルシステムの空き容量を確認します。ファイルシステムのサイズを拡大するか、バックアップファイル用の十分な空き領域がある別のパスを選択します。

4.3. プライマリー HANA レプリケーションインスタンスの設定

計画したシステムレプリケーションの設定の初期プライマリーインスタンスに予定されているシステムで HANA システムレプリケーションを有効にします。

前提条件

手順

  1. 最初のプライマリーとなる HANA インスタンスでシステムレプリケーションを有効にします。最初のノードまたはプライマリーノードで、&lt ;sid>adm としてコマンドを実行します。

    rh1adm $ hdbnsutil -sr_enable --name=<DC1>
    nameserver is active, proceeding ...
    successfully enabled system as system replication source site
    done.
    Copy to Clipboard
    • &lt ;DC1 > をプライマリー HANA サイト名に置き換えます。

検証

  • システムのレプリケーションステータスを < sid>adm として確認し、現在のノードが モードとして表示されていることを確認します。primary で、サイト ID と サイト名 にプライマリーインスタンスサイト情報が入力されていることを確認します。

    rh1adm $ hdbnsutil -sr_stateConfiguration
    System Replication State
    ~~~~~~~~
    
    mode: primary
    site id: 1
    site name: DC1
    done.
    Copy to Clipboard

4.4. セカンダリー HANA レプリケーションインスタンスの設定

HANA システムレプリケーションの設定を完了するには、セカンダリー HANA インスタンスをプライマリーインスタンスに登録する必要があります。

前提条件

  • プライマリーインスタンスと同じ SID とインスタンス番号を使用して、セカンダリーノードに SAP HANA をインストールしている。
  • クラスターノード間で root ssh キー を設定している。
  • セカンダリー ノードで 2 つの端末を開き、1 つは root ユーザー用で、もう 1 つは < sid>adm ユーザー用です。

手順

  1. セカンダリー HANA インスタンスを停止し、node2 で < sid>adm ユーザーとして実行します。

    rh1adm $ HDB stop
    …
    Stop
    OK
    Waiting for stopped instance using: /usr/sap/<SID>/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr <instance> -function WaitforStopped 600 2
    …
    
    WaitforStopped
    OK
    hdbdaemon is stopped.
    Copy to Clipboard
  2. HANA がシステムレプリケーション暗号化の鍵を保存するディレクトリーに移動します。

    [root]# cd /usr/sap/<SID>/SYS/global/security/rsecssfs
    Copy to Clipboard
  3. HANA システム PKI ファイル SSFS_<SID>.KEY をプライマリー HANA インスタンスからセカンダリーインスタンスにコピーします。

    [root]# rsync -av node1:$PWD/key/SSFS_<SID>.KEY key/
    Copy to Clipboard
  4. PKI ファイル SSFS_<SID>.DAT をプライマリー HANA インスタンスからセカンダリーインスタンスにコピーします。

    [root]# rsync -av node1:$PWD/data/SSFS_<SID>.DAT data/
    Copy to Clipboard
  5. < sid>adm ユーザーターミナルで、セカンダリー HANA インスタンスをプライマリーインスタンスに登録します。

    rh1adm $ hdbnsutil -sr_register --remoteHost=node1 \
    --remoteInstance=${TINSTANCE} --replicationMode=sync \
    --operationMode=logreplay --name=<DC2>
    adding site ...
    collecting information ...
    updating local ini files ...
    done.
    Copy to Clipboard
    • &lt ;DC2 > をセカンダリー HANA サイト名に置き換えます。
    • システムレプリケーションの要件に応じて、replicationModeoperationMode の値を選択します。
    • TINSTANCE は、HANA インスタンスプロファイルを読み取ることでユーザー < sid>adm に対して自動的に設定される環境変数です。変数の値は HANA インスタンス番号です。
  6. セカンダリー HANA インスタンスを起動します。node2 で & lt;sid>adm として実行します。

    rh1adm $ HDB start
    
    ...
    Starting instance using: /usr/sap/<SID>/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr <instance> -function StartWait 2700 2
    
    ...
    Copy to Clipboard

検証

  1. システムレプリケーションがセカンダリーインスタンスで実行され、モード が手順 5 の hdbnsutil -sr_register コマンドの replicationMode パラメーターに使用した値と一致することを確認します。node2 で <sid>adm として実行します。

    rh1adm $ hdbnsutil -sr_stateConfiguration
    
    System Replication State
    ~~~~~~~~
    
    mode: sync
    site id: 2
    site name: DC2
    active primary site: 1
    
    primary masters: node1
    done.
    Copy to Clipboard
  2. 両方のインスタンスで、ユーザー < sid>adm として HANA インスタンスの Python スクリプトディレクトリーに移動します。これを行う最も簡単な方法は、インスタンスのインストール時に SAP HANA が入力する < sid>adm ユーザーシェルに組み込まれたエイリアスである cdpy を使用することです。

    rh1adm $ cdpy
    Copy to Clipboard

    この例では、現在のディレクトリーを /usr/sap/RH1/HDB02/exe/python_support/ に変更します。

  3. 両方のインスタンスで、確立された HANA システムレプリケーションの現在のステータスを表示します。

    1. プライマリーインスタンスでは、システムレプリケーションのステータスが常にすべての詳細とともに表示されます。

      rh1adm $ python systemReplicationStatus.py
      |Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
      |         |         |      |             |          |        |          |Host      |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
      |-------- |-------- |----- |------------ |--------- |------- |--------- |----------|--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
      |SYSTEMDB |node1    |30001 |nameserver   |        1 |      1 |DC1       |node2     |    30001 |        2 |DC2       |YES           |SYNC        |ACTIVE      |               |        True |
      |RH1      |node1    |30007 |xsengine     |        2 |      1 |DC1       |node2     |    30007 |        2 |DC2       |YES           |SYNC        |ACTIVE      |               |        True |
      |RH1      |node1    |30003 |indexserver  |        3 |      1 |DC1       |node2     |    30003 |        2 |DC2       |YES           |SYNC        |ACTIVE      |               |        True |
      
      status system replication site "2": ACTIVE
      overall system replication status: ACTIVE
      
      Local System Replication State
      ~~~~~~~~~~
      
      mode: PRIMARY
      site id: 1
      site name: DC1
      Copy to Clipboard
      • ACTIVE は、HANA システムのレプリケーションが正常な状態であり、完全に同期されていることを意味します。
      • SYNCING は、たとえばセカンダリーインスタンスのテイクオーバーが新しいプライマリーになった後など、セカンダリーサイトでシステムレプリケーションが更新されている間に表示されます。
      • INITIALIZING は、システムレプリケーションの初回有効か、または完全な同期がトリガーされた後に表示されます。
    2. セカンダリー インスタンスでは、systemReplicationStatus.py の出力の詳細が低くなります。

      rh1adm $ python systemReplicationStatus.py
      this system is either not running or not primary system replication site
      
      Local System Replication State
      ~~~~~~~~~~
      
      mode: SYNC
      site id: 2
      site name: DC2
      active primary site: 1
      primary masters: node1
      Copy to Clipboard

4.5. HANA システムレプリケーションのテスト

クラスターのセットアップを続行する前に、HANA システムのレプリケーションを徹底的にテストすることが推奨されます。正しいシステムレプリケーション動作の検証は、HA クラスターが後でシステムのレプリケーションを管理するときに予期しない結果を防ぐのに役立ちます。

さまざまなテストの測定時間に対応するクラスターリソース設定でタイムアウト値を使用して、クラスターリソース操作が途中でタイムアウトしないようにします。

また、HANA 設定で異なるパラメーター値をテストして、クラスター制御外で特定のアクティビティーを手動で実行した時刻を測定することで、パフォーマンスを最適化することもできます。

現実的なデータ負荷とサイズでテストを実行します。

完全なレプリケーション

  • プライマリーと同期するまで、新たに登録されたセカンダリーが開始してから同期にかかる時間はどれくらいですか。
  • 同期時間を改善できるパラメーターがありますか ?

接続が失われた

  • プライマリーインスタンスとセカンダリーインスタンス間の接続が失われた後、それらが同期されるまで、どれだけの時間がかかるか。
  • 再接続と同期時間を改善できるパラメーターがありますか ?

テイクオーバー

  • プライマリーからのテイクオーバー後に、セカンダリーインスタンスが完全に利用可能になるのにかかる時間。
  • 通常のテイクオーバーとハンドシェイクとのテイクオーバーの違いは何ですか?
  • テイクオーバー時間を改善できるパラメーターがありますか ?

データの整合性

  • テイクオーバーを実行して作成したデータが利用可能で、正しいデータになりますか ?

クライアントの再接続

  • クライアントは、テイクオーバー後に新しいプライマリーインスタンスに再接続できますか ?
  • テイクオーバー後にクライアントが新しいプライマリーにアクセスするまでにかかる時間。

プライマリーがセカンダリーになる

  • 新しいセカンダリーとして登録された後に、新しいプライマリーと再度同期するまで、以前のプライマリーにかかる時間。
  • 設定されている場合、クライアントが読み取り操作のために新しく登録されたセカンダリーにアクセスできるまでにかかる時間。

第5章 Pacemaker クラスターの設定

5.1. 基本的なクラスター設定のデプロイ

次の基本的なクラスター設定は、SAP HANA システムレプリケーションを管理するための Pacemaker クラスターセットアップを開始するための最低限の手順を説明します。

複雑な設定の設定やオプションの詳細は、RHEL HA アドオンのドキュメント( 複数のリンクを持つ高可用性クラスターの作成 など)を参照してください。

前提条件

  • HANA システムレプリケーション環境を設定し、正しく動作していることを確認している。
  • このクラスターのノードとなるすべてのシステムで、RHEL High Availability リポジトリーを設定している。
  • 計画した環境に応じてフェンシングおよびクォーラムの要件を確認している。詳細は、HA クラスター要件 を参照してください。

手順

  1. High Availability リポジトリーから Red Hat High Availability Add-On ソフトウェアパッケージをインストールします。すべてのクラスターノードでインストールして実行するフェンスエージェントを選択します。

    1. クラスターパッケージとすべてのフェンスエージェントをインストールします。

      [root]# dnf install pcs pacemaker fence-agents-all
      Copy to Clipboard
    2. または、環境に応じて、クラスターパッケージと、特定のフェンスエージェントのみをインストールします。

      [root]# dnf install pcs pacemaker fence-agents-<model>
      Copy to Clipboard
  2. すべてのクラスターノードで pcsd サービスを開始して有効にします。

    [root]# systemctl enable --now pcsd.service
    Copy to Clipboard
  3. オプション: firewalld サービスを実行している場合は、Red Hat High Availability Add-On で必要なポートを有効にします。これは、すべてのクラスターノードで実行します。

    [root]# firewall-cmd --add-service=high-availability
    [root]# firewall-cmd --runtime-to-permanent
    Copy to Clipboard
  4. hacluster ユーザーのパスワードを設定します。同じパスワードを使用して各ノードでコマンドを繰り返します。

    [root]# passwd hacluster
    Copy to Clipboard
  5. クラスター内のノードごとに hacluster ユーザーを認証します。最初のノードで以下を実行します。

    [root]# pcs host auth <node1> <node2>
    Username: hacluster
    Password:
    <node1>: Authorized
    <node2>: Authorized
    Copy to Clipboard
    • /etc/hosts ファイルで定義されているように、FQDN の有無に関わらず、ノード名を入力します。
    • プロンプトで hacluster ユーザーパスワードを入力します。
  6. 名前を使用してクラスターを作成し、クラスターメンバーの名前を指定します(例: node1 および node2 に完全修飾ホスト名を使用)。これにより、両方のノードでクラスター設定が伝播され、クラスターが起動します。最初のノードで以下のコマンドを実行します。

    [root]# pcs cluster setup <cluster_name> --start <node1> <node2>
    No addresses specified for host 'node1', using 'node1'
    No addresses specified for host 'node2', using 'node2'
    Destroying cluster on hosts: 'node1', 'node2'...
    node2: Successfully destroyed cluster
    node1: Successfully destroyed cluster
    Requesting remove 'pcsd settings' from 'node1', 'node2'
    node1: successful removal of the file 'pcsd settings'
    node2: successful removal of the file 'pcsd settings'
    Sending 'corosync authkey', 'pacemaker authkey' to 'node1', 'node2'
    node1: successful distribution of the file 'corosync authkey'
    node1: successful distribution of the file 'pacemaker authkey'
    node2: successful distribution of the file 'corosync authkey'
    node2: successful distribution of the file 'pacemaker authkey'
    Sending 'corosync.conf' to 'node1', 'node2'
    node1: successful distribution of the file 'corosync.conf'
    node2: successful distribution of the file 'corosync.conf'
    Cluster has been successfully set up.
    Starting cluster on hosts: 'node1', 'node2'...
    Copy to Clipboard
  7. システムの起動時にクラスターを自動的に起動できるようにします。これにより、corosync サービスおよび pacemaker サービスが有効になります。ノードの再起動後にクラスターの起動を手動で制御する場合は、この手順をスキップしてください。1 つのノードで実行します。

    [root]# pcs cluster enable --all
    node1: Cluster Enabled
    node2: Cluster Enabled
    Copy to Clipboard

検証

  • クラスターのステータスを確認します。クラスターデーモンサービスが必要な状態であることを確認します。

    [root]# pcs status --full
    Cluster name: node1-node2-cluster
    
    WARNINGS:
    No stonith devices and stonith-enabled is not false
    
    Cluster Status:
     Cluster Summary:
       * Stack: corosync (Pacemaker is running)
       * Current DC: node1 (version ) - partition with quorum * Last updated: * on node1 * Last change: ** by hacluster via hacluster on node1
       * 2 nodes configured
       * 0 resource instances configured
    
    ...
    
    PCSD Status:
      node1: Online
      node2: Online
    
    Daemon Status:
      corosync: active/enabled
      pacemaker: active/enabled
      pcsd: active/enabled
    Copy to Clipboard

次のステップ

5.2. 一般的なクラスタープロパティーの設定

リソースの不要なフェイルオーバーを回避するために、クラスターリソースのデフォルトを調整する必要があります。

手順

  • リソースリソースの不要なフェイルオーバーを回避するために、クラスターリソースのデフォルトを更新します。1 つのクラスターノードで以下のコマンドを実行し、変更をクラスター設定に適用します。

    [root]# pcs resource defaults update \
    resource-stickiness=1000 \
    migration-threshold=5000
    Copy to Clipboard
    • resource-stickiness=1000 は、リソースが現在の場所で稼働し続けることを推奨します。これにより、クラスターが軽量の内部ヘルスインジケーターに基づいてリソースを移動できなくなります。
    • migration-threshold=5000 を使用すると、5000 の失敗後にノードでリソースを再起動できます。この制限を超えると、障害がクリアされるまで、リソースはノードでブロックされます。これにより、管理者が繰り返し発生する失敗の原因を調査してカウンターをリセットできるまで、数回の障害発生後にリソース復旧が可能になります。

検証

  • リソースのデフォルトが設定されていることを確認します。

    [root]# pcs resource defaults
    Meta Attrs: build-resource-defaults
      migration-threshold=5000
      resource-stickiness=1000
    Copy to Clipboard

5.3. systemd ベースの SAP 起動フレームワークの設定

Systemd 統合は、RHEL 9 for SAP HANA 2.0 SPS07 リビジョン 70 以降での SAP HANA インストールのデフォルト動作です。HA 環境では、追加の変更を適用して、クラスターセットアップに関与するさまざまな systemd サービスを統合する必要があります。

HANA インスタンスの systemd サービスを正しい順序で管理するように、Pacemaker の systemd サービスを設定します。

前提条件

  • systemd 統合で HANA インスタンスをインストールし、すべてのノードで確認されている。次に例を示します。

    [root]# systemctl list-units --all SAP*
      UNIT              LOAD      ACTIVE   SUB     DESCRIPTION
      SAPRH1_02.service loaded    active   running SAP Instance SAPRH1_02
      SAP.slice         loaded    active   active  SAP Slice
    ...
    Copy to Clipboard

手順

  1. pacemaker サービスのドロップインファイルの /etc/systemd/system/pacemaker.service.d/ ディレクトリーを作成します。

    [root]# mkdir /etc/systemd/system/pacemaker.service.d/
    Copy to Clipboard
  2. 以下の内容を含む Pacemaker サービスの systemd ドロップインファイルを作成します。

    [root]# cat << EOF > /etc/systemd/system/pacemaker.service.d/00-pacemaker.conf
    [Unit]
    Description=Pacemaker needs the SAP HANA instance service
    Wants=SAP<SID>_<instance>.service
    After=SAP<SID>_<instance>.service
    EOF
    Copy to Clipboard
    • &lt ;SID&gt; を HANA SID に置き換えます。
    • &lt ;instance&gt; を HANA インスタンス番号に置き換えます。
  3. systemctl デーモンを再読み込みして、ドロップインファイルをアクティブにします。

    [root]# systemctl daemon-reload
    Copy to Clipboard
  4. 他のクラスターノードで手順 1 から 3 を繰り返します。

検証

  1. HANA インスタンスの systemd サービスを確認し、読み込まれ ていることを確認します。

    [root]# systemctl status SAPRH1_02.service
    ● SAPRH1_02.service - SAP Instance SAPRH1_02
         Loaded: loaded (/etc/systemd/system/SAPRH1_02.service; disabled; preset: disabled)
         Active: active (running) since xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
       Main PID: 5825 (sapstartsrv)
          Tasks: 841
         Memory: 88.6G
            CPU: 4h 50min 2.033s
         CGroup: /SAP.slice/SAPRH1_02.service
                 ├─ 5825 /usr/sap/RH1/HDB02/exe/sapstartsrv pf=/usr/sap/RH1/SYS/profile/RH1_HDB02_node1
                 ├─ 5986 sapstart pf=/usr/sap/RH1/SYS/profile/RH1_HDB02_node1
                 ├─ 5993 /usr/sap/RH1/HDB02/node1/trace/hdb.sapRH1_HDB02 -d -nw -f /usr/sap/RH1/HDB02/node1/daemon.ini pf=/usr/sap/RH1/SYS/profile/RH1_HDB02_node1
    ...
    Copy to Clipboard
  2. これで、SAP HANA インスタンスサービスが Pacemaker サービスに認識されていることを確認します。

    [root]# systemctl show pacemaker.service | grep SAP
    Wants=SAPRH1_02.service resource-agents-deps.target dbus-broker.service
    After=... SAPRH1_02.service rsyslog.service
    Copy to Clipboard

    SAP<SID>_<instance>.service が After= および Wants= リストに記載されていることを確認します。

5.4. SAP HANA HA コンポーネントのインストール

Red Hat Enterprise Linux 9 for <arch> - SAP Solutions (RPMs)リポジトリーの sap-hana- ha RPM パッケージは、HANA システムレプリケーションセットアップを管理するための HA クラスターを設定するためのリソースエージェントおよびその他の SAP HANA 固有のコンポーネントを提供します。

重要

パッケージ sap-hana-ha は、RHEL 9.4 以降でのみ利用できます。古い RHEL 9 リリースで HANA HA のクラスターを設定する場合は、Automating SAP HANA Scale-Up System Replication using the RHEL HA Add-On の手順に従います。

手順

  • すべてのクラスターノードに sap-hana-ha パッケージをインストールします。

    [root]# dnf install sap-hana-ha
    Copy to Clipboard

検証

  • パッケージがインストールされているすべてのノードを確認します。

    [root]# rpm -q sap-hana-ha
    sap-hana-ha-<version>.<release>.noarch
    Copy to Clipboard

5.5. srConnectionChanged ()フックメソッドの HanaSR HA/DR プロバイダーの設定

SAP HANA 2.0 SPS0 以降を使用して HA クラスターセットアップで HANA インスタンスを設定する場合、クラスターのセットアップを続行する前に、SAP HANA srConnectionChanged () フックメソッドを有効にしてテストする必要があります。

前提条件

  • sap-hana-ha パッケージがインストールされている。
  • HANA インスタンスはクラスターによって管理されていません。それ以外の場合は、メンテナンス手順 を使用して、SAP HANA インスタンス を更新 し、フックスクリプトの設定中にクラスターが干渉しないようにします。

手順

  1. < sid>adm ユーザーとして、すべてのノード上の HANA インスタンスを停止します。

    rh1adm $ HDB stop
    Copy to Clipboard
  2. 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
    Copy to Clipboard
    • &lt ;instance&gt; を HANA インスタンス番号に置き換えます。
  3. < sid>adm ユーザーシェルに組み込まれるコマンドエイリアス cdcoc を使用して、< sid>adm ユーザーとして HANA 設定ディレクトリーに移動します。これは、/hana/shared/<SID>/global/hdb/custom/config/ パスに自動的に変更されます。

    rh1adm $ cdcoc
    Copy to Clipboard
  4. SAP HANA インスタンスの global.ini ファイルを更新して、HanaSR フックを設定します。すべての HANA インスタンスノードで設定ファイルを編集し、次の設定を追加します。

    [ha_dr_provider_hanasr]
    provider = HanaSR
    path = /usr/share/sap-hana-ha/
    execution_order = 1
    
    [trace]
    ha_dr_hanasr = info
    Copy to Clipboard

    execution_order1 に設定して、HanaSR フックが常に最高の優先順位で実行されるようにします。

  5. オプション: hdbindexserver の失敗に対してアクションを実行するためのオプションの ChkSrv フックも設定したい場合は、srServiceStateChanged ()フックメソッドの ChkSrv HA/DR プロバイダーの設定 の手順 1 を参照してください

    [ha_dr_provider_hanasr]
    provider = HanaSR
    path = /usr/share/sap-hana-ha/
    execution_order = 1
    
    [ha_dr_provider_chksrv]
    provider = ChkSrv
    path = /usr/share/sap-hana-ha/
    execution_order = 2
    action_on_lost = stop
    
    [trace]
    ha_dr_hanasr = info
    ha_dr_chksrv = info
    Copy to Clipboard
  6. 以下の内容で、各クラスターノードに /etc/sudoers.d/20-saphana ファイルを root ユーザーとして作成します。次のコマンド権限により、& lt;sid>adm ユーザーは、HanaSR フック実行の一部として特定のクラスターノード属性を更新できます。

    [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
  7. HA クラスターを起動せずに、両方のクラスターノードの HANA インスタンスを手動で起動します。&lt ;sid>adm として実行します。

    rh1adm $ HDB start
    Copy to Clipboard

検証

  1. トレースログファイルが保存されている < sid>adm ユーザーとして、SAP HANA ディレクトリーに移動します。< sid>adm ユーザーシェルに組み込まれたコマンドエイリアス cdtrace を使用します。

    rh1adm $ cdtrace
    Copy to Clipboard
  2. HANA ネームサーバーサービスログで、HA/DR プロバイダーの読み込みメッセージを確認します。

    1. HanaSR プロバイダーのみが設定されている場合:

      rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_*
      loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
      Copy to Clipboard
    2. オプションの 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/
      Copy to Clipboard
  3. システムのセキュアなログで user root として検証すると、sudo コマンドが正常に実行されたことを確認します。sudoers ファイルが正しくない場合は、sudo コマンドの実行時にエラーがログに記録されます。

    [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

    HANA インスタンスが両方のノードで起動すると、通常、いくつかの srHook 属性の更新を確認できます。最初は SFAIL を設定することになります。これは、プライマリーの開始直後に、この時点で同期しているセカンダリーと同期していないためです。

    SOK への最後の更新は、システムレプリケーションステータスが最終的に完全に同期に変更された後に HANA イベントによってトリガーされます。

  4. 同時に行っていない場合は、2 番目のインスタンスで検証手順 1 - 2 を繰り返します。ステップ 3 の sudo ログメッセージは、システムレプリケーションイベントが送信されるプライマリーインスタンスノードにのみ表示されます。
  5. 任意のノードのクラスター属性を確認し、hana_<sid>_site_srHook_<DC2 > 属性の値が期待どおりに更新されていることを確認します。

    [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
    • SOK は、HANA システムレプリケーションが ACTIVE 状態の場合に設定されます。これは、確立され、完全に同期していることを意味します。
    • SFAIL は、システムのレプリケーションが他の状態にあるときに設定されます。

トラブルシューティング

5.6. srServiceStateChanged ()フックメソッド用の ChkSrv HA/DR プロバイダーの設定

indexserver プロセスが失敗した後のリカバリーを短時間で HANA インスタンスを停止したり、強制終了したりする場合は、フック ChkSrv を設定できます。この設定はオプションです。

前提条件

手順

  1. < sid>adm ユーザーとして HANA 設定ディレクトリーに移動します。< sid>adm ユーザーシェルに組み込まれたコマンドエイリアス cdcoc を使用します。これは、/hana/shared/<SID>/global/hdb/custom/config/ パスに自動的に変更されます。

    rh1adm $ cdcoc
    Copy to Clipboard
  2. HANA インスタンスの global.ini ファイルを更新して、フックスクリプトを設定します。すべての HANA インスタンスシステムで設定ファイルを編集し、HanaSR プロバイダーの定義に加えて以下の内容を追加します。

    [ha_dr_provider_chksrv]
    provider = ChkSrv
    path = /usr/share/sap-hana-ha/
    execution_order = 2
    action_on_lost = stop
    
    [trace]
    ha_dr_hanasr = info
    ha_dr_chksrv = info
    Copy to Clipboard
  3. オプション:HA/DR プロバイダーをリロードして HANA の実行中に ChkSrv プロバイダーを有効にします。インスタンスが停止しているときにフックスクリプトを設定するときに、この手順をスキップして、インスタンスの起動時に HA/DR プロバイダーが自動的に読み込まれます。

    rh1adm $ hdbnsutil -reloadHADRProviders
    Copy to Clipboard

検証

  1. トレースログファイルが保存されている < sid>adm ユーザーとして、SAP HANA ディレクトリーに移動します。< sid>adm ユーザーシェルに組み込まれたコマンドエイリアス cdtrace を使用します。

    rh1adm $ cdtrace
    Copy to Clipboard
  2. 変更が読み込まれていることを確認します。

    rh1adm $ grep -e "loading HA/DR Provider.*ChkSrv.*" nameserver_*
    loading HA/DR Provider 'ChkSrv' from /usr/share/sap-hana-ha/
    Copy to Clipboard
  3. 専用のトレースログファイルが作成され、プロバイダーが正しい設定パラメーターでロードされていることを確認します。

    rh1adm $ cat nameserver_chksrv.trc
    init called
    ChkSrv.init() version 1.001.1, parameter info: action_on_lost=stop stop_timeout=20 kill_signal=9
    Copy to Clipboard

トラブルシューティング

5.7. HANA クラスターリソースの作成

クラスターが HANA ランドスケープのステータスを収集し、インスタンスの正常性を監視し、必要に応じてインスタンスを管理するためのアクションを実行するように、SAPHanaTopologySAPHanaController リソースの両方を設定する必要があります。

SAPHanaFilesystem リソースはオプションです。プライマリーインスタンスのファイルシステムが利用できなくなった場合に、アクションに時間を改善するために追加できます。

手順

  1. SAPHanaTopology リソースをクローンリソースとして作成します。これは、すべてのクラスターノードで同時に実行されることを意味します。

    [root]# pcs resource create rsc_SAPHanaTop_<SID>_HDB<instance> \
    ocf:heartbeat:SAPHanaTopology \
    SID=<SID> \
    InstanceNumber=<instance> \
    op start timeout=600 \
    op stop timeout=300 \
    op monitor interval=30 timeout=300 \
    clone cln_SAPHanaTop_<SID>_HDB<instance> \
    meta clone-max=2 clone-node-max=1 interleave=true --future
    Copy to Clipboard
    • &lt ;SID&gt; を HANA SID に置き換えます。
    • &lt ;instance&gt; を HANA インスタンス番号に置き換えます。

      注記

      RHEL 9.3 以降、clone コマンドで meta キーワードを使用しないと、非推奨の警告が表示されます。属性は、ベースリソースに自動的に割り当てられます。

      今後は、クローンリソースに属性を割り当てるのに、クローン属性の メタ キーワードが必要になります。それまでは、この動作がすでに適用されるように、--future パラメーターを追加します。

      クローンメタ属性を指定する場合は、新しい pcs parsing requires meta keyword も参照してください。

  2. SAPHanaController リソースを昇格可能なクローンリソースとして作成します。これは、すべてのクラスターノードで同時に実行されますが、1 つのノードでは active または primary インスタンスとして機能します。

    [root]# pcs resource create rsc_SAPHanaCon_<SID>_HDB<instance> \
    ocf:heartbeat:SAPHanaController \
    SID=<SID> \
    InstanceNumber=<instance> \
    PREFER_SITE_TAKEOVER=true \
    DUPLICATE_PRIMARY_TIMEOUT=7200 \
    AUTOMATED_REGISTER=false \
    op stop timeout=3600 \
    op monitor interval=59 role=Promoted timeout=700 \
    op monitor interval=61 role=Unpromoted timeout=700 \
    meta priority=100 \
    promotable cln_SAPHanaCon_<SID>_HDB<instance> \
    meta clone-max=2 clone-node-max=1 interleave=true --future
    Copy to Clipboard

    AUTOMATED_REGISTER=false でリソースを作成してから、テストを使用して正しい動作とデータの整合性を検証してセットアップを完了することが推奨されます。詳細は、セットアップのテスト を参照し てください。パラメーターを true に設定すると、すでに作成時にこれを有効にすることができます。

    詳細は、SAPHanaController リソースパラメーター を参照してください。

  3. SAPHanaController リソースが正常に起動する必要がある HANA ランドスケープ情報を収集するため、SAPHanaController の前に SAPHanaTopology を開始する必要があります。2 つのリソースの正しい起動順序を適用するクラスター制約を作成します。

    [root]# pcs constraint order cln_SAPHanaTop_<SID>_HDB<instance> \
    then cln_SAPHanaCon_<SID>_HDB<instance> symmetrical=false
    Copy to Clipboard

    symmetrical=false を設定すると、制約はリソースの起動順序のみに影響しますが、停止順序には適用されません。

  4. オプション: SAPHanaFilesystem リソースをクローンリソースとして作成します。

    [root]# pcs resource create rsc_SAPHanaFil_<SID>_HDB<instance> \
    ocf:heartbeat:SAPHanaFilesystem \
    SID=<SID> \
    InstanceNumber=<instance> \
    ON_FAIL_ACTION="fence" \
    op start interval=0 timeout=10 \
    op stop interval=0 timeout=20 \
    op monitor interval=120 timeout=120 \
    clone cln_SAPHanaFil_<SID>_HDB<instance> \
    meta clone-node-max=1 interleave=true --future
    Copy to Clipboard

    ON_FAIL_ACTION=fence を設定する代わりに、ignore に設定できます。これは、最初に機能をテストするのに役立ちます。リソースは、システムログに情報を書き込みます。このログは、フェンス アクションの使用をアクティブにしたときにリソースが希望するアクションを実行するかどうかの評価に調べることができます。

検証

  1. SAPHanaTopology リソースのクローン作成を確認します。リソース設定の例:

    [root]# pcs resource config cln_SAPHanaTop_RH1_HDB02
    Clone: cln_SAPHanaTop_RH1_HDB02
      Meta Attributes: cln_SAPHanaTop_RH1_HDB02-meta_attributes
        clone-max=2
        clone-node-max=1
        interleave=true
      Resource: rsc_SAPHanaTop_RH1_HDB02 (class=ocf provider=heartbeat type=SAPHanaTopology)
        Attributes: rsc_SAPHanaTop_RH1_HDB02-instance_attributes
          InstanceNumber=02
          SID=RH1
        Operations:
          methods: rsc_SAPHanaTop_RH1_HDB02-methods-interval-0s
            interval=0s timeout=5
          monitor: rsc_SAPHanaTop_RH1_HDB02-monitor-interval-30
            interval=30 timeout=300
          reload: rsc_SAPHanaTop_RH1_HDB02-reload-interval-0s
            interval=0s timeout=5
          start: rsc_SAPHanaTop_RH1_HDB02-start-interval-0s
            interval=0s timeout=600
          stop: rsc_SAPHanaTop_RH1_HDB02-stop-interval-0s
            interval=0s timeout=300
    Copy to Clipboard
  2. SAPHanaController リソースクローンを確認します。リソース設定の例:

    [root]# pcs resource config cln_SAPHanaCon_RH1_HDB02
    Clone: cln_SAPHanaCon_RH1_HDB02
      Meta Attributes: cln_SAPHanaCon_RH1_HDB02-meta_attributes
        clone-max=2
        clone-node-max=1
        interleave=true
        promotable=true
      Resource: rsc_SAPHanaCon_RH1_HDB02 (class=ocf provider=heartbeat type=SAPHanaController)
        Attributes: rsc_SAPHanaCon_RH1_HDB02-instance_attributes
          AUTOMATED_REGISTER=false
          DUPLICATE_PRIMARY_TIMEOUT=7200
          InstanceNumber=02
          PREFER_SITE_TAKEOVER=true
          SID=RH1
        Meta Attributes: rsc_SAPHanaCon_RH1_HDB02-meta_attributes
          priority=100
        Operations:
          demote: rsc_SAPHanaCon_RH1_HDB02-demote-interval-0s
            interval=0s timeout=320
          methods: rsc_SAPHanaCon_RH1_HDB02-methods-interval-0s
            interval=0s timeout=5
          monitor: rsc_SAPHanaCon_RH1_HDB02-monitor-interval-59
            interval=59 timeout=700 role=Promoted
          monitor: rsc_SAPHanaCon_RH1_HDB02-monitor-interval-61
            interval=61 timeout=700 role=Unpromoted
          promote: rsc_SAPHanaCon_RH1_HDB02-promote-interval-0s
            interval=0s timeout=900
          reload: rsc_SAPHanaCon_RH1_HDB02-reload-interval-0s
            interval=0s timeout=5
          start: rsc_SAPHanaCon_RH1_HDB02-start-interval-0s
            interval=0s timeout=3600
          stop: rsc_SAPHanaCon_RH1_HDB02-stop-interval-0s
            interval=0s timeout=3600
    Copy to Clipboard
  3. 開始順序の制約が適用されていることを確認します。

    [root]# pcs constraint order
    Order Constraints:
      start resource 'cln_SAPHanaTop_RH1_HDB02' then start resource 'cln_SAPHanaCon_RH1_HDB02'
        symmetrical=0
    Copy to Clipboard
  4. オプション:作成した場合は、SAPHanaFilesystem リソースクローンを確認します。リソース設定の例:

    [root]# pcs resource config cln_SAPHanaFil_RH1_HDB02
    Clone: cln_SAPHanaFil_RH1_HDB02
      Meta Attributes: cln_SAPHanaFil_RH1_HDB02-meta_attributes
        clone-node-max=1
        interleave=true
      Resource: rsc_SAPHanaFil_RH1_HDB02 (class=ocf provider=heartbeat type=SAPHanaFilesystem)
        Attributes: rsc_SAPHanaFil_RH1_HDB02-instance_attributes
          InstanceNumber=02
          ON_FAIL_ACTION=fence
          SID=RH1
        Operations:
          methods: rsc_SAPHanaFil_RH1_HDB02-methods-interval-0s
            interval=0s timeout=5
          monitor: rsc_SAPHanaFil_RH1_HDB02-monitor-interval-120
            interval=120 timeout=120
          reload: rsc_SAPHanaFil_RH1_HDB02-reload-interval-0s
            interval=0s timeout=5
          start: rsc_SAPHanaFil_RH1_HDB02-start-interval-0
            interval=0 timeout=10
          stop: rsc_SAPHanaFil_RH1_HDB02-stop-interval-0
            interval=0 timeout=20
    Copy to Clipboard
  5. クラスターのステータスを確認します。use-- full を使用して、HANA リソースによって更新されるノード属性を含めます。

    [root]# pcs status --full
    ...
    
    Full List of Resources:
      * Clone Set: cln_SAPHanaTop_RH1_HDB02 [rsc_SAPHanaTop_RH1_HDB02]:
        * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node1
        * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node2
      * Clone Set: cln_SAPHanaCon_RH1_HDB02 [rsc_SAPHanaCon_RH1_HDB02] (promotable):
        * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Promoted node1
        * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Unpromoted node2
      * Clone Set: cln_SAPHanaFil_RH1_HDB02 [rsc_SAPHanaFil_RH1_HDB02]:
        * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node1
        * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node2
    
    Node Attributes:
      * Node: node1 (1):
        * hana_rh1_clone_state              : PROMOTED
        * hana_rh1_roles                    : master1:master:worker:master
        * hana_rh1_site                     : DC1
        * hana_rh1_srah                     : -
        * hana_rh1_version                  : 2.00.078.00
        * hana_rh1_vhost                    : node1
        * master-rsc_SAPHanaCon_RH1_HDB02   : 150
      * Node: node2 (2):
        * hana_rh1_clone_state              : DEMOTED
        * hana_rh1_roles                    : master1:master:worker:master
        * hana_rh1_site                     : DC2
        * hana_rh1_srah                     : -
        * hana_rh1_version                  : 2.00.078.00
        * hana_rh1_vhost                    : node2
        * master-rsc_SAPHanaCon_RH1_HDB02   : 100
    
    ...
    Copy to Clipboard
注記

リソース操作に対して表示されるタイムアウトは推奨されるデフォルトのみで、SAP HANA 環境に応じて調整できます。たとえば、大規模な SAP HANA データベースの起動には時間がかかるため、開始タイムアウトを増やす必要がある場合があります。

警告

AUTOMATED_REGISTERtrue に設定すると、データ損失や破損のリスクが増加する可能性があります。セカンダリー HANA インスタンスのデータが完全に同期していないときに HA クラスターがテイクオーバーをトリガーすると、新しいセカンダリー HANA インスタンスとして古いプライマリー HANA インスタンスを自動的に登録すると、このインスタンスでデータが失われます。テイクオーバーが発生する前に同期されなかったデータも失われます。

詳細については、SAP Technology Blog for Members: Be Prepared for Using Pacemaker Cluster for SAP HANA - Part 2: Failure of Both Nodes を参照してください。

5.8. 仮想 IP リソースの作成

SAP クライアントが、現在実行されているクラスターノードから独立してプライマリー HANA インスタンスにアクセスできるように、仮想 IP (VIP)リソースを設定する必要があります。プライマリーインスタンスが実行されているノードに自動的に移動するように VIP リソースを設定します。

VIP リソースに必要なリソースエージェントは、使用されるプラットフォームによって異なります。IPaddr2 リソースエージェントを使用してセットアップを実証しています。

前提条件

  • サービスの仮想 IP を予約している。

手順

  1. HA クラスターが実行されているプラットフォームに基づいて仮想 IP アドレスを管理するための適切なリソースエージェントを使用します。使用しているリソースエージェントに従ってパラメーターを調整します。たとえば、IPaddr2 エージェントを使用するなど、プライマリー仮想 IP のクラスターリソースを作成します。

    [root]# pcs resource create rsc_vip_<SID>_HDB<instance>_primary \
    ocf:heartbeat:IPaddr2 ip=<address> cidr_netmask=<netmask> nic=<device>
    Copy to Clipboard
    • &lt ;SID&gt; を HANA SID に置き換えます。
    • &lt ;instance&gt; を HANA インスタンス番号に置き換えます。
    • &lt ;address&gt;、<netmask& gt; 、および <device > をプライマリー仮想 IP アドレスの詳細に置き換えます。
  2. HANA プライマリーノードに SAPHanaController リソースを持つ VIP リソースを配置するクラスター制約を作成します。

    [root]# pcs constraint colocation add rsc_vip_<SID>_HDB<instance>_primary \
    with promoted cln_SAPHanaCon_<SID>_HDB<instance> 2000
    Copy to Clipboard

    この制約は、デフォルトの INFINITY の代わりにスコア 2000 を適用します。これにより、リソースの依存関係がソフトになり、昇格された SAPHanaController リソースがない場合に仮想 IP リソースがアクティブな状態を維持できるようになります。このようにして、この IP アドレスに到達して HANA インスタンスのステータス情報をクエリーできる SAP 管理コンソール(MMC)や SAP Landscape Management (LaMa)などのツールを引き続き使用できます。

検証

  1. 仮想 IP リソースのリソース設定を確認します。

    [root]# pcs resource config rsc_vip_RH1_HDB02_primary
    Resource: rsc_vip_RH1_HDB02_primary (class=ocf provider=heartbeat type=IPaddr2)
      Attributes: rsc_vip_RH1_HDB02_primary-instance_attributes
        cidr_netmask=32
        ip=192.168.1.100
        nic=eth0
      Operations:
        monitor: rsc_vip_RH1_HDB02_primary-monitor-interval-10s
          interval=10s timeout=20s
        start: rsc_vip_RH1_HDB02_primary-start-interval-0s
          interval=0s timeout=20s
        stop: rsc_vip_RH1_HDB02_primary-stop-interval-0s
          interval=0s timeout=20s
    Copy to Clipboard
  2. 制約が正しく定義されていることを確認します。

    [root]# pcs constraint colocation
    Colocation Constraints:
      Started resource 'rsc_vip_RH1_HDB02_primary' with Promoted resource 'cln_SAPHanaCon_RH1_HDB02'
        score=2000
    Copy to Clipboard

5.9. セカンダリー(読み取り対応)仮想 IP アドレスの追加

Active/Active (読み取り対応)セカンダリーセットアップをサポートするには、セカンダリー SAP HANA インスタンスへのクライアントアクセスを提供するために 2 番目の仮想 IP を追加する必要があります。

追加のルールを設定して、2 番目の仮想 IP が常に正常な SAP HANA インスタンスに関連付けられ、クライアントアクセスと可用性を最大化します。

  • 通常操作

    プライマリーおよびセカンダリー SAP HANA インスタンスの両方がアクティブでレプリケーションが同期している場合、2 番目の仮想 IP がセカンダリーノードに割り当てられます。

  • セカンダリーの同期が利用できないか、または out of sync

    セカンダリーインスタンスがダウンしているか、レプリケーションが同期していない場合、仮想 IP はプライマリーノードに移動します。システムレプリケーションが同期するとすぐに、自動的にセカンダリーノードに戻ります。

  • フェイルオーバーのシナリオ

    クラスターがテイクオーバーをトリガーすると、仮想 IP は同じノードに残ります。以前のプライマリーノードがセカンダリーロールを引き継ぎ、レプリケーションが再度同期されると、この仮想 IP はそれに応じて変化します。

前提条件

  • プライマリーを使用してシステムレプリケーション用にセカンダリー SAP HANA インスタンスを登録するときに、operationMode=logreplay_readaccess を設定 している。

手順

  1. HA クラスターが実行されているプラットフォームに基づいて仮想 IP アドレスを管理するための適切なリソースエージェントを使用します。使用しているリソースエージェントに従ってパラメーターを調整します。セカンダリー仮想 IP のクラスターリソースを作成します。たとえば、IPaddr2 エージェントを使用します。

    [root]# pcs resource create rsc_vip_<SID>_HDB<instance>_readonly \
    ocf:heartbeat:IPaddr2 ip=<address> cidr_netmask=<netmask> nic=<device>
    Copy to Clipboard
    • &lt ;SID&gt; を HANA SID に置き換えます。
    • &lt ;instance&gt; を HANA インスタンス番号に置き換えます。
    • &lt ;address&gt;、<netmask >、および < device > を、読み取り専用のセカンダリー仮想 IP アドレスの詳細に置き換えます。
  2. 通常の操作中にセカンダリー仮想 IP がセカンダリーインスタンスに割り当てられるように、場所の制約ルールを作成します。

    [root]# pcs constraint location rsc_vip_<SID>_HDB<instance>_readonly \
    rule score=INFINITY master-rsc_SAPHanaCon_<SID>_HDB<instance> eq 100 \
    and hana_<sid>_clone_state eq DEMOTED
    Copy to Clipboard
    • &lt ;SID&gt; を HANA SID に置き換えます。
    • &lt ;sid&gt; を小文字の HANA SID に置き換えます。
    • &lt ;instance&gt; を HANA インスタンス番号に置き換えます。
  3. 場所の制約ルールを作成して、必要に応じてセカンダリー仮想 IP がプライマリーインスタンスで代替として実行されるようにします。

    [root]# pcs constraint location rsc_vip_<SID>_HDB<instance>_readonly \
    rule score=2000 master-rsc_SAPHanaCon_<SID>_HDB<instance> eq 150 \
    and hana_<sid>_clone_state eq PROMOTED
    Copy to Clipboard

検証

  • 制約がクラスター設定の一部であることを確認します。

    [root]#  pcs constraint location
    Location Constraints:
      resource 'rsc_vip_RH1_HDB02_readonly'
        Rules:
          Rule: boolean-op=and score=INFINITY
            Expression: master-rsc_SAPHanaCon_RH1_HDB02 eq 100
            Expression: hana_rh1_clone_state eq DEMOTED
      resource 'rsc_vip_RH1_HDB02_readonly'
        Rules:
          Rule: boolean-op=and score=2000
            Expression: master-rsc_SAPHanaCon_RH1_HDB02 eq 150
            Expression: hana_rh1_clone_state eq PROMOTED
    Copy to Clipboard

第6章 セットアップのテスト

実稼働環境のワークロードに対して有効にする前に、新しい HANA HA クラスターを徹底的にテストしてください。

特定の要件を使用して、基本的なテストケースを強化します。

6.1. システムレプリケーション状態の変更の検出

HanaSR HA/DR プロバイダーの正しい機能をテストするには、システムレプリケーションを中断するときにログおよびクラスター属性の同期状態情報をモニターする必要があります。

このテストでは、プライマリーインスタンスは、システムレプリケーションのステータスを監視し、ログメッセージを確認するために使用されます。セカンダリーインスタンスは、セカンダリーインスタンスのインデックスサーバープロセスをフリーズして、プライマリーがそのままの状態でレプリケーションの問題をシミュレートします。

前提条件

  • 必須の HanaSR HA/DR プロバイダーを設定しました。
  • HANA インスタンスはすべてのクラスターノードの正常な状態にあり、システムレプリケーションが同期しています。

手順

  1. < sid>adm ユーザーとして、プライマリー インスタンスの HANA Python ディレクトリーに移動し、現在のシステムレプリケーションステータスを確認します。ACTIVE で、完全に同期されていることを確認します。

    rh1adm $ cdpy; python systemReplicationStatus.py
    Copy to Clipboard
  2. セカンダリーノードの属性概要で、srHook および srPoll クラスター属性が両方とも SOK であることを確認します。別のターミナルで任意のノードで root ユーザーとして以下のコマンドを実行し、属性の変更を追跡します。

    [root]# watch SAPHanaSR-showAttr
    ...
    Site lpt        lss mns   opMode    srHook srMode srPoll srr
    -------------------------------------------------------------
    DC2  10         4   node2 logreplay SOK    sync   SOK    S
    DC1  1745833771 4   node1 logreplay PRIM   sync   PRIM   P
    ...
    Copy to Clipboard

    デフォルトの 2 秒間隔で、ループで以下のコマンドを実行するには watch コマンドを使用します。

  3. セカンダリー インスタンスで、たとえば、HDB info 出力のPID列から、hdbindexserver プロセスのプロセス ID ( PID )を user < sid>adm として取得し ます。

    rh1adm $ HDB info
    Copy to Clipboard
  4. セカンダリー インスタンスで、STOP シグナルをプロセスに送信して hdbindexserver プロセスのハングをシミュレートします。これにより、プロセスがフリーズし、ノード間でインスタンスを通信して同期することをブロックします。プライマリーで行った場合の結果は同じではないため、必ずセカンダリーインスタンスでこれを実行してください。

    rh1adm $ kill -STOP <PID>
    Copy to Clipboard

検証

  1. プライマリー インスタンスで、変更についてシステムのレプリケーションステータスを確認します。

    rh1adm $ cdpy; watch python systemReplicationStatus.py
    ...
    |Database |Host  |Port  |Service Name |...|Secondary     |Replication |Replication |Replication                   |Secondary    |
    |         |      |      |             |...|Active Status |Mode        |Status      |Status Details                |Fully Synced |
    |-------- |----- |----- |------------ |...|------------- |----------- |----------- |----------------------------- |------------ |
    |SYSTEMDB |node1 |30201 |nameserver   |...|YES           |SYNC        |ACTIVE      |                              |        True |
    |RH1      |node1 |30207 |xsengine     |...|YES           |SYNC        |ACTIVE      |                              |        True |
    |RH1      |node1 |30203 |indexserver  |...|YES           |SYNC        |ERROR       |Log shipping timeout occurred |       False |
    
    status system replication site "2": ERROR
    overall system replication status: ERROR
    
    ...
    Copy to Clipboard

    1 ビット後に、indexserver サービスのレプリケーションステータスが ERROR に変わります。アイドルインスタンスでの反応に時間がかかる場合があります。1 分以上待機します。

  2. プライマリー インスタンスで、< sid>adm ユーザー として、HANA ネームサーバーログで関連するメッセージを確認します。

    rh1adm $ cdtrace; grep -he 'HanaSR.srConnectionChanged.*' nameserver_*
    ha_dr_provider   PythonProxyImpl.cpp(01113) : calling HA/DR provider HanaSR.hookDRConnectionChanged(hostname=node1, port=34203, volume=3, service_name=indexserver, database=RH1, status=11, database_status=11, system_status=11, timestamp=*****, is_in_sync=0, system_is_in_sync=0, reason=, siteName=DC2)
    ha_dr_HanaSR     HanaSR.py(00056) : HanaSR 1.001.1 HanaSR.srConnectionChanged method called with Dict={'hostname': 'node1', 'port': '34203', 'volume': 3, 'service_name': 'indexserver', 'database': 'RH1', 'status': 11, 'database_status': 11, 'system_status': 11, 'timestamp': '*****', 'is_in_sync': False, 'system_is_in_sync': False, 'reason': '', 'siteName': 'DC2'}
    ha_dr_HanaSR     HanaSR.py(00065) : HanaSR HanaSR.srConnectionChanged system_status=11 SID=RH1 in_sync=False reason=
    ha_dr_HanaSR     HanaSR.py(00091) : HanaSR.srConnectionChanged() CALLING CRM: <sudo /usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC2  -v SFAIL -t crm_config -s SAPHanaSR> ret_code=0
    Copy to Clipboard

    ネームサーバーログには、HANA が詳細でトリガーするイベントが含まれます。また、srHook クラスター属性を更新するために HanaSR フックスクリプトを実行する sudo コマンドも含まれます。

  3. システムレプリケーションステータス srHook および srPoll の両方のクラスター属性がセカンダリーの SFAIL ステータスを示していることを確認します。任意のノードで root ユーザーとして実行するか、手順 3 の open ターミナルを使用して変更を監視します。

    [root]# SAPHanaSR-showAttr
    ...
    Site lpt        lss mns   opMode    srHook srMode srPoll srr
    -------------------------------------------------------------
    DC2  10         4   node2 logreplay SFAIL  sync   SFAIL  S
    DC1  1745833771 4   node1 logreplay PRIM   sync   PRIM   P
    ...
    Copy to Clipboard
  4. セカンダリーインスタンスで、以前にフリーズした hdbindexserver PID のブロックを解除して、再度有効にします。

    rh1adm $ kill -CONT <PID>
    Copy to Clipboard
  5. 手順 1-3 を繰り返し、システムレプリケーションが少し後に完全に回復していることを確認します。リソースは実行中のままであるため、クラスターはこのテスト中にアクションをトリガーしません。

6.2. indexserver クラッシュリカバリーのトリガー

hdbindexserver プロセスのクラッシュをシミュレートして、ChkSrv HA/DR プロバイダーの機能をテストします。これは、プライマリーまたはセカンダリーインスタンスで実行できます。正確なリカバリーアクションは設定全体によって異なります。

前提条件

  • ChkSrv HA/DR プロバイダーを設定しました。このオプションフックが設定されていない場合は、このテストをスキップします。
  • HANA インスタンスには正常な HANA システムレプリケーションがあります。
  • クラスターのステータスに障害が発生していません。

手順

  1. 別のターミナルを使用して、HANA インスタンスのプロセスをユーザー < sid>adm として監視します。

    rh1adm $ watch "sapcontrol -nr ${TINSTANCE} -function GetProcessList | column -s ',' -t"
    Copy to Clipboard
  2. 別のターミナルで、hdbindexserver プロセスを強制終了します。

    rh1adm $ kill <PID>
    Copy to Clipboard

検証

  1. 同じインスタンスで専用の HANA トレースログを確認し、ユーザー < sid>adm としてイベントと関連するアクションを特定します。

    rh1adm $ cdtrace; less nameserver_chksrv.trc
    ...
    ChkSrv srServiceStateChanged method called with SAPSYSTEMNAME=RH1
    srv:indexserver-30203-stopping-yes db:RH1-3-yes daem:yes
    LOST: indexserver event looks like a lost indexserver (status=stopping)
    LOST: stop instance. action_on_lost=stop
    ChkSrv version 1.001.1. Method srServiceStateChanged method called.
    ...
    Copy to Clipboard
  2. クラスターのステータスにユーザー root でリソース障害情報を確認します。

    [root]# pcs status --full
    ...
    
    Failed Resource Actions:
      * rsc_SAPHanaCon_RH1_HDB02_start_0 on node1 'not running' (7): call=61, status='complete', ...
    
    ...
    Copy to Clipboard
  3. システムログで、クラスター側の関連するアクションをユーザー root として確認します。

    [root]# grep rsc_SAPHanaCon_RH1_HDB02 /var/log/messages
    ...
    SAPHanaController(rsc_SAPHanaCon_RH1_HDB02)[149199]: INFO: ##-2-## DEC: PRIMDEFECT (in DEMOTED status)
    SAPHanaController(rsc_SAPHanaCon_RH1_HDB02)[149206]: INFO: ##-2-## RA ==== end action monitor_clone with rc=7 (1.2.7) (3s; times=0m0.051s 0m0.079s 0m1.325s 0m1.137s)====
    pacemaker-controld[1694]: notice: Result of monitor operation for rsc_SAPHanaCon_RH1_HDB02 on node1: not running
    pacemaker-controld[1694]: notice: Transition 142 action 18 (rsc_SAPHanaCon_RH1_HDB02_monitor_61000 on node1): expected 'ok' but got 'not running'
    pacemaker-attrd[1692]: notice: Setting last-failure-rsc_SAPHanaCon_RH1_HDB02#monitor_61000[node1] in instance_attributes: (unset) -> 1746703980
    pacemaker-attrd[1692]: notice: Setting fail-count-rsc_SAPHanaCon_RH1_HDB02#monitor_61000[node1] in instance_attributes: (unset) -> 1
    pacemaker-attrd[1692]: notice: Setting master-rsc_SAPHanaCon_RH1_HDB02[node2] in instance_attributes: 100 -> 145
    pacemaker-schedulerd[1693]: warning: Unexpected result (not running) was recorded for monitor of rsc_SAPHanaCon_RH1_HDB02:0 on node1 at ...
    pacemaker-schedulerd[1693]: notice: Actions: Recover    rsc_SAPHanaCon_RH1_HDB02:0     (             Unpromoted node1 )
    pacemaker-controld[1694]: notice: Initiating monitor operation rsc_SAPHanaCon_RH1_HDB02_monitor_59000 on node2
    pacemaker-controld[1694]: notice: Initiating stop operation rsc_SAPHanaCon_RH1_HDB02_stop_0 locally on node1
    pacemaker-controld[1694]: notice: Requesting local execution of stop operation for rsc_SAPHanaCon_RH1_HDB02 on node1
    ...
    Copy to Clipboard

    次の SAPHanaController リソースモニターは、予期せず停止した HANA インスタンスを障害として報告し、設定に従って復旧手順を開始します。PREFER_SITE_TAKEOVER が有効で、テストがプライマリーインスタンスで実行された場合、セカンダリーインスタンスへの HANA テイクオーバーがトリガーされます。

次のステップ

6.3. クラスターコマンドを使用して HANA テイクオーバーをトリガーする

cluster コマンドを使用して、プロモートされたリソースを他のノードに移動し、予定されているプライマリーインスタンスのテイクオーバーをセカンダリーに手動でテストします。

前提条件

  • HANA インスタンスには正常な HANA システムレプリケーションがあります。
  • クラスターのステータスに障害が発生していません。

手順

  • プライマリーインスタンスをセカンダリーノードに切り替えます。任意のノードで root ユーザーとしてクラスターコマンドを実行します。

    [root]# pcs resource move cln_SAPHanaCon_<SID>_HDB<instance>
    Location constraint to move resource 'cln_SAPHanaCon_RH1_HDB02' has been created
    Waiting for the cluster to apply configuration changes...
    Location constraint created to move resource 'cln_SAPHanaCon_RH1_HDB02' has been removed
    Waiting for the cluster to apply configuration changes...
    resource 'cln_SAPHanaCon_RH1_HDB02' is promoted on node 'node2'
    Copy to Clipboard

検証

  • SAPHanaController リソースが他のノードでプロモートされたことを確認します。

    [root]# pcs status --full
    ...
      * Clone Set: cln_SAPHanaCon_RH1_HDB02 [rsc_SAPHanaCon_RH1_HDB02] (promotable):
        * rsc_SAPHanaCon_RH1_HDB02       (ocf:heartbeat:SAPHanaController):       Promoted node2
        * rsc_SAPHanaCon_RH1_HDB02       (ocf:heartbeat:SAPHanaController):       Stopped
    ...
    Copy to Clipboard

    以前のプライマリーインスタンスのステータスは、SAPHanaController リソースの AUTOMATED_REGISTER パラメーターによって異なります。AUTOMATED_REGISTERfalse の場合、インスタンスは手動で介入するまで停止します。そうでないと、インスタンスは自動的に再起動し、新しいセカンダリーインスタンスとして再登録されます。

次のステップ

6.4. SAPHanaFilesystem 障害アクションのトリガー

監視対象ディレクトリーへの書き込みアクセスをブロックして、SAPHanaFilesystem リソースの正しい動作をテストします。これは、両方のインスタンスでテストできます。プライマリーインスタンスのみが、障害および回復アクションをトリガーします。セカンダリーノードでは、リソースはアクションをトリガーしません。

前提条件

  • SAPHanaFilesystem リソースを設定している。このオプションのリソースが設定されていない場合は、このテストをスキップします。

手順

  1. SAPHanaFilesystem リソースがファイルシステムの読み取りおよび書き込みをテストするために使用する非表示ディレクトリーに移動します。

    [root]# cd /hana/shared/<SID>/.heartbeat_SAPHanaFilesystem/<node>
    Copy to Clipboard
  2. 既存の テスト ファイルがイミュータブルになるように設定します。これにより、リソースモニターによる書き込みアクセスができなくなります。

    [root]# chattr +i test
    Copy to Clipboard
  3. シミュレーションした障害中に動作を確認します。

    1. リソースアクションが ignore に設定されている場合は、/var/log/messages ファイルで関連するログメッセージを確認できます。

      [root]# grep ON_FAIL_ACTION /var/log/messages
      ... node1 SAPHanaFilesystem(rsc_SAPHanaFil_RH1_HDB02)[715184]: INFO: -2- RA monitor() ON_FAIL_ACTION=ignore => ignore FS error, do not create poison pill file
      Copy to Clipboard
    2. リソースのアクションが fence に設定されている場合は、フェンス の動作を確認できます。

      [root]# pcs status --full
      ...
      
      Failed Resource Actions:
        * rsc_SAPHanaFil_RH1_HDB02_stop_0 on node1 'error' (1): ...
      
      Pending Fencing Actions:
        * reboot of node1 pending: client=pacemaker-controld.1694, origin=node2
      Copy to Clipboard
  4. このブロッカーは、テスト後に再度削除する必要があります。ノードがフェンシングされている場合は、ノードを再度実行した後に以下を実行します。

    [root]# chattr -i test
    Copy to Clipboard

次のステップ

6.5. プライマリーインスタンスでのノードのクラッシュ

HANA クラスターリソースの動作をテストするために、プライマリーインスタンスが実行されているクラスターノードのクラッシュをシミュレートします。

前提条件

  • HANA インスタンスには正常な HANA システムレプリケーションがあります。
  • クラスターのステータスに障害が発生していません。

手順

  • プライマリーノードでクラッシュをトリガーします。このコマンドにより、これ以上警告を出さずにノードがクラッシュします。

    [root]# echo c > /proc/sysrq-trigger
    Copy to Clipboard

検証

  • セカンダリーノードのクラスターは、プライマリーノードをフェンスします。

    [root]# pcs status --full
    ...
    Pending Fencing Actions:
      * reboot of node1 pending: client=pacemaker-controld.1685, origin=node2
    ...
    Copy to Clipboard
  • セカンダリーが引き継ぎ、新しいプライマリーとして昇格されます。
  • フェンシングされた以前のプライマリーノードは、フェンシングおよび SAPHanaController リソース設定に従って回復します。

次のステップ

6.6. セカンダリーインスタンスでのノードのクラッシュ

HANA クラスターリソースの動作をテストするために、セカンダリーインスタンスが実行されているクラスターノードのクラッシュをシミュレートします。

手順

  • セカンダリーノードでクラッシュをトリガーします。このコマンドにより、これ以上警告を出さずにノードがクラッシュします。

    [root]# echo c > /proc/sysrq-trigger
    Copy to Clipboard

検証

  • プライマリーノードのクラスターは、セカンダリーノードをフェンスします。

    [root]# pcs status --full
    ...
    Pending Fencing Actions:
      * reboot of node2 pending: client=pacemaker-controld.1694, origin=node1
    ...
    Copy to Clipboard
  • セカンダリーノードの再起動および復旧中は、プライマリーインスタンスが実行されたままになります。フェンシングされたノードのリカバリーは、フェンシングの設定によって異なります。

次のステップ

6.7. SAP コマンドを使用したプライマリーインスタンスの停止

HANA コマンドを使用してクラスター外でプライマリー HANA インスタンスを管理する場合に、クラスターの動作をテストします。

クラスターは HANA コマンドの実行を認識しないため、障害として変更を検出し、設定された回復アクションをトリガーします。

前提条件

  • HANA インスタンスには正常な HANA システムレプリケーションがあります。
  • クラスターのステータスに障害が発生していません。

手順

  • クラスター外の < sid>adm ユーザーとしてプライマリーインスタンスを停止します。

    rh1adm $ HDB stop
    Copy to Clipboard

検証

  • クラスターは停止したインスタンスを障害として認識し、プライマリーインスタンスの復旧を開始します。

    [root]# pcs status --full
    ...
    Migration Summary:
      * Node: node1 (1):
        * rsc_SAPHanaCon_RH1_HDB02: migration-threshold=5000 fail-count=1 last-failure=...
    
    Failed Resource Actions:
      * rsc_SAPHanaCon_RH1_HDB02_monitor_61000 on node1 'not running' ...
    Copy to Clipboard

    SAPHanaController リソースで PREFER_SITE_TAKEOVER パラメーターと AUTOMATED_REGISTER パラメーターの両方を設定して有効にした場合、クラスターはセカンダリーインスタンスに HANA のテイクオーバーをトリガーし、失敗したプライマリーを新しいセカンダリーとして自動的に登録します。それ以外の場合は、設定に従って障害が発生したプライマリーを復元します。

次のステップ

6.8. SAP コマンドを使用したセカンダリーインスタンスの停止

HANA コマンドを使用してクラスター外でセカンダリー HANA インスタンスを管理する場合に、クラスターの動作をテストします。

クラスターは HANA コマンドの実行を認識しないため、障害として変更を検出し、設定された回復アクションをトリガーします。

前提条件

  • クラスターのステータスに障害が発生していません。

手順

  • クラスター外の < sid>adm ユーザーとしてセカンダリーインスタンスを停止します。

    rh1adm $ HDB stop
    Copy to Clipboard

検証

  • クラスターは停止したインスタンスの障害に気づき、セカンダリーを復元します。

    [root]# pcs status --full
    ...
    Migration Summary:
      * Node: node2 (2):
        * rsc_SAPHanaCon_RH1_HDB02: migration-threshold=5000 fail-count=1 last-failure=...
    
    Failed Resource Actions:
      * rsc_SAPHanaCon_RH1_HDB02_monitor_61000 on node2 'not running' ...
    Copy to Clipboard

次のステップ

第7章 セットアップの完了

最終的なセットアップが完了し、システムとリソースが正常であることを確認してから、実稼働環境のワークロード用の環境を有効にできます。

7.1. テイクオーバー後の HANA の自動登録の有効化

以前に障害が発生したプライマリーインスタンスを、データの一貫性を手動で検証せずに完全に機能するセカンダリーインスタンスとして自動的に回復する場合は、SAPHanaController リソースを有効にして、テイクオーバー直後にインスタンスを再登録できます。

これにより、以前に障害が発生したプライマリーインスタンスは、HANA システムのレプリケーションを続行し、新しいプライマリーインスタンスの新しい障害が発生した場合に自動的に引き継がれます。

HANA オペレーターは、最初に以前に失敗したインスタンスの正常性を手動で確認し、後でインスタンスを再登録する必要があるかどうかを決定する必要があります。または、優先度が完全な高可用性の自動リカバリーに準拠しているかどうかを決定する必要があります。

手順

  • SAPHanaController リソースを更新し、デフォルトの AUTOMATED_REGISTER をオーバーライドします。

    [root]# pcs resource update rsc_SAPHanaCon_<SID>_HDB<instance> AUTOMATED_REGISTER=true
    Copy to Clipboard

検証

  • AUTOMATED_REGISTERtrue に設定されていることを確認します。

    [root]# pcs resource config rsc_SAPHanaCon_RH1_HDB02
    Resource: rsc_SAPHanaCon_RH1_HDB02 (class=ocf provider=heartbeat type=SAPHanaController)
      Attributes: rsc_SAPHanaCon_RH1_HDB02-instance_attributes
        AUTOMATED_REGISTER=true
        DUPLICATE_PRIMARY_TIMEOUT=7200
        InstanceNumber=02
        PREFER_SITE_TAKEOVER=true
        SID=RH1
    ...
    Copy to Clipboard
警告

AUTOMATED_REGISTERtrue に設定すると、データ損失や破損のリスクが増加する可能性があります。セカンダリー HANA インスタンスのデータが完全に同期していないときに HA クラスターがテイクオーバーをトリガーすると、新しいセカンダリー HANA インスタンスとして古いプライマリー HANA インスタンスを自動的に登録すると、このインスタンスでデータが失われます。テイクオーバーが発生する前に同期されなかったデータも失われます。

詳細については、SAP Technology Blog for Members: Be Prepared for Using Pacemaker Cluster for SAP HANA - Part 2: Failure of Both Nodes を参照してください。

7.2. 最終的なクラスター状態の確認

HANA システムレプリケーションセットアップ用の 2 ノードクラスターの設定後、ステータスは以下の例のようになります。

オプションの SAPHanaFilesystem リソースを設定しておらず、セカンダリーインスタンスでの読み取り専用アクセス用にオプションの 2 番目の仮想 IP を設定しなかった場合、設定は例と若干異なる可能性があります。

また、システムの起動時にクラスターサービスを無効にして、自動的に起動しないようにすることもできます。これには、システムの起動ごとに手動の介入が必要ですが、起動の制御と監視が強化されます。

[root]# pcs status --full
...

Cluster name: node1-node2-cluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: node2 (2) (version 2.1.7-5.2.el9_4-0f7f88312) - partition with quorum
  * Last updated: Thu May  8 13:49:46 2025 on node1
  * Last change:  Thu May  8 13:49:14 2025 by root via root on node1
  * 2 nodes configured
  * 9 resource instances configured

Node List:
  * Node node1 (1): online, feature set 3.19.0
  * Node node2 (2): online, feature set 3.19.0

Full List of Resources:
  * Clone Set: cln_SAPHanaTop_RH1_HDB02 [rsc_SAPHanaTop_RH1_HDB02]:
    * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node1
    * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node2
  * Clone Set: cln_SAPHanaCon_RH1_HDB02 [rsc_SAPHanaCon_RH1_HDB02] (promotable):
    * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Promoted node1
    * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Unpromoted node2
  * Clone Set: cln_SAPHanaFil_RH1_HDB02 [rsc_SAPHanaFil_RH1_HDB02]:
    * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node1
    * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node2
  * rsc_vip_RH1_HDB02_primary   (ocf:heartbeat:IPaddr2):         Started node1
  * rsc_vip_RH1_HDB02_readonly  (ocf:heartbeat:IPaddr2):         Started node2

Node Attributes:
  * Node: node1 (1):
    * hana_rh1_clone_state              : PROMOTED
    * hana_rh1_roles                    : master1:master:worker:master
    * hana_rh1_site                     : DC1
    * hana_rh1_sra                      : -
    * hana_rh1_srah                     : -
    * hana_rh1_version                  : 2.00.078.00
    * hana_rh1_vhost                    : node1
    * master-rsc_SAPHanaCon_RH1_HDB02   : 150
  * Node: node2 (2):
    * hana_rh1_clone_state              : DEMOTED
    * hana_rh1_roles                    : master1:master:worker:master
    * hana_rh1_site                     : DC2
    * hana_rh1_sra                      : -
    * hana_rh1_srah                     : -
    * hana_rh1_version                  : 2.00.078.00
    * hana_rh1_vhost                    : node2
    * master-rsc_SAPHanaCon_RH1_HDB02   : 100

Migration Summary:

Tickets:

PCSD Status:
  node1: Online
  node2: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
Copy to Clipboard


完全な正常なセットアップでは、追加のクラスター属性が以下の例のように表示されます。

[root]# SAPHanaSR-showAttr
Global cib-update dcid prim sec sid topology
---------------------------------------------
global 0.550.2    2    DC1  DC2 RH1 ScaleUp

Resource                 promotable
------------------------------------
cln_SAPHanaCon_RH1_HDB02 true
cln_SAPHanaTop_RH1_HDB02

Site lpt        lss mns   opMode    srHook srMode srPoll srr
-------------------------------------------------------------
DC2  30         4   node2 logreplay SOK    sync   SOK    S
DC1  1746780164 4   node1 logreplay PRIM   sync   PRIM   P

Host  clone_state roles                        score site srah version     vhost
---------------------------------------------------------------------------------
node1 PROMOTED    master1:master:worker:master 150   DC1  -    2.00.078.00 node1
node2 DEMOTED     master1:master:worker:master 100   DC2  -    2.00.078.00 node2
Copy to Clipboard

第8章 メンテナンス手順

SAP HANA システムレプリケーション HA 環境のさまざまなコンポーネントのメンテナンスを実行できるように、クラスターが計画外の影響を生じないように、特定の手順を適用する必要があります。

メンテナンス手順を使用して、計画的な変更アクティビティー中にクラスターを正常な状態に維持するか、計画外のインシデントの後に健全性を復元します。

8.1. 障害履歴のクリーンアップ

以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。これにより、障害カウンターと移行のしきい値がリセットされます。

手順

  1. リソースの障害をクリーンアップします。

    [root]# pcs resource cleanup
    Copy to Clipboard
  2. STONITH の失敗履歴をクリーンアップします。

    [root]# pcs stonith history cleanup
    Copy to Clipboard

検証

  • クラスター全体のステータスを確認し、障害が表示されていないことを確認します。

    [root]# pcs status --full
    Copy to Clipboard
  • フェンシングアクションの stonith の履歴に 0 のイベントがあることを確認します。
[root]# pcs stonith history
Copy to Clipboard

8.2. クラスターコマンドを使用して HANA テイクオーバーをトリガーする

クラスター制御を使用して、プライマリーインスタンスの単純なテイクオーバーを他のノードに対して実行します。

詳細な手順は、セットアップのテスト - クラスターコマンドを使用した HANA テイクオーバーのトリガー セクションを参照してください

8.3. OS と HA クラスターコンポーネントの更新

HA クラスター、OS、またはシステムハードウェアの更新またはオフラインの変更については、Recommended Practices for Applying Software Updates to a RHEL High Availability or Resilient Storage Cluster に従う必要があります。

8.4. SAP HANA インスタンスでのメンテナンスの実行

HA クラスターが管理するあらゆる種類のアプリケーションまたはその他のコンポーネントについては、クラスター メンテナンスモードを有効にして、メンテナンス 中にクラスターが干渉されないようにする必要があります。

HANA インスタンスの更新中、クラスターは実行中のままになりますが、リソースをアクティブに監視したり、アクションを実行したりすることはありません。HANA インスタンスの変更が完了した後、クラスターリソースのステータスを更新し、検出されたリソースの状態がすべて正しいことを確認することが重要です。また、クラスターの予期しないアクションなしに、再度メンテナンスモードを無効にすることが可能です。

メンテナンスアクティビティーのためにクラスターを停止する必要がある場合は、最初に メンテナンス モードを設定していることを確認してから、HANA メンテナンスに必要なとおりに、ノードでクラスターを停止して起動します。

前提条件

  • HANA システムレプリケーションを管理するために Pacemaker クラスターを設定しました。

手順

  1. クラスター全体の メンテナンス モードを設定します。

    [root]# pcs property set maintenance-mode=true
    Copy to Clipboard

    クラスター全体でメンテナンスを設定すると、メンテナンスフェーズでアクティビティーがクラスターアクションをトリガーできなくなり、HANA の更新プロセスに影響が及ぶようになります。

  2. クラスターリソース管理が完全に無効になっていることを確認します。

    [root]# pcs status
    ...
    
                  *** Resource management is DISABLED ***
      The cluster will not attempt to start, stop or recover services
    
    Node List:
      * Online: [ node1 node2 ]
    
    Full List of Resources:
      * Clone Set: cln_SAPHanaTop_RH1_HDB02 [rsc_SAPHanaTop_RH1_HDB02] (maintenance):
        * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node2 (maintenance)
        * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node1 (maintenance)
      * Clone Set: cln_SAPHanaCon_RH1_HDB02 [rsc_SAPHanaCon_RH1_HDB02] (promotable, maintenance):
        * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Unpromoted node2 (maintenance)
        * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Promoted node1 (maintenance)
      * Clone Set: cln_SAPHanaFil_RH1_HDB02 [rsc_SAPHanaFil_RH1_HDB02] (maintenance):
        * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node2 (maintenance)
        * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node1 (maintenance)
      * rsc_vip_RH1_HDB02_primary   (ocf:heartbeat:IPaddr2):         Started node1 (maintenance)
      * rsc_vip_RH1_HDB02_readonly  (ocf:heartbeat:IPaddr2):         Started node2 (maintenance)
    
    ...
    Copy to Clipboard
  3. SAP 手順を使用して HANA インスタンスを更新します。HANA の更新中にテイクオーバーを実行する必要がある場合は、Handshake で SAP HANA Takeover を使用できます。詳細は、Is it possible to use SAP HANA "Takeover with Handshake" option with the HA Solutions for managing HANA System Replication? を参照してください。

    この手順でクラスターを停止した場合は、次の手順に進む前に、そのクラスターを再起動してください。メンテナンスモードを有効のままにしておきます。

  4. HANA の更新後、HANA システムレプリケーションが正しく機能していることを確認します。systemReplicationStatus.py スクリプトを使用して、プライマリーインスタンスで HANA システムレプリケーションのステータスを表示します。以下は、メンテナンス中に node2 への手動テイクオーバーの例になります。

    [root]# su - <sid>adm
    
    rh1adm $ cdpy; python systemReplicationStatus.py --sapcontrol=1 | grep -i replication_status=
    service/node2/30201/REPLICATION_STATUS=ACTIVE
    service/node2/30207/REPLICATION_STATUS=ACTIVE
    service/node2/30203/REPLICATION_STATUS=ACTIVE
    site/1/REPLICATION_STATUS=ACTIVE
    overall_replication_status=ACTIVE
    Copy to Clipboard

    続行する前に、システムレプリケーションが正常であり、ACTIVE として報告されていることを確認します。

  5. すべてのクラスターリソースを更新して、1 つの監視操作を実行し、それらのステータスを更新します。

    [root]# pcs resource refresh
    Waiting for 1 reply from the controller
    ... got reply (done)
    Copy to Clipboard

    HANA リソースによるクラスターおよびノードの属性を更新して、新しい HANA システムのレプリケーションステータスを反映することが重要です。メンテナンスの停止後、クラスターに正しい情報があり、誤ったステータス情報が原因でリカバリーアクションがトリガーされないようにします。

  6. クラスターのステータスを確認し、リソースのステータスとメインの HANA リソーススコア属性を確認します。すべてのリソースは Started として表示され、昇格可能なリソースがすべてのノードで Unpromoted と表示される必要があります。

    [root]# pcs status
    ...
    Full List of Resources:
      * Clone Set: cln_SAPHanaTop_RH1_HDB02 [rsc_SAPHanaTop_RH1_HDB02] (maintenance):
        * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node2 (maintenance)
        * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node1 (maintenance)
      * Clone Set: cln_SAPHanaCon_RH1_HDB02 [rsc_SAPHanaCon_RH1_HDB02] (promotable, maintenance):
        * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Unpromoted node2 (maintenance)
        * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Unpromoted node1 (maintenance)
      * Clone Set: cln_SAPHanaFil_RH1_HDB02 [rsc_SAPHanaFil_RH1_HDB02] (maintenance):
        * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node2 (maintenance)
        * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node1 (maintenance)
      * rsc_vip_RH1_HDB02_primary   (ocf:heartbeat:IPaddr2):         Started node1 (maintenance)
      * rsc_vip_RH1_HDB02_readonly  (ocf:heartbeat:IPaddr2):         Started node2 (maintenance)
    
    ...
    Copy to Clipboard
  7. クラスター属性を確認し、srHookroles、および score 属性が正しい新しい状態にあることを確認します。

    [root]# SAPHanaSR-showAttr
    ...
    
    Site lpt        lss mns   opMode    srHook srMode srPoll srr
    -------------------------------------------------------------
    DC2  1746793335 4   node2 logreplay PRIM   sync   SOK    S
    DC1  30         4   node1 logreplay SOK    sync   PRIM   P
    
    Host  clone_state roles                        score site sra srah version     vhost
    -------------------------------------------------------------------------------------
    node1 DEMOTED     master1:master:worker:master 100   DC1  -   -    2.00.078.00 node1
    node2 DEMOTED     master1:master:worker:master 150   DC2  -   -    2.00.078.00 node2
    Copy to Clipboard
    • srHook はプライマリーインスタンスを実行しているノード上の PRIM であり、正しいセカンダリーに SOK を示します。
    • プライマリーが実行されているノードの スコア150 で、他方では 100 です。
  8. ステップ 6 と 7 をチェックして、予想される正常な状態の landscape が示されたら、クラスターのメンテナンスモードを再度削除できます。

    [root]# pcs property set maintenance-mode=
    Copy to Clipboard

    メンテナンスを解除すると、すべてのリソースのモニター実行がトリガーされます。クラスターは、昇格可能なリソースのステータスを Promoted および Unpromoted に、プライマリーインスタンスとセカンダリーインスタンスの場所に対応して更新します。リソースは、srHook 属性値に一致するように、srPoll 属性も再度更新するようになりました。

8.5. テイクオーバー後の以前のプライマリーの登録

デフォルトの SAPHanaController リソースで AUTOMATED_REGISTER=false を設定する場合、テイクオーバー後に以前のプライマリーインスタンスを新しいセカンダリーとして手動で登録して起動する必要があります。それ以外の場合、未登録のインスタンスは停止されたままになります。

手順

  1. 以前のプライマリーを新しいセカンダリーとして登録します。停止した以前のプライマリーインスタンスで、ユーザー & lt;sid>adm として実行します。

    rh1adm $ hdbnsutil -sr_register --remoteHost=<node> \
    --remoteInstance=${TINSTANCE} --replicationMode=sync \
    --operationMode=logreplay --name=<DC>
    Copy to Clipboard
    • &lt ;node& gt; を新しいプライマリーインスタンスホストに置き換えます。node1 から node2 へのテイクオーバーがある場合は、node2 などに置き換えます。
    • & lt;DC& gt; を新しいセカンダリー HANA サイト名に置き換えます(node1 がセカンダリーとして登録される場合など)。
    • システムレプリケーションの要件に応じて、replicationModeoperationMode の値を選択します。
    • TINSTANCE は、HANA インスタンスプロファイルを読み取ることでユーザー < sid>adm に対して自動的に設定される環境変数です。変数の値は HANA インスタンス番号です。
  2. セカンダリー HANA インスタンスを起動します。新しいセカンダリーインスタンスノードで < sid>adm として実行します。

    rh1adm $ HDB start
    Copy to Clipboard

検証

  • 現在のプライマリーインスタンスで、再確立された HANA システムレプリケーションの現在のステータスを表示します。以下は、テイクオーバー後の例で、セカンダリーインスタンスが node1 に再登録された例です。

    rh1adm $ cdpy; python systemReplicationStatus.py
    |Database |Host     |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replication    |Secondary    |
    |         |         |      |             |          |        |          |Host      |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status Details |Fully Synced |
    |-------- |-------- |----- |------------ |--------- |------- |--------- |----------|--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
    |SYSTEMDB |node2    |30001 |nameserver   |        1 |      2 |DC2       |node1     |    30001 |        1 |DC1       |YES           |SYNC        |ACTIVE      |               |        True |
    |RH1      |node2    |30007 |xsengine     |        2 |      2 |DC2       |node1     |    30007 |        1 |DC1       |YES           |SYNC        |ACTIVE      |               |        True |
    |RH1      |node2    |30003 |indexserver  |        3 |      2 |DC2       |node1     |    30003 |        1 |DC1       |YES           |SYNC        |ACTIVE      |               |        True |
    
    status system replication site "1": ACTIVE
    overall system replication status: ACTIVE
    
    Local System Replication State
    ~~~~~~~~~~
    
    mode: PRIMARY
    site id: 2
    site name: DC2
    Copy to Clipboard

第9章 トラブルシューティング

9.1. srHook クラスター属性値が正しくありません

srHook 属性の値が実際の HANA システムレプリケーションステータスと一致しない場合は、プライマリーインスタンスに障害が発生した場合にクラスターで予期しない動作が発生する可能性があります。

セカンダリーインスタンスの srHook 属性と HANA システムレプリケーションステータスが一致しない場合は、sudo 設定を確認して修正します。

  • セカンダリーの srHook クラスター属性は空です。
  • セカンダリーの srHook クラスター属性は SOK に設定されますが、HANA システムレプリケーションは正常ではありません。
  • セカンダリーの srHook クラスター属性は SFAIL に設定され、システムレプリケーションは ACTIVE 状態です。

プライマリーインスタンスは、HANA システムレプリケーションの変更のイベントを受け取り、結果をセカンダリーインスタンスの cluster 属性として保存します。

手順

  1. コマンドが sudo を使用して実行されるため、secure ログで crm_attribute 更新エラーの有無を確認します。ログは、フックスクリプトが実行しようとするが、失敗する可能性があるコマンドを示しています。次の例のように、プライマリー インスタンスノードで command not allowed のようなエラーを確認します。

    [root]# grep crm_attribute /var/log/secure
    ... rh1adm : command not allowed ; 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
    Copy to Clipboard
  2. ログに記録された COMMAND を、sudoers 設定と比較します。sudoers ファイルを完全に確認し、コマンドに一致する sudo エントリーがあることを確認します。一時的な措置として、このような sudo エントリーが機能するようにするには、原因としてコマンドパラメーターの誤りを除外するためのワイルドカードを使用して単純化します。

    [root]# cat /etc/sudoers.d/20-saphana
    <sid>adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute *
    Defaults:<sid>adm !requiretty
    Copy to Clipboard

    &lt ;sid&gt; を小文字の HANA SID に置き換えます。

  3. コマンドパスが正しいことを確認します。

    [root]# ls /usr/sbin/crm_attribute
    /usr/sbin/crm_attribute
    Copy to Clipboard
  4. sudo 設定を変更します。詳細は、Configuring the HanaSR HA/DR provider for the srConnectionChanged ()hook method を参照してください。
  5. 他のノードで修正手順を繰り返します。sudo 設定は、すべてのインスタンスで同一である必要があります。

9.2. フックの変更後に HANA インスタンスが起動しない

最近 HA/DR プロバイダーセクションの global.ini が変更され、HANA インスタンスが起動しなくなりました。

手順

  1. < sid>adm ユーザーとして、HANA トレースログディレクトリーに移動します。

    rh1adm $ cdtrace
    Copy to Clipboard
  2. HANA nameserver アラートログで HA/DR プロバイダーに関連するエラーをチェックします。

    rh1adm $ grep ha_dr_provider nameserver_alert_*.trc
    ... ha_dr_provider   PythonProxyImpl.cpp(00145) : import of hanasr failed: No module named 'hanasr'
    ... ha_dr_provider   HADRProviderManager.cpp(00100) : could not load HA/DR Provider 'hanasr' from /usr/share/sap-hana-ha/
    Copy to Clipboard
  3. 誤った HA/DR プロバイダー 名や誤った パス など、根本原因を特定します。パスとフックスクリプト名を確認します。この例では、HA/DR プロバイダー名 hanasr はフックスクリプト名 HanaSR に一致していません。

    rh1adm $ ls /usr/share/sap-hana-ha/
    ChkSrv.py  HanaSR.py  samples
    Copy to Clipboard
  4. HanaSR HA/DR プロバイダー設定を修正します。

    [ha_dr_provider_hanasr]
    provider = HanaSR
    path = /usr/share/sap-hana-ha/
    execution_order = 1
    
    [trace]
    ha_dr_hanasr = info
    Copy to Clipboard
    • プロバイダー は Python フックスクリプトの名前と一致する必要があります。.py ファイル接尾辞なしで大文字と小文字が区別されます。
    • パス は、フックスクリプトが保存されるパスである必要があります。

9.3. クラスターノードは、メンテナンス中にオフラインと報告されます。

HANA の更新など、クラスターに maintenance-mode が設定されている場合、ノード間の問題は確認できますが、リカバリーアクションはまだトリガーされません。

このような状況が発生した場合は、メンテナンスモードを解除する前に、まず問題の原因を修正する必要があります。

例:ノード間の corosync 通信がブロックされている

どちらのノードも他のノードを オフライン と報告します。この状況で メンテナンス モードが削除された場合、クラスターはフェンシング 1 つのノードによって回復を試みます。これにより、継続中の HANA メンテナンスアクティビティーに重大な影響を与える可能性があります。

...
               *** Resource management is DISABLED ***
  The cluster will not attempt to start, stop or recover services

Node List:
  * Node hana1 (1): online, feature set 3.19.0
  * Node hana2 (2): UNCLEAN (offline)

Full List of Resources:
  * Clone Set: cln_SAPHanaTop_RH1_HDB02 [rsc_SAPHanaTop_RH1_HDB02] (maintenance):
    * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started hana2 (UNCLEAN, maintenance)
    * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started hana1 (maintenance)
  * Clone Set: cln_SAPHanaCon_RH1_HDB02 [rsc_SAPHanaCon_RH1_HDB02] (promotable, maintenance):
    * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Unpromoted hana2 (UNCLEAN, maintenance)
    * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Promoted hana1 (maintenance)
  * Clone Set: cln_SAPHanaFil_RH1_HDB02 [rsc_SAPHanaFil_RH1_HDB02] (maintenance):
    * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started hana2 (UNCLEAN, maintenance)
    * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started hana1 (maintenance)
  * rsc_vip_RH1_HDB02_primary   (ocf:heartbeat:IPaddr2):         Started hana1 (maintenance)
  * rsc_vip_RH1_HDB02_readonly  (ocf:heartbeat:IPaddr2):         Started hana2 (UNCLEAN, maintenance)

...
Copy to Clipboard

以下の例のように、問題の根本原因を特定します。

  • クラスター通信接続で、HANA メンテナンスと並行して計画されたネットワークメンテナンス。
  • ネットワークデバイスの障害や OS またはネットワークレベルの設定ミスによるネットワーク接続の予定外停止。
  • ファイアウォール設定は、クラスター通信ポートをブロックします。

クラスターメンテナンスが削除されたときにクラスターがリカバリー措置を受けないように、すべての問題を修正します。

付録A コンポーネントのオプション

A.1. HanaSR 用 HA/DR プロバイダーオプション

HanaSR HA/DR プロバイダーの設定に使用できるパラメーターを以下に示します。

プロバイダーオプション必須デフォルト説明

Provider = HanaSR

yes

 

provider パラメーターは、.py 終了なしでフックスクリプト名に設定する必要があります。

path = /usr/share/sap-hana-ha/

yes

 

フックスクリプトの場所への完全パス。

execution_order = 1

yes

 

1 に設定すると、イベント発生時に HanaSR HA/DR プロバイダーが常に他のオプションのフックスクリプトよりも先に実行されるようにします。

A.2. ChkSrv 用 HA/DR プロバイダーオプション

ChkSrv HA/DR プロバイダーの設定に使用できるパラメーターは以下のとおりです。

プロバイダーオプション必須デフォルト説明

provider = ChkSrv

yes

 

provider パラメーターは、.py 終了なしでフックスクリプト名に設定する必要があります。

path = /usr/share/sap-hana-ha/

yes

 

フックスクリプトの場所への完全パス。

execution_order = 2

yes

 

2 以降に設定します。必須の HanaSR プロバイダーは常に最初に実行する必要があります。

action_on_lost

いいえ

ignore

失われたインデックスサーバーが特定されたときにトリガーされるアクション。

  • ignore:何もせず、トレースファイルに書き込むだけです。
  • stop: sapcontrol …​ StopSystem を実行します。
  • kill: HDB kill-<signal> を実行し ます。シグナルは、個別のパラメーター kill_signal で定義できます。

kill_signal

いいえ

9

kill アクションで使用されるシグナル。

stop_timeout

いいえ

20s

stop アクションが返されるまで待機する秒数。この値は、HANA パラメーター forcedterminationtimeout の値よりも大きくする必要があります。

A.3. SAPHanaTopology リソースパラメーター

SAPHanaTopology リソースの設定に使用できるパラメーターを以下に示します。

リソースオプション必須デフォルト説明

SID

yes

 

SAP システム識別子。

InstanceNumber

yes

 

SAP HANA インスタンスの数。

HANA_CALL_TIMEOUT

いいえ

120

タイムアウトを定義します。たとえば、リソースエージェントが landscapeHostConfiguration.py を実行するときなど、情報を受け取るための HANA への呼び出しにかかる時間。独自のタイムアウト値を持つ HANA への特定の呼び出しがあります。

このリソースの HANA 呼び出しのタイムアウトを増やす場合は、同じリソースの操作タイムアウト値を増やすことも考慮する必要があります。

A.4. SAPHANAController リソースパラメーター

SAPHanaController リソースの設定に使用できるパラメーターを以下に示します。

リソースオプション必須デフォルト説明

SID

yes

 

SAP システム識別子。

InstanceNumber

yes

 

SAP HANA インスタンスの数。

DIR_EXECUTABLE

いいえ

 

sapstartsrvsapcontrol などのバイナリーへの完全修飾パス。デフォルトの SAP インストール後に SAP カーネルディレクトリーの場所を変更した場合、このパラメーターを指定します。

デフォルトでは、SAP の標準パスが検索されます。

DIR_PROFILE

いいえ

 

SAP START プロファイルへの完全修飾パス。デフォルトの SAP インストール後に SAP プロファイルディレクトリーの場所を変更した場合、このパラメーターを指定します。

デフォルトでは、SAP の標準パスが検索されます。

HANA_CALL_TIMEOUT

いいえ

120

タイムアウトを定義します。たとえば、リソースエージェントが landscapeHostConfiguration.py を実行するときなど、情報を受け取るための HANA への呼び出しにかかる時間。独自のタイムアウト値を持つ HANA への特定の呼び出しがあります。

このリソースの HANA 呼び出しのタイムアウトを増やす場合は、同じリソースの操作タイムアウト値を増やすことも考慮する必要があります。

INSTANCE_PROFILE

いいえ

 

SAP HANA インスタンスプロファイルの名前。デフォルトの SAP インストール後に SAP HANA インスタンスプロファイルの名前を変更した場合、このパラメーターを指定します。

デフォルトでは、SAP の標準パスが検索されます。

PREFER_SITE_TAKEOVER

いいえ

false

プライマリーサイトをローカルで再起動するのではなく、リソースエージェントがセカンダリーサイトへのテイクオーバーをトリガーするかどうかを定義します。ただし、テイクオーバーは、SAP HANA ランドスケープのステータスが ERROR にある場合にのみトリガーされます。FATAL の場合、ローカルの再起動が開始されます。

  • true: セカンダリーサイトへのテイクオーバーをトリガーすることを優先します。
  • false: ローカルで再起動することが推奨されます。

AUTOMATED_REGISTER

いいえ

false

リソースエージェントがクラスターリソースの起動時に以前のプライマリーインスタンスをセカンダリーとして自動的に登録し、DUPLICATE_PRIMARY_TIMEOUT 条件が満たされているかどうかを定義します。インスタンスをセカンダリーとして登録すると、プライマリーからデータ同期が開始され、ローカルデータを上書きできます。

  • false: 手動での介入が必要です。
  • true: 以前のプライマリーは、セカンダリーとして自動的に登録されます。

DUPLICATE_PRIMARY_TIMEOUT

いいえ

7200

2 つのプライマリータイムスタンプ(LPT)の間に必要な時間差。デュアルプライマリー状況が発生した場合です。両方のノードの最後のプライマリータイムスタンプの違いが DUPLICATE_PRIMARY_TIMEOUT 未満の場合、クラスターは WAITING ステータスの 1 つまたは両方のインスタンスを保持します。これにより、管理者はフェイルオーバーに対応することができます。

DUPLICATE_PRIMARY_TIMEOUT が経過した後にリカバリーがどのように進行するかは、パラメーター AUTOMATED_REGISTER によって異なります。

PREFER_SITE_TAKEOVERtrue に設定することを推奨します。これにより、プライマリー HANA インスタンスの障害が検出されると、HA クラスターがテイクオーバーをトリガーできます。ほとんどの場合、元のプライマリーインスタンスが再起動してすべてのデータをディスクからメモリーにリロードするためよりも、新しい HANA プライマリーインスタンスが完全にアクティブになるまでの時間が短くなります。

AUTOMATED_REGISTERfalse に設定してまま、Operator は以前に失敗したプライマリーインスタンスの健全性とデータの一貫性を最初に検証するオプションを与えてから、新しいセカンダリーインスタンスを手動で登録して、両方のインスタンス間で HANA システムレプリケーションを再確立し、インスタンスを手動で開始します。

AUTOMATED_REGISTERtrue に設定して、テイクオーバーの発生後に以前のプライマリーインスタンスの新しいセカンダリーとして自動登録を有効にします。これにより、HANA システムレプリケーションセットアップの可用性が向上し、SAP HANA システムレプリケーション環境におけるいわゆるデュアルプライマリー状況を防ぐことができます。

A.5. SAPHanaFilesystem リソースパラメーター

SAPHanaFilesystem リソースの設定に使用できるパラメーターを次に示します。

リソースオプション必須デフォルト説明

SID

yes

 

SAP システム識別子。

InstanceNumber

yes

 

SAP HANA インスタンスの数。

DIRECTORY

いいえ

/hana/shared/<SID>/

監視対象のディレクトリーへのパス。リソースエージェントは、DIRECTORY パス内の独自のサブディレクトリー .heartbeat_SAPHanaFilesystem にデータを作成します。この非表示のサブディレクトリーは変更しないでください。

ON_FAIL_ACTION

いいえ

fence

モニターが繰り返し失敗した場合のアクション。

  • ignore: 何もせず、障害をログに報告します。
  • fence: 必要な条件が満たされると、障害およびノードフェンシングを停止します。

付録B 有用な情報

B.1. クラスター情報の説明

クラスターリソースが起動すると、最初の監視操作が実行され、初期リソース情報を収集します。HANA リソースは、クラスターノード上の SAP HANA データベースの現在の状態を記述する、収集されたランドスケープ情報のノード属性とクラスタープロパティーを追加します。

ノード属性を含むクラスターステータス

[root]# pcs status --full
...

Node List:
  * Node node1 (1): online, feature set 3.19.0
  * Node node2 (2): online, feature set 3.19.0

Full List of Resources:
  * Clone Set: cln_SAPHanaTop_RH1_HDB02 [rsc_SAPHanaTop_RH1_HDB02]:
    * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node2
    * rsc_SAPHanaTop_RH1_HDB02  (ocf:heartbeat:SAPHanaTopology):         Started node1
  * Clone Set: cln_SAPHanaCon_RH1_HDB02 [rsc_SAPHanaCon_RH1_HDB02] (promotable):
    * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Unpromoted node2
    * rsc_SAPHanaCon_RH1_HDB02  (ocf:heartbeat:SAPHanaController):       Promoted node1
  * Clone Set: cln_SAPHanaFil_RH1_HDB02 [rsc_SAPHanaFil_RH1_HDB02]:
    * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node2
    * rsc_SAPHanaFil_RH1_HDB02  (ocf:heartbeat:SAPHanaFilesystem):       Started node1
  * rsc_vip_RH1_HDB02_primary   (ocf:heartbeat:IPaddr2):         Started node1
  * rsc_vip_RH1_HDB02_readonly  (ocf:heartbeat:IPaddr2):         Started node2

Node Attributes:
  * Node: node1 (1):
    * hana_rh1_clone_state              : PROMOTED
    * hana_rh1_roles                    : master1:master:worker:master
    * hana_rh1_site                     : DC1
    * hana_rh1_srah                     : -
    * hana_rh1_version                  : 2.00.078.00
    * hana_rh1_vhost                    : node1
    * master-rsc_SAPHanaCon_RH1_HDB02   : 150
  * Node: node2 (2):
    * hana_rh1_clone_state              : DEMOTED
    * hana_rh1_roles                    : master1:master:worker:master
    * hana_rh1_site                     : DC2
    * hana_rh1_srah                     : -
    * hana_rh1_version                  : 2.00.078.00
    * hana_rh1_vhost                    : node2
    * master-rsc_SAPHanaCon_RH1_HDB02   : 100

...
Copy to Clipboard


クラスターのプロパティー

SAP HANA リソースエージェントの新しい生成では、HANA インスタンスに関する情報を SAPHanaSR という名前のプロパティーセットにクラスタープロパティーとして保存します。

root ユーザーとして CIB (クラスター情報ベース)にクエリーを実行し、クラスター属性の内容を確認できます。HANA リソースと HanaSR フックはこれらの属性を更新します。

以下に例を示します。

[root]# cibadmin --query --xpath "//crm_config//cluster_property_set[@id='SAPHanaSR']"
<cluster_property_set id="SAPHanaSR">
  <nvpair id="SAPHanaSR-hana_rh1_site_srHook_DC2" name="hana_rh1_site_srHook_DC2" value="SOK"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_mns_DC2" name="hana_rh1_site_mns_DC2" value="node2"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_mns_DC1" name="hana_rh1_site_mns_DC1" value="node1"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_lpt_DC2" name="hana_rh1_site_lpt_DC2" value="30"/>
  <nvpair id="SAPHanaSR-hana_rh1_glob_sec" name="hana_rh1_glob_sec" value="DC2"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_opMode_DC2" name="hana_rh1_site_opMode_DC2" value="logreplay"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srHook_DC1" name="hana_rh1_site_srHook_DC1" value="PRIM"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_lpt_DC1" name="hana_rh1_site_lpt_DC1" value="1746780482"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srPoll_" name="hana_rh1_site_srPoll_" value="SOK"/>
  <nvpair id="SAPHanaSR-hana_rh1_glob_topology" name="hana_rh1_glob_topology" value="ScaleUp"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_lss_DC2" name="hana_rh1_site_lss_DC2" value="4"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_lss_DC1" name="hana_rh1_site_lss_DC1" value="4"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srr_DC2" name="hana_rh1_site_srr_DC2" value="S"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srr_DC1" name="hana_rh1_site_srr_DC1" value="P"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srMode_DC2" name="hana_rh1_site_srMode_DC2" value="sync"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srMode_" name="hana_rh1_site_srMode_" value="sync"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srPoll_DC2" name="hana_rh1_site_srPoll_DC2" value="SOK"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srMode_DC1" name="hana_rh1_site_srMode_DC1" value="sync"/>
  <nvpair id="SAPHanaSR-hana_rh1_glob_prim" name="hana_rh1_glob_prim" value="DC1"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_srPoll_DC1" name="hana_rh1_site_srPoll_DC1" value="PRIM"/>
  <nvpair id="SAPHanaSR-hana_rh1_site_opMode_DC1" name="hana_rh1_site_opMode_DC1" value="logreplay"/>
</cluster_property_set>
Copy to Clipboard


SAPHanaSR-showAttr

ツール SAPHanaSR-showAttr を使用して、すべての HANA クラスター属性情報を事前にフォーマットされた概要で表示できます。

pcs status [--full] に加えてこのステータスを確認して、全体的なランドスケープを確認します。

以下に例を示します。

[root]# SAPHanaSR-showAttr
Global cib-update dcid prim sec sid topology
---------------------------------------------
global 0.550.2    2    DC1  DC2 RH1 ScaleUp

Resource                 promotable
------------------------------------
cln_SAPHanaCon_RH1_HDB02 true
cln_SAPHanaTop_RH1_HDB02

Site lpt        lss mns   opMode    srHook srMode srPoll srr
-------------------------------------------------------------
DC2  30         4   node2 logreplay SOK    sync   SOK    S
DC1  1746780164 4   node1 logreplay PRIM   sync   PRIM   P

Host  clone_state roles                        score site srah version     vhost
---------------------------------------------------------------------------------
node1 PROMOTED    master1:master:worker:master 150   DC1  -    2.00.078.00 node1
node2 DEMOTED     master1:master:worker:master 100   DC2  -    2.00.078.00 node2
Copy to Clipboard

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat