バージョン管理
バージョン | 改訂日 | 説明 | リリース日 |
1.0 | 2019/4/15 | ||
1.1 | 2019/7/30 | 1. 障害カウントの説明が更新されました。 2. 起動およびシャットダウンシーケンスの説明が更新されました。 | 2019/7/30 |
SAP 高可用性環境メンテナンスの概要
このトピックは、SUSE HAE 12 クラスタデプロイメントまたは SAP HANA Elastic Compute Service (ECS) インスタンスに基づく SAP システムアプリケーションのメンテナンス操作が必要なシナリオに適用されます。たとえば、ECS インスタンスの仕様のスケールアップまたはスケールダウン、SAP アプリケーションまたはデータベースのアップグレード、プライマリノードとセカンダリノードの定期メンテナンスの実行、ノードフェールオーバーシナリオの前処理と後処理の処理などです。
SUSE HAE によって管理される SAP システムの場合、クラスタノードでメンテナンスタスクを実行する必要がある場合は、ノードで実行されているリソースを停止するか、リソースを移動するか、ノードをシャットダウンまたは再起動する必要があります。さらに、クラスタ内のリソースの制御を一時的に引き継ぐ必要がある場合があります。
このトピックで提供されるシナリオでは、SAP HANA 高可用性を例として使用していますが、同様のメンテナンス操作が SAP アプリケーション高可用性にも適用されます。
このトピックは、SUSE および SAP が提供する標準のインストールおよび管理ドキュメントの代わりになるものではありません。高可用性環境のメンテナンス方法の詳細については、SUSE および SAP の公式ドキュメントを参照してください。
SUSE HAE 操作ガイド:
SAP HANA HSR 構成ガイド:
SAP 高可用性環境メンテナンスのシナリオ
SUSE Pacemaker は、さまざまなメンテナンスニーズに対応するさまざまなオプションを提供します。
クラスタのモードをメンテナンスに設定する
グローバルクラスタプロパティ maintenance-mode を使用して、すべてのリソースを一度にメンテナンス状態に切り替えることができます。その後、クラスタはリソースの監視を停止します。
ノードのモードをメンテナンスに設定する
指定されたノードで実行されているすべてのリソースを一度にメンテナンス状態に切り替えることができます。その後、クラスタはリソースの監視を停止します。
ノードのモードをスタンバイに設定する
スタンバイモードのノードはリソースを実行できません。リソースを実行できる他のノードがない場合、ノードで実行されているすべてのリソースが削除または停止されます。さらに、ロールが Stopped に設定されている操作を除き、ノードのすべての監視操作も停止されます。
別のノードで実行されているサービスの提供を継続しながら、クラスタ内のノードを停止する必要がある場合は、このオプションを使用できます。
リソースのモードをメンテナンスに設定する
リソースをメンテナンスモードに切り替えると、リソースに対して監視アクションはトリガーされません。このリソースによって管理されているサービスを手動で変更する必要があり、変更中にクラスタがリソースで監視操作を実行しないようにする場合は、このオプションを使用できます。
リソースを非管理モードに設定する
is-managed プロパティを使用して、クラスタスタック管理からリソースを一時的に解放できます。これは、リソースによって管理されているサービスを手動で変更できることを意味します。ただし、クラスタは引き続きリソースを監視し、エラーを報告します。クラスタがリソースの監視を停止するようにするには、リソースごとのメンテナンスモードを使用します。
1. プライマリノードの例外のトラブルシューティング
プライマリノードで例外が発生すると、HAE はフェールオーバーをトリガーして、セカンダリノード (ノード B) をプライマリロールに昇格させます。ただし、元のプライマリノード (ノード A) は引き続きプライマリロールを保持します。したがって、修復後に元のプライマリノード (ノード A) で Pacemaker サービスを再起動する前に、HANA System Replication (HSR) を手動で再構成して、ノード A をセカンダリノードとして登録する必要があります。
この例では、元のプライマリノードは saphana-01 で、セカンダリノードは saphana-02 です。
1.1 SUSE HAE の通常状態のクエリ
ノードにログインし、crm status コマンドを実行して、HAE の通常状態をクエリします。
# crm status
/* HAE のステータスを表示 */
プライマリノードで例外が発生した後、HAE はセカンダリノードをプライマリノードに自動的に昇格させます。
# crm status
/* HAE のステータスを表示 */
1.2 HSR を再度登録して、元のプライマリノードの障害を修正する
HSR を再構成する前に、正しいプライマリノードとセカンダリノードを使用していることを確認してください。そうしないと、データが上書きされたり失われたりする可能性があります。
元のプライマリノードに SAP HANA インスタンスユーザーとしてログインし、HSR を構成します。
h01adm@saphana-01:/usr/sap/H01/HDB00> hdbnsutil -sr_register --remoteHost=saphana-02 --remoteInstance=00 --replicationMode=syncmem --name=saphana-01 --operationMode=logreplay
/* サイトを追加 */
/* 非アクティブなネームサーバーを確認 */
/* ネームサーバー saphana-01:30001 が応答していません。 */
/* 情報を収集 */
/* ローカル ini ファイルを更新 */
/* 完了 */
1.3 SBD のステータスを確認する
ノードスロットが clear 状態ではない場合は、ステータスを clear に切り替える必要があります。
# sbd -d /dev/vdc list
/* SBD のステータスを表示 */
# sbd -d /dev/vdc message saphana-01 clear
# sbd -d /dev/vdc message saphana-02 clear
# sbd -d /dev/vdc list
/* SBD のステータスをクリア */
1.4 Pacemaker を起動する
Pacemaker を起動するには、次のコマンドを実行します。Pacemaker が起動すると、HAE は SAP HANA を自動的に起動します。
# systemctl start pacemaker
/* Pacemaker を起動 */
この場合、元のセカンダリノードがプライマリノードになります。次のコードは、HAE のステータスを示しています。
# crm status
/* HAE のステータスを表示 */
1.5 SAP HANA HSR のステータスを確認する
SAP HANA の次の python スクリプトを使用します。
プライマリノードに SAP HANA インスタンスユーザーとしてログインします。すべての SAP HANA プロセスの レプリケーション状態アクティブ が に設定されていることを確認します。
saphana-02:~ # su - h01adm h01adm@saphana-02:/usr/sap/H01/HDB00> cdpy h01adm@saphana-02:/usr/sap/H01/HDB00/exe/python_support> python systemReplicationStatus.py /* システムレプリケーションステータスを表示 */SUSE が提供する SAP HAN SR ツールを使用してレプリケーションステータスを確認し、セカンダリノードの sync_state が SOK であることを確認します。
saphana-02:~ # SAPHanaSR-showAttr /* システムレプリケーション属性を表示 */
1.6 (オプション) 障害カウントをリセットする
リソースに障害が発生した場合、リソースは自動的に再起動されますが、障害が発生するたびにリソースの障害カウントが増加します。リソースに migration-threshold を構成した場合、障害の数がしきい値に達するまで、ノードはリソースを実行できません。したがって、障害カウントを手動でクリアする必要があります。
次のコマンドを実行して、障害カウントをクリアできます。
# crm resource cleanup [リソース名] [ノード]
/* リソースの障害カウントをクリア */
たとえば、ノード saphana-01 のリソース rsc_SAPHana_HDB が修正されたとします。この場合、次のコマンドを実行して、リソースの監視アラートをクリーンアップする必要があります。
crm resource cleanup rsc_SAPHana_HDB saphana-01
/* リソース rsc_SAPHana_HDB の saphana-01 ノードの障害カウントをクリア */
2. セカンダリノードの例外のトラブルシューティング
セカンダリノードでエラーが発生した場合、プライマリノードは影響を受けず、プライマリセカンダリスイッチオーバーはトリガーされません。セカンダリノードが障害から回復し、Pacemaker が起動すると、SAP HANA が起動されます。プライマリロールとセカンダリロールは変更されず、手動による介入は必要ありません。
この例では、元のプライマリノードは saphana-02 で、セカンダリノードは saphana-01 です。
2.1 HAE の通常状態のクエリ
SUSE HAE の通常状態のノードにログインし、crm status コマンドを実行して、HAE の通常状態をクエリします。
# crm status
/* HAE のステータスを表示 */
2.2 Pacemaker を再起動する
セカンダリノードが障害から回復した後、SBD を確認し、Pacemaker を再起動します。
# systemctl start pacemaker
/* Pacemaker を再起動 */
HSR は元のプライマリ/セカンダリ関係を維持します。次のコードは、HAE のステータスを示しています。
# crm status
/* HAE のステータスを表示 */
2.3 SAP HANA HSR のステータスを確認する
詳細については、「1.5 SAP HANA HSR のステータスを確認する」をご参照ください。
2.4 (オプション) 障害カウントをリセットする
3. メンテナンスのためにプライマリノードとセカンダリノードを停止する
クラスタのモードをメンテナンスに設定し、セカンダリノードとプライマリノードを順番にシャットダウンします。
この例では、元のプライマリノードは saphana-02 で、セカンダリノードは saphana-01 です。
3.1 HAE の通常状態のクエリ
SUSE HAE の通常状態のノードにログインし、crm status コマンドを実行して、HAE の通常状態をクエリします。
# crm status
/* HAE のステータスを表示 */
3.2 クラスタとマスター/スレーブリソースセットのモードをメンテナンスに設定する
プライマリノードにログインし、クラスタのモードをメンテナンスに設定します。
# crm configure property maintenance-mode=true
/* クラスタをメンテナンスモードに設定 */
マスター/スレーブリソースセットのモードをメンテナンスに設定します。このトピックでは、rsc_SAPHana_HDB と rsc_SAPHanaTopology_HDB を使用します。
# crm resource maintenance rsc_SAPHana_HDB true
/* リソース rsc_SAPHana_HDB をメンテナンスモードに設定 */
# crm resource maintenance rsc_SAPHanaTopology_HDB true
/* リソース rsc_SAPHanaTopology_HDB をメンテナンスモードに設定 */
次のコードは、HAE のステータスを示しています。
# crm status
/* HAE のステータスを表示 */
3.3 プライマリノードとセカンダリノードの SAP HANA を停止し、ECS インスタンスを停止する
ノードに SAP HANA インスタンスユーザーとしてログインします。セカンダリノードの SAP HANA を停止してから、プライマリノードの SAP HANA を停止します。
saphana-01:~ # su - h01adm
h01adm@saphana-01:/usr/sap/H01/HDB00> HDB stop
/* セカンダリノードの SAP HANA を停止 */
saphana-02:~ # su - h01adm
h01adm@saphana-02:/usr/sap/H01/HDB00> HDB stop
/* プライマリノードの SAP HANA を停止 */
3.4 ECS インスタンスの SAP HANA プライマリノードとセカンダリノードを起動し、クラスタとリソースセットを通常モードに復元する
プライマリノードとセカンダリノードに順番にログインし、次のコマンドを実行して Pacemaker を起動します。
# systemctl start pacemaker
/* Pacemaker を起動 */
クラスタとリソースセットを通常モードに復元します。
# crm configure property maintenance-mode=false
/* クラスタを通常モードに復元 */
# crm resource maintenance rsc_SAPHana_HDB false
/* リソース rsc_SAPHana_HDB を通常モードに復元 */
# crm resource maintenance rsc_SAPHanaTopology_HDB false
/* リソース rsc_SAPHanaTopology_HDB を通常モードに復元 */
SUSE HAE クラスタは、プライマリノードとセカンダリノードの SAP HANA を自動的に起動し、元のプライマリロールとセカンダリロールをそのまま維持します。
次のコードは、HAE のステータスを示しています。
# crm status
/* HAE のステータスを表示 */
3.5 SAP HANA HSR のステータスを確認する
詳細については、「1.5 SAP HANA HSR のステータスを確認する」をご参照ください。
3.6 (オプション) 障害カウントをリセットする
詳細については、「1.6 (オプション) 障害カウントをリセットする」をご参照ください。
4. メンテナンスのためにプライマリノードを停止する
このセクションでは、プライマリノードのモードをスタンバイに設定します。クラスタはスイッチオーバーをトリガーします。
この例では、元のプライマリノードは saphana-02 で、セカンダリノードは saphana-01 です。
4.1 SUSE HAE の通常状態のクエリ
ノードにログインし、crm status コマンドを実行して、HAE の通常状態をクエリします。
# crm status
/* HAE のステータスを表示 */
4.2 プライマリノードのモードをスタンバイに設定する
このトピックでは、プライマリノードは saphana-02 です。
# crm node standby saphana-02
/* ノード saphana-02 をスタンバイモードに設定 */
クラスタは saphana-02 の SAP HANA を停止し、saphana-01 の SAP HANA をプライマリノードとして設定します。
次のコードは、HAE のステータスを示しています。
# crm status
/* HAE のステータスを表示 */
4.3 ECS インスタンスを停止し、ダウンタイムメンテナンスタスクを実行する
4.4 メンテナンスノードを起動し、HSR を再度登録する
メンテナンスタスクを実行するノードにログインし、HSR を登録します。
# hdbnsutil -sr_register --remoteHost=saphana-01 --remoteInstance=00 --replicationMode=syncmem --name=saphana-02 --operationMode=logreplay
/* HSR を登録 */
4.5 Pacemaker を起動し、スタンバイノードをオンラインモードに復元する
# systemctl start pacemaker
/* Pacemaker を起動 */
# crm node online saphana-02
/* ノード saphana-02 をオンラインモードに復元 */
SUSE HAE クラスタは、セカンダリノードの SAP HANA を自動的に起動します。
次のコードは、HAE のステータスを示しています。
# crm status
/* HAE のステータスを表示 */
4.6 SAP HANA HSR のステータスを確認する
詳細については、「1.5 SAP HANA HSR のステータスを確認する」をご参照ください。
4.7 (オプション) 障害カウントをリセットする
詳細については、「1.6 (オプション) 障害カウントをリセットする」をご参照ください。
5. メンテナンスのためにセカンダリノードを停止する
セカンダリノードのモードをメンテナンスに設定します。
この例では、元のプライマリノードは saphana-02 で、セカンダリノードは saphana-01 です。
5.1 HAE の通常状態のクエリ
SUSE HAE の通常状態のノードにログインし、crm status コマンドを実行して、HAE の通常状態をクエリします。
# crm status
/* HAE のステータスを表示 */
5.2 セカンダリノードのモードをメンテナンスに設定する
# crm node maintenance saphana-01
/* ノード saphana-01 をメンテナンスモードに設定 */
設定が有効になったら、次のコードを使用して HAE のステータスを表示します。
# crm status
/* HAE のステータスを表示 */
5.3 セカンダリノードの SAP HANA を停止し、ECS インスタンスをシャットダウンして、ダウンタイムメンテナンスタスクを実行する
セカンダリノードに SAP HANA インスタンスユーザーとしてログインします。次に、セカンダリノードの SAP HANA を停止します。
saphana-01:~ # su - h01adm
h01adm@saphana-01:/usr/sap/H01/HDB00> HDB stop
/* セカンダリノードの SAP HANA を停止 */
5.4 ECS インスタンスの SAP HANA セカンダリノードを起動し、ノードを通常モードに復元する
セカンダリノードにログインし、Pacemaker を起動します。
# systemctl start pacemaker
/* Pacemaker を起動 */
セカンダリノードを通常モードに復元します。
saphana-02:~ # crm node ready saphana-01
/* ノード saphana-01 を通常モードに復元 */
SUSE HAE クラスタは、セカンダリノードの SAP HANA を自動的に起動し、元のプライマリロールとセカンダリロールをそのまま維持します。
次のコードは、HAE のステータスを示しています。
# crm status
/* HAE のステータスを表示 */
5.5 SAP HANA HSR のステータスを確認する
詳細については、「1.5 SAP HANA HSR のステータスを確認する」をご参照ください。
5.6 (オプション) 障害カウントをリセットする
詳細については、「1.6 (オプション) 障害カウントをリセットする」をご参照ください。