SAP HANA スケールアップシステムレプリケーションの高可用性のデプロイ
Advanced Next Generation Interface SAP HANA リソースエージェント(angi)を使用した HANA システムレプリケーションを自動化するための HA クラスターの作成
概要
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
第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
として表されます。
< ;arch>
は、特定のハードウェアアーキテクチャーを示します。
-
x86_64
-
ppc64le
RHEL for SAP Solutions サブスクリプションの一部として有効になっているリポジトリーの一覧:
dnf repolist
[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)
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 セットアップを準備するには、計画された環境のインストールと設定に必要なパラメーターのリストを定義します。
パラメーター | 値の例 |
クラスター node1 FQDN |
|
Cluster node2 FQDN |
|
SID |
|
SAP インスタンス番号 |
|
プライマリー HANA サイト名 |
|
セカンダリー HANA サイト名 |
|
HANA |
|
HANA 管理ユーザー |
|
第3章 2 ノード HA クラスターセットアップ用の SAP HANA のインストール
3.1. スケールアップ SAP HANA インスタンスのインストール
すべてのノードに、同じ SID とインスタンス番号を持つ HANA インスタンスをインストールします。インスタンスの設定は同一である必要があります。
前提条件
- OS の要件 に応じて同じシステムがインストールされている。
- HANA インスタンスの詳細を準備しました。SAP HANA のプランニング を参照してください。
- SAP ソフトウェアダウンロード から SAP HANA インストールメディアをダウンロードし、メディアを各ノードで入手できる。
手順
インストールメディアを含むディレクトリーに移動します(例:
/sapmedia/hana
)。cd /sapmedia/hana
[root]# cd /sapmedia/hana
Copy to Clipboard Copied! インストールメディアを展開します。
unzip IMDB_SERVER20_*.ZIP
[root]# unzip IMDB_SERVER20_*.ZIP
Copy to Clipboard Copied! デプロイメントしたインストールメディアのパスに移動します。
cd /sapmedia/hana/DATA_UNITS/HDB_LCM_LINUX_<arch>
[root]# cd /sapmedia/hana/DATA_UNITS/HDB_LCM_LINUX_<arch>
Copy to Clipboard Copied! 対話型インストールで SAP HANA Lifecycle Management ツール(HDBLCM)を実行します。
./hdblcm
[root]# ./hdblcm
Copy to Clipboard Copied! インタラクティブモードでは、システム ID (SID)、インストール番号(インスタンス)、データおよびログボリュームのファイルシステムの場所など、必要なすべての情報の入力を求めるプロンプトが表示されます。
- すべてのノードで手順 1-4 を繰り返します。
検証
<sid>adm
ユーザーに切り替えます。su - rh1adm
[root]# su - rh1adm
Copy to Clipboard Copied! 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
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 Copied! さらに、
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
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 Copied! -
すべてのノードで手順を繰り返します。HANA プロファイルには、<
SID>_HDB<instance>_<node> 形式の個々のノード名が含まれていることに注意して
ください。
3.2. SAP HANA インスタンス自動起動の無効化
クラスターは、HA クラスターセットアップ内の HANA インスタンスの起動とシャットダウンを制御します。インスタンス自体を自動的に起動しないように、HANA インスタンスプロファイルを設定する必要があります。
手順
HANA インスタンスのプロファイルディレクトリーに移動します。
cd /usr/sap/<SID>/SYS/profile
[root]# cd /usr/sap/<SID>/SYS/profile
Copy to Clipboard Copied! インスタンスプロファイルを編集します。
vi <SID>_HDB<instance>_<hostname>
[root]# vi <SID>_HDB<instance>_<hostname>
Copy to Clipboard Copied! Autostart
が0
に設定されていることを確認します。- HA クラスターの一部として管理される HANA インスタンスごとに、手順 1 - 2 を繰り返します。
検証
HA クラスターによって管理されるすべての HANA インスタンスのインスタンスプロファイルに
Autostart = 0
が設定されていることを確認します。grep Autostart /usr/sap/RH1/SYS/profile/*
[root]# grep Autostart /usr/sap/RH1/SYS/profile/* /usr/sap/RH1/SYS/profile/RH1_HDB02_node1:Autostart = 0
Copy to Clipboard Copied!
第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
エントリーの例:
cat /etc/hosts ... 192.168.0.11 node1.example.com node1 192.168.0.12 node2.example.com node2
[root]# cat /etc/hosts
...
192.168.0.11 node1.example.com node1
192.168.0.12 node2.example.com node2
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
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
4.2. 初期 HANA インスタンスバックアップの実行
HANA システムレプリケーションは、計画された SAP HANA システムレプリケーションセットアップのために、SAP HANA インスタンスの初期バックアップがプライマリーインスタンスに存在する場合にのみ有効にできます。
SAP HANA ツールを使用してバックアップを作成し、手動手順をスキップできます。詳細は、SAP HANA Administration Guide - SAP HANA Database Backup and Recovery を参照してください。
前提条件
-
SAP HANA 管理ユーザー <
sid>adm
バックアップファイルを保存する書き込み可能なディレクトリーがある。 - バックアップファイルが保存されているファイルシステムに十分な空き領域がある。
手順
必要に応じて、バックアップ用の専用ディレクトリーを適切なパスに作成します。次に例を示します。
mkdir <path>/<SID>-backup
[root]# mkdir <path>/<SID>-backup
Copy to Clipboard Copied! <
;path&
gt; をシステムのパスに置き換えます。最初のバックアップファイル用の十分な空き容量がある。ターゲットディレクトリーが HANA ユーザーによって所有されていないか、または書き込み可能でない場合は、バックアップパスの所有者をユーザー <
sid>adm
に変更します。次に例を示します。chown <sid>adm:sapsys <path>/<SID>-backup
[root]# chown <sid>adm:sapsys <path>/<SID>-backup
Copy to Clipboard Copied! 残りの手順で
<sid>adm
ユーザーに変更します。su - <sid>adm
[root]# su - <sid>adm
Copy to Clipboard Copied! <
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)
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 Copied! -
TINSTANCE
およびSAPSYSTEMNAME
は、<sid>adm
ユーザーシェル環境の一部である環境変数です。TINSTANCE
はインスタンス番号で、SAPSYSTEMNAME
はインスタンス番号です。どちらも <sid>adm
ユーザーに関連するインスタンス値に自動的に設定されます。 -
<
;path>
; を、<sid>adm
ユーザーが書き込みアクセス権を持ち、十分な空き領域が残っている場所へのパスに置き換えます。
-
<
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)
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 Copied! <
;path>
; を、<sid>adm
ユーザーが書き込みアクセス権を持ち、十分な空き領域が残っている場所へのパスに置き換えます。
検証
作成されたバックアップファイルを一覧表示します。初期バックアップを保存するディレクトリーとして
/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
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 Copied! 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.
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 Copied!
トラブルシューティング
<
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
* 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 Copied! <
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
* 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 Copied! ターゲットディレクトリーが配置されているファイルシステムの空き容量を確認します。ファイルシステムのサイズを拡大するか、バックアップファイル用の十分な空き領域がある別のパスを選択します。
4.3. プライマリー HANA レプリケーションインスタンスの設定
計画したシステムレプリケーションの設定の初期プライマリーインスタンスに予定されているシステムで HANA システムレプリケーションを有効にします。
前提条件
- 初期 HANA インスタンスバックアップの 実行 で説明されている手順に基づいて、プライマリーノードで HANA インスタンスの初期バックアップ を作成している。
手順
最初のプライマリーとなる HANA インスタンスでシステムレプリケーションを有効にします。最初のノードまたはプライマリーノードで、<
;sid>adm
としてコマンドを実行します。rh1adm $ hdbnsutil -sr_enable --name=<DC1> nameserver is active, proceeding ... successfully enabled system as system replication source site done.
rh1adm $ hdbnsutil -sr_enable --name=<DC1> nameserver is active, proceeding ... successfully enabled system as system replication source site done.
Copy to Clipboard Copied! -
<
;DC1
> をプライマリー HANA サイト名に置き換えます。
-
<
検証
システムのレプリケーションステータスを <
sid>adm
として確認し、現在のノードがモードとして表示されていることを確認します。primary
で、サイト
ID とサイト名
にプライマリーインスタンスサイト情報が入力されていることを確認します。rh1adm $ hdbnsutil -sr_stateConfiguration System Replication State ~~~~~~~~ mode: primary site id: 1 site name: DC1 done.
rh1adm $ hdbnsutil -sr_stateConfiguration System Replication State ~~~~~~~~ mode: primary site id: 1 site name: DC1 done.
Copy to Clipboard Copied!
4.4. セカンダリー HANA レプリケーションインスタンスの設定
HANA システムレプリケーションの設定を完了するには、セカンダリー HANA インスタンスをプライマリーインスタンスに登録する必要があります。
前提条件
-
プライマリーインスタンスと同じ
SID
とインスタンス番号を使用して、セカンダリーノードに SAP HANA をインストールしている。 -
クラスターノード間で
root ssh キー
を設定している。 -
セカンダリー ノードで 2 つの端末を開き、1 つは
root
ユーザー用で、もう 1 つは <sid>adm
ユーザー用です。
手順
セカンダリー 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.
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 Copied! HANA がシステムレプリケーション暗号化の鍵を保存するディレクトリーに移動します。
cd /usr/sap/<SID>/SYS/global/security/rsecssfs
[root]# cd /usr/sap/<SID>/SYS/global/security/rsecssfs
Copy to Clipboard Copied! HANA システム PKI ファイル
SSFS_<SID>.KEY
をプライマリー HANA インスタンスからセカンダリーインスタンスにコピーします。rsync -av node1:$PWD/key/SSFS_<SID>.KEY key/
[root]# rsync -av node1:$PWD/key/SSFS_<SID>.KEY key/
Copy to Clipboard Copied! PKI ファイル
SSFS_<SID>.DAT
をプライマリー HANA インスタンスからセカンダリーインスタンスにコピーします。rsync -av node1:$PWD/data/SSFS_<SID>.DAT data/
[root]# rsync -av node1:$PWD/data/SSFS_<SID>.DAT data/
Copy to Clipboard Copied! <
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.
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 Copied! -
<
;DC2
> をセカンダリー HANA サイト名に置き換えます。 -
システムレプリケーションの要件に応じて、
replicationMode
とoperationMode
の値を選択します。 -
TINSTANCE
は、HANA インスタンスプロファイルを読み取ることでユーザー <sid>adm
に対して自動的に設定される環境変数です。変数の値は HANA インスタンス番号です。
-
<
セカンダリー HANA インスタンスを起動します。
node2
で <sid>adm
として実行します。rh1adm $ HDB start ... Starting instance using: /usr/sap/<SID>/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr <instance> -function StartWait 2700 2 ...
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 Copied!
検証
システムレプリケーションがセカンダリーインスタンスで実行され、
モード
が手順 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.
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 Copied! 両方のインスタンスで、ユーザー <
sid>adm として HANA インスタンスの
Python スクリプトディレクトリーに移動します。これを行う最も簡単な方法は、インスタンスのインストール時に SAP HANA が入力する <sid>adm
ユーザーシェルに組み込まれたエイリアスであるcdpy
を使用することです。rh1adm $ cdpy
rh1adm $ cdpy
Copy to Clipboard Copied! この例では、現在のディレクトリーを
/usr/sap/RH1/HDB02/exe/python_support/
に変更します。両方のインスタンスで、確立された HANA システムレプリケーションの現在のステータスを表示します。
プライマリーインスタンスでは、システムレプリケーションのステータスが常にすべての詳細とともに表示されます。
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
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 Copied! -
ACTIVE
は、HANA システムのレプリケーションが正常な状態であり、完全に同期されていることを意味します。 -
SYNCING
は、たとえばセカンダリーインスタンスのテイクオーバーが新しいプライマリーになった後など、セカンダリーサイトでシステムレプリケーションが更新されている間に表示されます。 -
INITIALIZING
は、システムレプリケーションの初回有効か、または完全な同期がトリガーされた後に表示されます。
-
セカンダリー インスタンスでは、
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
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 Copied!
4.5. HANA システムレプリケーションのテスト
クラスターのセットアップを続行する前に、HANA システムのレプリケーションを徹底的にテストすることが推奨されます。正しいシステムレプリケーション動作の検証は、HA クラスターが後でシステムのレプリケーションを管理するときに予期しない結果を防ぐのに役立ちます。
さまざまなテストの測定時間に対応するクラスターリソース設定でタイムアウト値を使用して、クラスターリソース操作が途中でタイムアウトしないようにします。
また、HANA 設定で異なるパラメーター値をテストして、クラスター制御外で特定のアクティビティーを手動で実行した時刻を測定することで、パフォーマンスを最適化することもできます。
現実的なデータ負荷とサイズでテストを実行します。
完全なレプリケーション
- プライマリーと同期するまで、新たに登録されたセカンダリーが開始してから同期にかかる時間はどれくらいですか。
- 同期時間を改善できるパラメーターがありますか ?
接続が失われた
- プライマリーインスタンスとセカンダリーインスタンス間の接続が失われた後、それらが同期されるまで、どれだけの時間がかかるか。
- 再接続と同期時間を改善できるパラメーターがありますか ?
テイクオーバー
- プライマリーからのテイクオーバー後に、セカンダリーインスタンスが完全に利用可能になるのにかかる時間。
- 通常のテイクオーバーとハンドシェイクとのテイクオーバーの違いは何ですか?
- テイクオーバー時間を改善できるパラメーターがありますか ?
データの整合性
- テイクオーバーを実行して作成したデータが利用可能で、正しいデータになりますか ?
クライアントの再接続
- クライアントは、テイクオーバー後に新しいプライマリーインスタンスに再接続できますか ?
- テイクオーバー後にクライアントが新しいプライマリーにアクセスするまでにかかる時間。
プライマリーがセカンダリーになる
- 新しいセカンダリーとして登録された後に、新しいプライマリーと再度同期するまで、以前のプライマリーにかかる時間。
- 設定されている場合、クライアントが読み取り操作のために新しく登録されたセカンダリーにアクセスできるまでにかかる時間。
第5章 Pacemaker クラスターの設定
5.1. 基本的なクラスター設定のデプロイ
次の基本的なクラスター設定は、SAP HANA システムレプリケーションを管理するための Pacemaker クラスターセットアップを開始するための最低限の手順を説明します。
複雑な設定の設定やオプションの詳細は、RHEL HA アドオンのドキュメント( 複数のリンクを持つ高可用性クラスターの作成 など)を参照してください。
前提条件
- HANA システムレプリケーション環境を設定し、正しく動作していることを確認している。
- このクラスターのノードとなるすべてのシステムで、RHEL High Availability リポジトリーを設定している。
- 計画した環境に応じてフェンシングおよびクォーラムの要件を確認している。詳細は、HA クラスター要件 を参照してください。
手順
High Availability リポジトリーから Red Hat High Availability Add-On ソフトウェアパッケージをインストールします。すべてのクラスターノードでインストールして実行するフェンスエージェントを選択します。
クラスターパッケージとすべてのフェンスエージェントをインストールします。
dnf install pcs pacemaker fence-agents-all
[root]# dnf install pcs pacemaker fence-agents-all
Copy to Clipboard Copied! または、環境に応じて、クラスターパッケージと、特定のフェンスエージェントのみをインストールします。
dnf install pcs pacemaker fence-agents-<model>
[root]# dnf install pcs pacemaker fence-agents-<model>
Copy to Clipboard Copied!
すべてのクラスターノードで
pcsd
サービスを開始して有効にします。systemctl enable --now pcsd.service
[root]# systemctl enable --now pcsd.service
Copy to Clipboard Copied! オプション:
firewalld
サービスを実行している場合は、Red Hat High Availability Add-On で必要なポートを有効にします。これは、すべてのクラスターノードで実行します。firewall-cmd --add-service=high-availability firewall-cmd --runtime-to-permanent
[root]# firewall-cmd --add-service=high-availability [root]# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! hacluster
ユーザーのパスワードを設定します。同じパスワードを使用して各ノードでコマンドを繰り返します。passwd hacluster
[root]# passwd hacluster
Copy to Clipboard Copied! クラスター内のノードごとに
hacluster
ユーザーを認証します。最初のノードで以下を実行します。pcs host auth <node1> <node2>
[root]# pcs host auth <node1> <node2> Username: hacluster Password: <node1>: Authorized <node2>: Authorized
Copy to Clipboard Copied! -
/etc/hosts
ファイルで定義されているように、FQDN の有無に関わらず、ノード名を入力します。 -
プロンプトで
hacluster
ユーザーパスワードを入力します。
-
名前を使用してクラスターを作成し、クラスターメンバーの名前を指定します(例:
node1
およびnode2
に完全修飾ホスト名を使用)。これにより、両方のノードでクラスター設定が伝播され、クラスターが起動します。最初のノードで以下のコマンドを実行します。pcs cluster setup <cluster_name> --start <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 Copied! システムの起動時にクラスターを自動的に起動できるようにします。これにより、
corosync
サービスおよびpacemaker
サービスが有効になります。ノードの再起動後にクラスターの起動を手動で制御する場合は、この手順をスキップしてください。1 つのノードで実行します。pcs cluster enable --all
[root]# pcs cluster enable --all node1: Cluster Enabled node2: Cluster Enabled
Copy to Clipboard Copied!
検証
クラスターのステータスを確認します。クラスターデーモンサービスが必要な状態であることを確認します。
pcs status --full
[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 Copied!
次のステップ
- STONITH メカニズムを有効にするフェンシングの方法を設定します。Red Hat High Availability クラスターでのフェンシングの設定 を参照してください。
- クラスターをさらに設定する前に、フェンシングの設定をテストします。詳細は、How to test fence devices and fencing configuration in a Red Hat High Availability cluster?を参照してください。
5.2. 一般的なクラスタープロパティーの設定
リソースの不要なフェイルオーバーを回避するために、クラスターリソースのデフォルトを調整する必要があります。
手順
リソースリソースの不要なフェイルオーバーを回避するために、クラスターリソースのデフォルトを更新します。1 つのクラスターノードで以下のコマンドを実行し、変更をクラスター設定に適用します。
pcs resource defaults update \ resource-stickiness=1000 \ migration-threshold=5000
[root]# pcs resource defaults update \ resource-stickiness=1000 \ migration-threshold=5000
Copy to Clipboard Copied! -
resource-stickiness=1000 は
、リソースが現在の場所で稼働し続けることを推奨します。これにより、クラスターが軽量の内部ヘルスインジケーターに基づいてリソースを移動できなくなります。 -
migration-threshold=5000
を使用すると、5000 の失敗後にノードでリソースを再起動できます。この制限を超えると、障害がクリアされるまで、リソースはノードでブロックされます。これにより、管理者が繰り返し発生する失敗の原因を調査してカウンターをリセットできるまで、数回の障害発生後にリソース復旧が可能になります。
-
検証
リソースのデフォルトが設定されていることを確認します。
pcs resource defaults
[root]# pcs resource defaults Meta Attrs: build-resource-defaults migration-threshold=5000 resource-stickiness=1000
Copy to Clipboard Copied!
5.3. systemd ベースの SAP 起動フレームワークの設定
Systemd 統合は、RHEL 9 for SAP HANA 2.0 SPS07 リビジョン 70 以降での SAP HANA インストールのデフォルト動作です。HA 環境では、追加の変更を適用して、クラスターセットアップに関与するさまざまな systemd サービスを統合する必要があります。
HANA インスタンスの systemd サービスを正しい順序で管理するように、Pacemaker の systemd サービスを設定します。
前提条件
systemd 統合で HANA インスタンスをインストールし、すべてのノードで確認されている。次に例を示します。
systemctl list-units --all SAP*
[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 Copied!
手順
pacemaker サービスのドロップインファイルの
/etc/systemd/system/pacemaker.service.d/
ディレクトリーを作成します。mkdir /etc/systemd/system/pacemaker.service.d/
[root]# mkdir /etc/systemd/system/pacemaker.service.d/
Copy to Clipboard Copied! 以下の内容を含む Pacemaker サービスの
systemd
ドロップインファイルを作成します。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
[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 Copied! -
<
;SID>
; を HANA SID に置き換えます。 -
<
;instance>
; を HANA インスタンス番号に置き換えます。
-
<
systemctl
デーモンを再読み込みして、ドロップインファイルをアクティブにします。systemctl daemon-reload
[root]# systemctl daemon-reload
Copy to Clipboard Copied! - 他のクラスターノードで手順 1 から 3 を繰り返します。
検証
HANA インスタンスの systemd サービスを確認し、
読み込まれ
ていることを確認します。systemctl status SAPRH1_02.service
[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 Copied! これで、SAP HANA インスタンスサービスが Pacemaker サービスに認識されていることを確認します。
systemctl show pacemaker.service | grep SAP
[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 Copied! SAP<SID>_<instance>.service が
After=
およびWants=
リストに記載されていることを確認します。
5.4. SAP HANA HA コンポーネントのインストール
Red Hat Enterprise Linux 9 for <arch> - SAP Solutions (RPMs)リポジトリーの
RPM パッケージは、HANA システムレプリケーションセットアップを管理するための HA クラスターを設定するためのリソースエージェントおよびその他の SAP HANA 固有のコンポーネントを提供します。
sap-hana-
ha
パッケージ 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
パッケージをインストールします。dnf install sap-hana-ha
[root]# dnf install sap-hana-ha
Copy to Clipboard Copied!
検証
パッケージがインストールされているすべてのノードを確認します。
rpm -q sap-hana-ha
[root]# rpm -q sap-hana-ha sap-hana-ha-<version>.<release>.noarch
Copy to Clipboard Copied!
5.5. srConnectionChanged ()フックメソッドの HanaSR HA/DR プロバイダーの設定
SAP HANA 2.0 SPS0 以降を使用して HA クラスターセットアップで HANA インスタンスを設定する場合、クラスターのセットアップを続行する前に、SAP HANA srConnectionChanged ()
フックメソッドを有効にしてテストする必要があります。
前提条件
-
sap-hana-ha
パッケージがインストールされている。 - HANA インスタンスはクラスターによって管理されていません。それ以外の場合は、メンテナンス手順 を使用して、SAP HANA インスタンス を更新 し、フックスクリプトの設定中にクラスターが干渉しないようにします。
手順
<
sid>adm
ユーザーとして、すべてのノード上の HANA インスタンスを停止します。rh1adm $ HDB stop
rh1adm $ HDB stop
Copy to Clipboard Copied! 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
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 Copied! -
<
;instance>
; を HANA インスタンス番号に置き換えます。
-
<
<
sid>adm
ユーザーシェルに組み込まれるコマンドエイリアスcdcoc
を使用して、<sid>adm
ユーザーとして HANA 設定ディレクトリーに移動します。これは、/hana/shared/<SID>/global/hdb/custom/config/
パスに自動的に変更されます。rh1adm $ cdcoc
rh1adm $ cdcoc
Copy to Clipboard Copied! 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
[ha_dr_provider_hanasr] provider = HanaSR path = /usr/share/sap-hana-ha/ execution_order = 1 [trace] ha_dr_hanasr = info
Copy to Clipboard Copied! execution_order
を1
に設定して、HanaSR
フックが常に最高の優先順位で実行されるようにします。オプション:
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
[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 Copied! 以下の内容で、各クラスターノードに
/etc/sudoers.d/20-saphana
ファイルをroot
ユーザーとして作成します。次のコマンド権限により、<sid>adm
ユーザーは、HanaSR フック実行の一部として特定のクラスターノード属性を更新できます。visudo -f /etc/sudoers.d/20-saphana
[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 Copied! HA クラスターを起動せずに、両方のクラスターノードの HANA インスタンスを手動で起動します。<
;sid>adm
として実行します。rh1adm $ HDB start
rh1adm $ HDB start
Copy to Clipboard Copied!
検証
トレースログファイルが保存されている <
sid>adm
ユーザーとして、SAP HANA ディレクトリーに移動します。<sid>adm
ユーザーシェルに組み込まれたコマンドエイリアスcdtrace
を使用します。rh1adm $ cdtrace
rh1adm $ cdtrace
Copy to Clipboard Copied! HANA ネームサーバーサービスログで、HA/DR プロバイダーの読み込みメッセージを確認します。
HanaSR
プロバイダーのみが設定されている場合:rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_* loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_* loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
Copy to Clipboard Copied! オプションの
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/
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 Copied!
システムのセキュアなログで user
root
として検証すると、sudo
コマンドが正常に実行されたことを確認します。sudoers ファイルが正しくない場合は、sudo
コマンドの実行時にエラーがログに記録されます。grep -e 'sudo.*crm_attribute.*' /var/log/secure
[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 Copied! HANA インスタンスが両方のノードで起動すると、通常、いくつかの
srHook
属性の更新を確認できます。最初はSFAIL
を設定することになります。これは、プライマリーの開始直後に、この時点で同期しているセカンダリーと同期していないためです。SOK
への最後の更新は、システムレプリケーションステータスが最終的に完全に同期に変更された後に HANA イベントによってトリガーされます。-
同時に行っていない場合は、2 番目のインスタンスで検証手順 1 - 2 を繰り返します。ステップ 3 の
sudo
ログメッセージは、システムレプリケーションイベントが送信されるプライマリーインスタンスノードにのみ表示されます。 任意のノードのクラスター属性を確認し、
hana_<sid>_site_srHook_<DC2
> 属性の値が期待どおりに更新されていることを確認します。cibadmin --query | grep -e 'SAPHanaSR.*srHook'
[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 Copied! -
SOK
は、HANA システムレプリケーションがACTIVE
状態の場合に設定されます。これは、確立され、完全に同期していることを意味します。 -
SFAIL
は、システムのレプリケーションが他の状態にあるときに設定されます。
-
トラブルシューティング
- フックの変更後に HANA インスタンスが起動しない を参照してください。
5.6. srServiceStateChanged ()フックメソッド用の ChkSrv HA/DR プロバイダーの設定
indexserver プロセスが失敗した後のリカバリーを短時間で HANA インスタンスを停止したり、強制終了したりする場合は、フック ChkSrv
を設定できます。この設定はオプションです。
前提条件
-
sap-hana-ha
パッケージがインストールされている。 -
HanaSR
HA/DR プロバイダーを設定しました。詳細は、Configuring the HanaSR HA/DR provider for the srConnectionChanged ()hook method を参照してください。
手順
<
sid>adm ユーザーとして
HANA 設定ディレクトリーに移動します。<sid>adm
ユーザーシェルに組み込まれたコマンドエイリアスcdcoc
を使用します。これは、/hana/shared/<SID>/global/hdb/custom/config/
パスに自動的に変更されます。rh1adm $ cdcoc
rh1adm $ cdcoc
Copy to Clipboard Copied! 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
[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 Copied! オプション:HA/DR プロバイダーをリロードして HANA の実行中に
ChkSrv
プロバイダーを有効にします。インスタンスが停止しているときにフックスクリプトを設定するときに、この手順をスキップして、インスタンスの起動時に HA/DR プロバイダーが自動的に読み込まれます。rh1adm $ hdbnsutil -reloadHADRProviders
rh1adm $ hdbnsutil -reloadHADRProviders
Copy to Clipboard Copied!
検証
トレースログファイルが保存されている <
sid>adm
ユーザーとして、SAP HANA ディレクトリーに移動します。<sid>adm
ユーザーシェルに組み込まれたコマンドエイリアスcdtrace
を使用します。rh1adm $ cdtrace
rh1adm $ cdtrace
Copy to Clipboard Copied! 変更が読み込まれていることを確認します。
rh1adm $ grep -e "loading HA/DR Provider.*ChkSrv.*" nameserver_* loading HA/DR Provider 'ChkSrv' from /usr/share/sap-hana-ha/
rh1adm $ grep -e "loading HA/DR Provider.*ChkSrv.*" nameserver_* loading HA/DR Provider 'ChkSrv' from /usr/share/sap-hana-ha/
Copy to Clipboard Copied! 専用のトレースログファイルが作成され、プロバイダーが正しい設定パラメーターでロードされていることを確認します。
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
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 Copied!
トラブルシューティング
- フックの変更後に HANA インスタンスが起動しない を参照してください。
5.7. HANA クラスターリソースの作成
クラスターが HANA ランドスケープのステータスを収集し、インスタンスの正常性を監視し、必要に応じてインスタンスを管理するためのアクションを実行するように、SAPHanaTopology
と SAPHanaController
リソースの両方を設定する必要があります。
SAPHanaFilesystem
リソースはオプションです。プライマリーインスタンスのファイルシステムが利用できなくなった場合に、アクションに時間を改善するために追加できます。
手順
SAPHanaTopology
リソースをクローンリソースとして作成します。これは、すべてのクラスターノードで同時に実行されることを意味します。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
[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 Copied! -
<
;SID>
; を HANA SID に置き換えます。 <
;instance>
; を HANA インスタンス番号に置き換えます。注記RHEL 9.3 以降、clone コマンドで
meta
キーワードを使用しないと、非推奨の警告が表示されます。属性は、ベースリソースに自動的に割り当てられます。今後は、クローンリソースに属性を割り当てるのに、クローン属性の
メタ
キーワードが必要になります。それまでは、この動作がすでに適用されるように、--future
パラメーターを追加します。クローンメタ属性を指定する場合は、新しい pcs parsing requires meta keyword も参照してください。
-
<
SAPHanaController
リソースを昇格可能なクローンリソースとして作成します。これは、すべてのクラスターノードで同時に実行されますが、1 つのノードでは active または primary インスタンスとして機能します。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
[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 Copied! AUTOMATED_REGISTER=false
でリソースを作成してから、テストを使用して正しい動作とデータの整合性を検証してセットアップを完了することが推奨されます。詳細は、セットアップのテスト を参照し てください。パラメーターを true に設定すると、すでに作成時にこれを有効にすることができます。詳細は、SAPHanaController リソースパラメーター を参照してください。
SAPHanaController
リソースが正常に起動する必要がある HANA ランドスケープ情報を収集するため、SAPHanaController
の前にSAPHanaTopology
を開始する必要があります。2 つのリソースの正しい起動順序を適用するクラスター制約を作成します。pcs constraint order cln_SAPHanaTop_<SID>_HDB<instance> \ then cln_SAPHanaCon_<SID>_HDB<instance> symmetrical=false
[root]# pcs constraint order cln_SAPHanaTop_<SID>_HDB<instance> \ then cln_SAPHanaCon_<SID>_HDB<instance> symmetrical=false
Copy to Clipboard Copied! symmetrical=false
を設定すると、制約はリソースの起動順序のみに影響しますが、停止順序には適用されません。オプション:
SAPHanaFilesystem
リソースをクローンリソースとして作成します。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
[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 Copied! ON_FAIL_ACTION=fence
を設定する代わりに、ignore
に設定できます。これは、最初に機能をテストするのに役立ちます。リソースは、システムログに情報を書き込みます。このログは、フェンス
アクションの使用をアクティブにしたときにリソースが希望するアクションを実行するかどうかの評価に調べることができます。
検証
SAPHanaTopology
リソースのクローン作成を確認します。リソース設定の例:pcs resource config cln_SAPHanaTop_RH1_HDB02
[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 Copied! SAPHanaController
リソースクローンを確認します。リソース設定の例:pcs resource config cln_SAPHanaCon_RH1_HDB02
[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 Copied! 開始順序の制約が適用されていることを確認します。
pcs constraint order
[root]# pcs constraint order Order Constraints: start resource 'cln_SAPHanaTop_RH1_HDB02' then start resource 'cln_SAPHanaCon_RH1_HDB02' symmetrical=0
Copy to Clipboard Copied! オプション:作成した場合は、
SAPHanaFilesystem
リソースクローンを確認します。リソース設定の例:pcs resource config cln_SAPHanaFil_RH1_HDB02
[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 Copied! クラスターのステータスを確認します。use--
full
を使用して、HANA リソースによって更新されるノード属性を含めます。pcs status --full
[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 Copied!
リソース操作に対して表示されるタイムアウトは推奨されるデフォルトのみで、SAP HANA 環境に応じて調整できます。たとえば、大規模な SAP HANA データベースの起動には時間がかかるため、開始タイムアウトを増やす必要がある場合があります。
AUTOMATED_REGISTER
を true
に設定すると、データ損失や破損のリスクが増加する可能性があります。セカンダリー 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 を予約している。
手順
HA クラスターが実行されているプラットフォームに基づいて仮想 IP アドレスを管理するための適切なリソースエージェントを使用します。使用しているリソースエージェントに従ってパラメーターを調整します。たとえば、
IPaddr2
エージェントを使用するなど、プライマリー仮想 IP のクラスターリソースを作成します。pcs resource create rsc_vip_<SID>_HDB<instance>_primary \ ocf:heartbeat:IPaddr2 ip=<address> cidr_netmask=<netmask> nic=<device>
[root]# pcs resource create rsc_vip_<SID>_HDB<instance>_primary \ ocf:heartbeat:IPaddr2 ip=<address> cidr_netmask=<netmask> nic=<device>
Copy to Clipboard Copied! -
<
;SID>
; を HANA SID に置き換えます。 -
<
;instance>
; を HANA インスタンス番号に置き換えます。 -
<
;address>
;、<netmask&
gt;、および <device
> をプライマリー仮想 IP アドレスの詳細に置き換えます。
-
<
HANA プライマリーノードに
SAPHanaController
リソースを持つ VIP リソースを配置するクラスター制約を作成します。pcs constraint colocation add rsc_vip_<SID>_HDB<instance>_primary \ with promoted cln_SAPHanaCon_<SID>_HDB<instance> 2000
[root]# pcs constraint colocation add rsc_vip_<SID>_HDB<instance>_primary \ with promoted cln_SAPHanaCon_<SID>_HDB<instance> 2000
Copy to Clipboard Copied! この制約は、デフォルトの
INFINITY
の代わりにスコア2000
を適用します。これにより、リソースの依存関係がソフトになり、昇格されたSAPHanaController
リソースがない場合に仮想 IP リソースがアクティブな状態を維持できるようになります。このようにして、この IP アドレスに到達して HANA インスタンスのステータス情報をクエリーできる SAP 管理コンソール(MMC)や SAP Landscape Management (LaMa)などのツールを引き続き使用できます。
検証
仮想 IP リソースのリソース設定を確認します。
pcs resource config rsc_vip_RH1_HDB02_primary
[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 Copied! 制約が正しく定義されていることを確認します。
pcs constraint colocation
[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 Copied!
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
を設定 している。
手順
HA クラスターが実行されているプラットフォームに基づいて仮想 IP アドレスを管理するための適切なリソースエージェントを使用します。使用しているリソースエージェントに従ってパラメーターを調整します。セカンダリー仮想 IP のクラスターリソースを作成します。たとえば、
IPaddr2
エージェントを使用します。pcs resource create rsc_vip_<SID>_HDB<instance>_readonly \ ocf:heartbeat:IPaddr2 ip=<address> cidr_netmask=<netmask> nic=<device>
[root]# pcs resource create rsc_vip_<SID>_HDB<instance>_readonly \ ocf:heartbeat:IPaddr2 ip=<address> cidr_netmask=<netmask> nic=<device>
Copy to Clipboard Copied! -
<
;SID>
; を HANA SID に置き換えます。 -
<
;instance>
; を HANA インスタンス番号に置き換えます。 -
<
;address>
;、<netmask
>、および <device
> を、読み取り専用のセカンダリー仮想 IP アドレスの詳細に置き換えます。
-
<
通常の操作中にセカンダリー仮想 IP がセカンダリーインスタンスに割り当てられるように、場所の制約ルールを作成します。
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
[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 Copied! -
<
;SID>
; を HANA SID に置き換えます。 -
<
;sid>
; を小文字の HANA SID に置き換えます。 -
<
;instance>
; を HANA インスタンス番号に置き換えます。
-
<
場所の制約ルールを作成して、必要に応じてセカンダリー仮想 IP がプライマリーインスタンスで代替として実行されるようにします。
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
[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 Copied!
検証
制約がクラスター設定の一部であることを確認します。
pcs constraint location
[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 Copied!
第6章 セットアップのテスト
実稼働環境のワークロードに対して有効にする前に、新しい HANA HA クラスターを徹底的にテストしてください。
特定の要件を使用して、基本的なテストケースを強化します。
6.1. システムレプリケーション状態の変更の検出
HanaSR
HA/DR プロバイダーの正しい機能をテストするには、システムレプリケーションを中断するときにログおよびクラスター属性の同期状態情報をモニターする必要があります。
このテストでは、プライマリーインスタンスは、システムレプリケーションのステータスを監視し、ログメッセージを確認するために使用されます。セカンダリーインスタンスは、セカンダリーインスタンスのインデックスサーバープロセスをフリーズして、プライマリーがそのままの状態でレプリケーションの問題をシミュレートします。
前提条件
-
必須の
HanaSR
HA/DR プロバイダーを設定しました。 - HANA インスタンスはすべてのクラスターノードの正常な状態にあり、システムレプリケーションが同期しています。
手順
<
sid>adm
ユーザーとして、プライマリー インスタンスの HANA Python ディレクトリーに移動し、現在のシステムレプリケーションステータスを確認します。ACTIVE
で、完全に同期されていることを確認します。rh1adm $ cdpy; python systemReplicationStatus.py
rh1adm $ cdpy; python systemReplicationStatus.py
Copy to Clipboard Copied! セカンダリーノードの属性概要で、
srHook
およびsrPoll
クラスター属性が両方ともSOK
であることを確認します。別のターミナルで任意のノードでroot
ユーザーとして以下のコマンドを実行し、属性の変更を追跡します。watch SAPHanaSR-showAttr
[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 Copied! デフォルトの 2 秒間隔で、ループで以下のコマンドを実行するには
watch
コマンドを使用します。セカンダリー インスタンスで、たとえば、
HDB
info 出力のPID
列から、hdbindexserver
プロセスのプロセス ID (PID
)を user <sid>adm として取得し
ます。rh1adm $ HDB info
rh1adm $ HDB info
Copy to Clipboard Copied! セカンダリー インスタンスで、
STOP
シグナルをプロセスに送信してhdbindexserver
プロセスのハングをシミュレートします。これにより、プロセスがフリーズし、ノード間でインスタンスを通信して同期することをブロックします。プライマリーで行った場合の結果は同じではないため、必ずセカンダリーインスタンスでこれを実行してください。rh1adm $ kill -STOP <PID>
rh1adm $ kill -STOP <PID>
Copy to Clipboard Copied!
検証
プライマリー インスタンスで、変更についてシステムのレプリケーションステータスを確認します。
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 ...
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 Copied! 1 ビット後に、indexserver サービスのレプリケーションステータスが
ERROR
に変わります。アイドルインスタンスでの反応に時間がかかる場合があります。1 分以上待機します。プライマリー インスタンスで、<
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
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 Copied! ネームサーバーログには、HANA が詳細でトリガーするイベントが含まれます。また、
srHook
クラスター属性を更新するためにHanaSR
フックスクリプトを実行するsudo
コマンドも含まれます。システムレプリケーションステータス
srHook
およびsrPoll
の両方のクラスター属性がセカンダリーのSFAIL
ステータスを示していることを確認します。任意のノードでroot
ユーザーとして実行するか、手順 3 の open ターミナルを使用して変更を監視します。SAPHanaSR-showAttr
[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 Copied! セカンダリーインスタンスで、以前にフリーズした
hdbindexserver
PID
のブロックを解除して、再度有効にします。rh1adm $ kill -CONT <PID>
rh1adm $ kill -CONT <PID>
Copy to Clipboard Copied! - 手順 1-3 を繰り返し、システムレプリケーションが少し後に完全に回復していることを確認します。リソースは実行中のままであるため、クラスターはこのテスト中にアクションをトリガーしません。
6.2. indexserver クラッシュリカバリーのトリガー
hdbindexserver
プロセスのクラッシュをシミュレートして、ChkSrv
HA/DR プロバイダーの機能をテストします。これは、プライマリーまたはセカンダリーインスタンスで実行できます。正確なリカバリーアクションは設定全体によって異なります。
前提条件
-
ChkSrv
HA/DR プロバイダーを設定しました。このオプションフックが設定されていない場合は、このテストをスキップします。 - HANA インスタンスには正常な HANA システムレプリケーションがあります。
- クラスターのステータスに障害が発生していません。
手順
別のターミナルを使用して、HANA インスタンスのプロセスをユーザー <
sid>adm
として監視します。rh1adm $ watch "sapcontrol -nr ${TINSTANCE} -function GetProcessList | column -s ',' -t"
rh1adm $ watch "sapcontrol -nr ${TINSTANCE} -function GetProcessList | column -s ',' -t"
Copy to Clipboard Copied! 別のターミナルで、
hdbindexserver
プロセスを強制終了します。rh1adm $ kill <PID>
rh1adm $ kill <PID>
Copy to Clipboard Copied!
検証
同じインスタンスで専用の 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. ...
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 Copied! クラスターのステータスにユーザー
root
でリソース障害情報を確認します。pcs status --full
[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 Copied! システムログで、クラスター側の関連するアクションをユーザー
root
として確認します。grep rsc_SAPHanaCon_RH1_HDB02 /var/log/messages
[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 Copied! 次の
SAPHanaController
リソースモニターは、予期せず停止した HANA インスタンスを障害として報告し、設定に従って復旧手順を開始します。PREFER_SITE_TAKEOVER
が有効で、テストがプライマリーインスタンスで実行された場合、セカンダリーインスタンスへの HANA テイクオーバーがトリガーされます。
次のステップ
- 以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。詳細は、障害履歴のクリーンアップ を 参照してください。
- 必要に応じて、設定に応じて、停止した以前のプライマリー HANA インスタンスを手動で再登録し、HANA ツールを使用して起動します。詳細は、テイクオーバー後の以前のプライマリーの登録 を参照し てください。
6.3. クラスターコマンドを使用して HANA テイクオーバーをトリガーする
cluster コマンドを使用して、プロモートされたリソースを他のノードに移動し、予定されているプライマリーインスタンスのテイクオーバーをセカンダリーに手動でテストします。
前提条件
- HANA インスタンスには正常な HANA システムレプリケーションがあります。
- クラスターのステータスに障害が発生していません。
手順
プライマリーインスタンスをセカンダリーノードに切り替えます。任意のノードで
root
ユーザーとしてクラスターコマンドを実行します。pcs resource move cln_SAPHanaCon_<SID>_HDB<instance>
[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 Copied!
検証
SAPHanaController
リソースが他のノードでプロモートされたことを確認します。pcs status --full
[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 Copied! 以前のプライマリーインスタンスのステータスは、
SAPHanaController
リソースのAUTOMATED_REGISTER
パラメーターによって異なります。AUTOMATED_REGISTER
がfalse
の場合、インスタンスは手動で介入するまで停止します。そうでないと、インスタンスは自動的に再起動し、新しいセカンダリーインスタンスとして再登録されます。
次のステップ
- 以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。詳細は、障害履歴のクリーンアップ を 参照してください。
- 必要に応じて、設定に応じて、停止した以前のプライマリー HANA インスタンスを手動で再登録し、HANA ツールを使用して起動します。詳細は、テイクオーバー後の以前のプライマリーの登録 を参照し てください。
6.4. SAPHanaFilesystem 障害アクションのトリガー
監視対象ディレクトリーへの書き込みアクセスをブロックして、SAPHanaFilesystem
リソースの正しい動作をテストします。これは、両方のインスタンスでテストできます。プライマリーインスタンスのみが、障害および回復アクションをトリガーします。セカンダリーノードでは、リソースはアクションをトリガーしません。
前提条件
-
SAPHanaFilesystem
リソースを設定している。このオプションのリソースが設定されていない場合は、このテストをスキップします。
手順
SAPHanaFilesystem
リソースがファイルシステムの読み取りおよび書き込みをテストするために使用する非表示ディレクトリーに移動します。cd /hana/shared/<SID>/.heartbeat_SAPHanaFilesystem/<node>
[root]# cd /hana/shared/<SID>/.heartbeat_SAPHanaFilesystem/<node>
Copy to Clipboard Copied! 既存の
テスト
ファイルがイミュータブルになるように設定します。これにより、リソースモニターによる書き込みアクセスができなくなります。chattr +i test
[root]# chattr +i test
Copy to Clipboard Copied! シミュレーションした障害中に動作を確認します。
リソースアクションが
ignore
に設定されている場合は、/var/log/messages
ファイルで関連するログメッセージを確認できます。grep ON_FAIL_ACTION /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 Copied! リソースのアクションが fence に設定されている場合は、
フェンス
の動作を確認できます。pcs status --full
[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 Copied!
このブロッカーは、テスト後に再度削除する必要があります。ノードがフェンシングされている場合は、ノードを再度実行した後に以下を実行します。
chattr -i test
[root]# chattr -i test
Copy to Clipboard Copied!
次のステップ
- 以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。詳細は、障害履歴のクリーンアップ を 参照してください。
- 必要に応じて、設定に応じて、停止した以前のプライマリー HANA インスタンスを手動で再登録し、HANA ツールを使用して起動します。詳細は、テイクオーバー後の以前のプライマリーの登録 を参照し てください。
6.5. プライマリーインスタンスでのノードのクラッシュ
HANA クラスターリソースの動作をテストするために、プライマリーインスタンスが実行されているクラスターノードのクラッシュをシミュレートします。
前提条件
- HANA インスタンスには正常な HANA システムレプリケーションがあります。
- クラスターのステータスに障害が発生していません。
手順
プライマリーノードでクラッシュをトリガーします。このコマンドにより、これ以上警告を出さずにノードがクラッシュします。
echo c > /proc/sysrq-trigger
[root]# echo c > /proc/sysrq-trigger
Copy to Clipboard Copied!
検証
セカンダリーノードのクラスターは、プライマリーノードをフェンスします。
pcs status --full
[root]# pcs status --full ... Pending Fencing Actions: * reboot of node1 pending: client=pacemaker-controld.1685, origin=node2 ...
Copy to Clipboard Copied! - セカンダリーが引き継ぎ、新しいプライマリーとして昇格されます。
-
フェンシングされた以前のプライマリーノードは、フェンシングおよび
SAPHanaController
リソース設定に従って回復します。
次のステップ
- 以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。詳細は、障害履歴のクリーンアップ を 参照してください。
- 必要に応じて、設定に応じて、停止した以前のプライマリー HANA インスタンスを手動で再登録し、HANA ツールを使用して起動します。詳細は、テイクオーバー後の以前のプライマリーの登録 を参照し てください。
6.6. セカンダリーインスタンスでのノードのクラッシュ
HANA クラスターリソースの動作をテストするために、セカンダリーインスタンスが実行されているクラスターノードのクラッシュをシミュレートします。
手順
セカンダリーノードでクラッシュをトリガーします。このコマンドにより、これ以上警告を出さずにノードがクラッシュします。
echo c > /proc/sysrq-trigger
[root]# echo c > /proc/sysrq-trigger
Copy to Clipboard Copied!
検証
プライマリーノードのクラスターは、セカンダリーノードをフェンスします。
pcs status --full
[root]# pcs status --full ... Pending Fencing Actions: * reboot of node2 pending: client=pacemaker-controld.1694, origin=node1 ...
Copy to Clipboard Copied! - セカンダリーノードの再起動および復旧中は、プライマリーインスタンスが実行されたままになります。フェンシングされたノードのリカバリーは、フェンシングの設定によって異なります。
次のステップ
- 以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。詳細は、障害履歴のクリーンアップ を 参照してください。
6.7. SAP コマンドを使用したプライマリーインスタンスの停止
HANA コマンドを使用してクラスター外でプライマリー HANA インスタンスを管理する場合に、クラスターの動作をテストします。
クラスターは HANA コマンドの実行を認識しないため、障害として変更を検出し、設定された回復アクションをトリガーします。
前提条件
- HANA インスタンスには正常な HANA システムレプリケーションがあります。
- クラスターのステータスに障害が発生していません。
手順
クラスター外の <
sid>adm
ユーザーとしてプライマリーインスタンスを停止します。rh1adm $ HDB stop
rh1adm $ HDB stop
Copy to Clipboard Copied!
検証
クラスターは停止したインスタンスを障害として認識し、プライマリーインスタンスの復旧を開始します。
pcs status --full
[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 Copied! SAPHanaController
リソースでPREFER_SITE_TAKEOVER
パラメーターとAUTOMATED_REGISTER
パラメーターの両方を設定して有効にした場合、クラスターはセカンダリーインスタンスに HANA のテイクオーバーをトリガーし、失敗したプライマリーを新しいセカンダリーとして自動的に登録します。それ以外の場合は、設定に従って障害が発生したプライマリーを復元します。
次のステップ
- 以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。詳細は、障害履歴のクリーンアップ を 参照してください。
- 必要に応じて、設定に応じて、停止した以前のプライマリー HANA インスタンスを手動で再登録し、HANA ツールを使用して起動します。詳細は、テイクオーバー後の以前のプライマリーの登録 を参照し てください。
6.8. SAP コマンドを使用したセカンダリーインスタンスの停止
HANA コマンドを使用してクラスター外でセカンダリー HANA インスタンスを管理する場合に、クラスターの動作をテストします。
クラスターは HANA コマンドの実行を認識しないため、障害として変更を検出し、設定された回復アクションをトリガーします。
前提条件
- クラスターのステータスに障害が発生していません。
手順
クラスター外の <
sid>adm
ユーザーとしてセカンダリーインスタンスを停止します。rh1adm $ HDB stop
rh1adm $ HDB stop
Copy to Clipboard Copied!
検証
クラスターは停止したインスタンスの障害に気づき、セカンダリーを復元します。
pcs status --full
[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 Copied!
次のステップ
- 以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。詳細は、障害履歴のクリーンアップ を 参照してください。
第7章 セットアップの完了
最終的なセットアップが完了し、システムとリソースが正常であることを確認してから、実稼働環境のワークロード用の環境を有効にできます。
7.1. テイクオーバー後の HANA の自動登録の有効化
以前に障害が発生したプライマリーインスタンスを、データの一貫性を手動で検証せずに完全に機能するセカンダリーインスタンスとして自動的に回復する場合は、SAPHanaController
リソースを有効にして、テイクオーバー直後にインスタンスを再登録できます。
これにより、以前に障害が発生したプライマリーインスタンスは、HANA システムのレプリケーションを続行し、新しいプライマリーインスタンスの新しい障害が発生した場合に自動的に引き継がれます。
HANA オペレーターは、最初に以前に失敗したインスタンスの正常性を手動で確認し、後でインスタンスを再登録する必要があるかどうかを決定する必要があります。または、優先度が完全な高可用性の自動リカバリーに準拠しているかどうかを決定する必要があります。
手順
SAPHanaController
リソースを更新し、デフォルトのAUTOMATED_REGISTER
をオーバーライドします。pcs resource update rsc_SAPHanaCon_<SID>_HDB<instance> AUTOMATED_REGISTER=true
[root]# pcs resource update rsc_SAPHanaCon_<SID>_HDB<instance> AUTOMATED_REGISTER=true
Copy to Clipboard Copied!
検証
AUTOMATED_REGISTER
がtrue
に設定されていることを確認します。pcs resource config rsc_SAPHanaCon_RH1_HDB02
[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 Copied!
AUTOMATED_REGISTER
を true
に設定すると、データ損失や破損のリスクが増加する可能性があります。セカンダリー 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 を設定しなかった場合、設定は例と若干異なる可能性があります。
また、システムの起動時にクラスターサービスを無効にして、自動的に起動しないようにすることもできます。これには、システムの起動ごとに手動の介入が必要ですが、起動の制御と監視が強化されます。
pcs status --full
[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
完全な正常なセットアップでは、追加のクラスター属性が以下の例のように表示されます。
SAPHanaSR-showAttr
[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
第8章 メンテナンス手順
SAP HANA システムレプリケーション HA 環境のさまざまなコンポーネントのメンテナンスを実行できるように、クラスターが計画外の影響を生じないように、特定の手順を適用する必要があります。
メンテナンス手順を使用して、計画的な変更アクティビティー中にクラスターを正常な状態に維持するか、計画外のインシデントの後に健全性を復元します。
8.1. 障害履歴のクリーンアップ
以前のテストから存在する可能性のあるクラスターからの失敗通知を消去します。これにより、障害カウンターと移行のしきい値がリセットされます。
手順
リソースの障害をクリーンアップします。
pcs resource cleanup
[root]# pcs resource cleanup
Copy to Clipboard Copied! STONITH の失敗履歴をクリーンアップします。
pcs stonith history cleanup
[root]# pcs stonith history cleanup
Copy to Clipboard Copied!
検証
クラスター全体のステータスを確認し、障害が表示されていないことを確認します。
pcs status --full
[root]# pcs status --full
Copy to Clipboard Copied! - フェンシングアクションの stonith の履歴に 0 のイベントがあることを確認します。
pcs stonith history
[root]# pcs stonith history
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 クラスターを設定しました。
手順
クラスター全体の
メンテナンス
モードを設定します。pcs property set maintenance-mode=true
[root]# pcs property set maintenance-mode=true
Copy to Clipboard Copied! クラスター全体でメンテナンスを設定すると、メンテナンスフェーズでアクティビティーがクラスターアクションをトリガーできなくなり、HANA の更新プロセスに影響が及ぶようになります。
クラスターリソース管理が完全に無効になっていることを確認します。
pcs status
[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 Copied! 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? を参照してください。
この手順でクラスターを停止した場合は、次の手順に進む前に、そのクラスターを再起動してください。メンテナンスモードを有効のままにしておきます。
HANA の更新後、HANA システムレプリケーションが正しく機能していることを確認します。
systemReplicationStatus.py
スクリプトを使用して、プライマリーインスタンスで HANA システムレプリケーションのステータスを表示します。以下は、メンテナンス中に node2 への手動テイクオーバーの例になります。su - <sid>adm
[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 Copied! 続行する前に、システムレプリケーションが正常であり、
ACTIVE
として報告されていることを確認します。すべてのクラスターリソースを更新して、1 つの監視操作を実行し、それらのステータスを更新します。
pcs resource refresh
[root]# pcs resource refresh Waiting for 1 reply from the controller ... got reply (done)
Copy to Clipboard Copied! HANA リソースによるクラスターおよびノードの属性を更新して、新しい HANA システムのレプリケーションステータスを反映することが重要です。メンテナンスの停止後、クラスターに正しい情報があり、誤ったステータス情報が原因でリカバリーアクションがトリガーされないようにします。
クラスターのステータスを確認し、リソースのステータスとメインの HANA リソーススコア属性を確認します。すべてのリソースは
Started
として表示され、昇格可能なリソースがすべてのノードでUnpromoted
と表示される必要があります。pcs status
[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 Copied! クラスター属性を確認し、
srHook
、roles
、およびscore
属性が正しい新しい状態にあることを確認します。SAPHanaSR-showAttr
[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 Copied! -
srHook
はプライマリーインスタンスを実行しているノード上のPRIM
であり、正しいセカンダリーにSOK
を示します。 -
プライマリーが実行されているノードの
スコア
は150
で、他方では100
です。
-
ステップ 6 と 7 をチェックして、予想される正常な状態の landscape が示されたら、クラスターのメンテナンスモードを再度削除できます。
pcs property set maintenance-mode=
[root]# pcs property set maintenance-mode=
Copy to Clipboard Copied! メンテナンスを解除すると、すべてのリソースのモニター実行がトリガーされます。クラスターは、昇格可能なリソースのステータスを
Promoted
およびUnpromoted
に、プライマリーインスタンスとセカンダリーインスタンスの場所に対応して更新します。リソースは、srHook
属性値に一致するように、srPoll
属性も再度更新するようになりました。
8.5. テイクオーバー後の以前のプライマリーの登録
デフォルトの SAPHanaController
リソースで AUTOMATED_REGISTER=false
を設定する場合、テイクオーバー後に以前のプライマリーインスタンスを新しいセカンダリーとして手動で登録して起動する必要があります。それ以外の場合、未登録のインスタンスは停止されたままになります。
手順
以前のプライマリーを新しいセカンダリーとして登録します。停止した以前のプライマリーインスタンスで、ユーザー &
lt;sid>adm
として実行します。rh1adm $ hdbnsutil -sr_register --remoteHost=<node> \ --remoteInstance=${TINSTANCE} --replicationMode=sync \ --operationMode=logreplay --name=<DC>
rh1adm $ hdbnsutil -sr_register --remoteHost=<node> \ --remoteInstance=${TINSTANCE} --replicationMode=sync \ --operationMode=logreplay --name=<DC>
Copy to Clipboard Copied! -
<
;node&
gt; を新しいプライマリーインスタンスホストに置き換えます。node1 から node2 へのテイクオーバーがある場合は、node2 などに置き換えます。 -
&
lt;DC&
gt; を新しいセカンダリー HANA サイト名に置き換えます(node1 がセカンダリーとして登録される場合など)。 -
システムレプリケーションの要件に応じて、
replicationMode
とoperationMode
の値を選択します。 -
TINSTANCE
は、HANA インスタンスプロファイルを読み取ることでユーザー <sid>adm
に対して自動的に設定される環境変数です。変数の値は HANA インスタンス番号です。
-
<
セカンダリー HANA インスタンスを起動します。新しいセカンダリーインスタンスノードで <
sid>adm
として実行します。rh1adm $ HDB start
rh1adm $ HDB start
Copy to Clipboard Copied!
検証
現在のプライマリーインスタンスで、再確立された 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
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 Copied!
第9章 トラブルシューティング
9.1. srHook クラスター属性値が正しくありません
srHook
属性の値が実際の HANA システムレプリケーションステータスと一致しない場合は、プライマリーインスタンスに障害が発生した場合にクラスターで予期しない動作が発生する可能性があります。
セカンダリーインスタンスの srHook
属性と HANA システムレプリケーションステータスが一致しない場合は、sudo 設定を確認して修正します。
-
セカンダリーの
srHook
クラスター属性は空です。 -
セカンダリーの
srHook
クラスター属性はSOK
に設定されますが、HANA システムレプリケーションは正常ではありません。 -
セカンダリーの
srHook
クラスター属性はSFAIL
に設定され、システムレプリケーションはACTIVE
状態です。
プライマリーインスタンスは、HANA システムレプリケーションの変更のイベントを受け取り、結果をセカンダリーインスタンスの cluster 属性として保存します。
手順
コマンドが
sudo
を使用して実行されるため、secure
ログでcrm_attribute
更新エラーの有無を確認します。ログは、フックスクリプトが実行しようとするが、失敗する可能性があるコマンドを示しています。次の例のように、プライマリー インスタンスノードでcommand not allowed
のようなエラーを確認します。grep crm_attribute /var/log/secure
[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 Copied! ログに記録された
COMMAND
を、sudoers
設定と比較します。sudoers
ファイルを完全に確認し、コマンドに一致する sudo エントリーがあることを確認します。一時的な措置として、このような sudo エントリーが機能するようにするには、原因としてコマンドパラメーターの誤りを除外するためのワイルドカードを使用して単純化します。cat /etc/sudoers.d/20-saphana <sid>adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute * Defaults:<sid>adm !requiretty
[root]# cat /etc/sudoers.d/20-saphana <sid>adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute * Defaults:<sid>adm !requiretty
Copy to Clipboard Copied! <
;sid>
; を小文字の HANA SID に置き換えます。コマンドパスが正しいことを確認します。
ls /usr/sbin/crm_attribute
[root]# ls /usr/sbin/crm_attribute /usr/sbin/crm_attribute
Copy to Clipboard Copied! - sudo 設定を変更します。詳細は、Configuring the HanaSR HA/DR provider for the srConnectionChanged ()hook method を参照してください。
- 他のノードで修正手順を繰り返します。sudo 設定は、すべてのインスタンスで同一である必要があります。
9.2. フックの変更後に HANA インスタンスが起動しない
最近 HA/DR プロバイダーセクションの global.ini
が変更され、HANA インスタンスが起動しなくなりました。
手順
<
sid>adm
ユーザーとして、HANA トレースログディレクトリーに移動します。rh1adm $ cdtrace
rh1adm $ cdtrace
Copy to Clipboard Copied! 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/
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 Copied! 誤った HA/DR
プロバイダー
名や誤ったパス
など、根本原因を特定します。パスとフックスクリプト名を確認します。この例では、HA/DR プロバイダー名hanasr
はフックスクリプト名HanaSR
に一致していません。rh1adm $ ls /usr/share/sap-hana-ha/ ChkSrv.py HanaSR.py samples
rh1adm $ ls /usr/share/sap-hana-ha/ ChkSrv.py HanaSR.py samples
Copy to Clipboard Copied! HanaSR
HA/DR プロバイダー設定を修正します。[ha_dr_provider_hanasr] provider = HanaSR path = /usr/share/sap-hana-ha/ execution_order = 1 [trace] ha_dr_hanasr = info
[ha_dr_provider_hanasr] provider = HanaSR path = /usr/share/sap-hana-ha/ execution_order = 1 [trace] ha_dr_hanasr = info
Copy to Clipboard Copied! -
プロバイダー
は 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) ...
...
*** 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)
...
以下の例のように、問題の根本原因を特定します。
- クラスター通信接続で、HANA メンテナンスと並行して計画されたネットワークメンテナンス。
- ネットワークデバイスの障害や OS またはネットワークレベルの設定ミスによるネットワーク接続の予定外停止。
- ファイアウォール設定は、クラスター通信ポートをブロックします。
クラスターメンテナンスが削除されたときにクラスターがリカバリー措置を受けないように、すべての問題を修正します。
付録A コンポーネントのオプション
A.1. HanaSR 用 HA/DR プロバイダーオプション
HanaSR
HA/DR プロバイダーの設定に使用できるパラメーターを以下に示します。
プロバイダーオプション | 必須 | デフォルト | 説明 |
---|---|---|---|
| yes |
provider パラメーターは、 | |
| yes | フックスクリプトの場所への完全パス。 | |
| yes |
|
A.2. ChkSrv 用 HA/DR プロバイダーオプション
ChkSrv
HA/DR プロバイダーの設定に使用できるパラメーターは以下のとおりです。
プロバイダーオプション | 必須 | デフォルト | 説明 |
---|---|---|---|
| yes |
provider パラメーターは、 | |
| yes | フックスクリプトの場所への完全パス。 | |
| yes |
| |
| いいえ | ignore | 失われたインデックスサーバーが特定されたときにトリガーされるアクション。
|
| いいえ | 9 |
|
| いいえ | 20s |
|
A.3. SAPHanaTopology リソースパラメーター
SAPHanaTopology
リソースの設定に使用できるパラメーターを以下に示します。
リソースオプション | 必須 | デフォルト | 説明 |
---|---|---|---|
| yes | SAP システム識別子。 | |
| yes | SAP HANA インスタンスの数。 | |
| いいえ | 120 |
タイムアウトを定義します。たとえば、リソースエージェントが このリソースの HANA 呼び出しのタイムアウトを増やす場合は、同じリソースの操作タイムアウト値を増やすことも考慮する必要があります。 |
A.4. SAPHANAController リソースパラメーター
SAPHanaController
リソースの設定に使用できるパラメーターを以下に示します。
リソースオプション | 必須 | デフォルト | 説明 |
---|---|---|---|
| yes | SAP システム識別子。 | |
| yes | SAP HANA インスタンスの数。 | |
| いいえ |
デフォルトでは、SAP の標準パスが検索されます。 | |
| いいえ | SAP START プロファイルへの完全修飾パス。デフォルトの SAP インストール後に SAP プロファイルディレクトリーの場所を変更した場合、このパラメーターを指定します。 デフォルトでは、SAP の標準パスが検索されます。 | |
| いいえ | 120 |
タイムアウトを定義します。たとえば、リソースエージェントが このリソースの HANA 呼び出しのタイムアウトを増やす場合は、同じリソースの操作タイムアウト値を増やすことも考慮する必要があります。 |
| いいえ | SAP HANA インスタンスプロファイルの名前。デフォルトの SAP インストール後に SAP HANA インスタンスプロファイルの名前を変更した場合、このパラメーターを指定します。 デフォルトでは、SAP の標準パスが検索されます。 | |
| いいえ | false |
プライマリーサイトをローカルで再起動するのではなく、リソースエージェントがセカンダリーサイトへのテイクオーバーをトリガーするかどうかを定義します。ただし、テイクオーバーは、SAP HANA ランドスケープのステータスが
|
| いいえ | false |
リソースエージェントがクラスターリソースの起動時に以前のプライマリーインスタンスをセカンダリーとして自動的に登録し、
|
| いいえ | 7200 |
2 つのプライマリータイムスタンプ(LPT)の間に必要な時間差。デュアルプライマリー状況が発生した場合です。両方のノードの最後のプライマリータイムスタンプの違いが
|
PREFER_SITE_TAKEOVER
を true
に設定することを推奨します。これにより、プライマリー HANA インスタンスの障害が検出されると、HA クラスターがテイクオーバーをトリガーできます。ほとんどの場合、元のプライマリーインスタンスが再起動してすべてのデータをディスクからメモリーにリロードするためよりも、新しい HANA プライマリーインスタンスが完全にアクティブになるまでの時間が短くなります。
AUTOMATED_REGISTER
を false
に設定してまま、Operator は以前に失敗したプライマリーインスタンスの健全性とデータの一貫性を最初に検証するオプションを与えてから、新しいセカンダリーインスタンスを手動で登録して、両方のインスタンス間で HANA システムレプリケーションを再確立し、インスタンスを手動で開始します。
AUTOMATED_REGISTER
を true
に設定して、テイクオーバーの発生後に以前のプライマリーインスタンスの新しいセカンダリーとして自動登録を有効にします。これにより、HANA システムレプリケーションセットアップの可用性が向上し、SAP HANA システムレプリケーション環境におけるいわゆるデュアルプライマリー状況を防ぐことができます。
A.5. SAPHanaFilesystem リソースパラメーター
SAPHanaFilesystem
リソースの設定に使用できるパラメーターを次に示します。
リソースオプション | 必須 | デフォルト | 説明 |
---|---|---|---|
| yes | SAP システム識別子。 | |
| yes | SAP HANA インスタンスの数。 | |
| いいえ |
|
監視対象のディレクトリーへのパス。リソースエージェントは、 |
| いいえ | fence | モニターが繰り返し失敗した場合のアクション。
|
付録B 有用な情報
B.1. クラスター情報の説明
クラスターリソースが起動すると、最初の監視操作が実行され、初期リソース情報を収集します。HANA リソースは、クラスターノード上の SAP HANA データベースの現在の状態を記述する、収集されたランドスケープ情報のノード属性とクラスタープロパティーを追加します。
ノード属性を含むクラスターステータス
pcs status --full
[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
...
クラスターのプロパティー
SAP HANA リソースエージェントの新しい生成では、HANA インスタンスに関する情報を SAPHanaSR
という名前のプロパティーセットにクラスタープロパティーとして保存します。
root
ユーザーとして CIB (クラスター情報ベース)にクエリーを実行し、クラスター属性の内容を確認できます。HANA リソースと HanaSR
フックはこれらの属性を更新します。
以下に例を示します。
cibadmin --query --xpath "//crm_config//cluster_property_set[@id='SAPHanaSR']"
[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>
SAPHanaSR-showAttr
ツール SAPHanaSR-showAttr
を使用して、すべての HANA クラスター属性情報を事前にフォーマットされた概要で表示できます。
pcs status [--full]
に加えてこのステータスを確認して、全体的なランドスケープを確認します。
以下に例を示します。
SAPHanaSR-showAttr
[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