5.5. テスト 3: プライマリーノードを 3 番目のサイトにフェイルオーバーする


Expand

テストの内容

プライマリーを 3 番目のサイトにフェイルオーバーします..3 番目のサイトがプライマリーになる。

セカンダリーが 3 番目のサイトに再登録される。

テストの前提条件

  • DC1、DC2、DC3 上の SAP HANA が実行されています。
  • クラスターがエラーや警告なく稼働している。
  • System Replication が設定され、同期されている (% python systemReplicationStatus.py を確認してください)。

テストの手順

回復できるようにクラスターを maintenance-mode にします。

% hdbnsuttil -sr_takeover を使用して、3 番目のノードから HANA データベースをテイクオーバーします。

テストの開始

remotehost3:rh2adm> で SAP HANA コマンドを実行します: hdbnsutil -sr_takeover

テストのモニタリング

3 番目のサイトで sidadm として % watch hdbnsutil -sr_state を実行します。

期待される結果

  • 3 番目のノードがプライマリーになります。
  • セカンダリーノードは、プライマリーマスターを remotehost3 に変更します。以前のプライマリーノードを新しいプライマリーに再登録する必要があります。

初期状態に戻す方法

テスト 4: プライマリーノードを 1 番目のサイトにフェイルバックする を実行します。

詳細な説明:

  • データベースの確認 を使用して、データベースが実行されているか確認し、レプリケーションのステータスを確認します。

    clusternode2:rh2adm> hdbnsutil -sr_state | egrep -e "^mode:|primary masters"

    出力は、たとえば次のようになります。

    mode: syncmem
    primary masters: clusternode1

    この場合、プライマリーデータベースは clusternode1 です。このコマンドを clusternode1 で実行すると、次の結果が得られます。

    mode: primary

    このプライマリーノードでは、システムのレプリケーションステータスを表示することもできます。次のようになります。

    clusternode1:rh2adm> cdpy
    clusternode1:rh2adm> 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 |clusternode1 |30201 |nameserver   |        1 |      1 |DC1       |remotehost3    |    30201 |        3 |DC3       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |RH2      |clusternode1 |30207 |xsengine     |        2 |      1 |DC1       |remotehost3    |    30207 |        3 |DC3       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |RH2      |clusternode1 |30203 |indexserver  |        3 |      1 |DC1       |remotehost3    |    30203 |        3 |DC3       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |SYSTEMDB |clusternode1 |30201 |nameserver   |        1 |      1 |DC1       |clusternode2    |    30201 |        2 |DC2       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |RH2      |clusternode1 |30207 |xsengine     |        2 |      1 |DC1       |clusternode2    |    30207 |        2 |DC2       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    |RH2      |clusternode1 |30203 |indexserver  |        3 |      1 |DC1       |clusternode2    |    30203 |        2 |DC2       |YES           |SYNCMEM     |ACTIVE      |               |        True |
    
    status system replication site "3": ACTIVE
    status system replication site "2": ACTIVE
    overall system replication status: ACTIVE
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 1
    site name: DC1
  • これで適切な環境が整い、3 つのノードすべてで、システムレプリケーションステータスのモニタリングを別のウィンドウで開始できるようになりました。テストを開始する前に、3 つのモニターを開始する必要があります。テストが実行されると出力が変更されます。したがって、テストが完了するまでは実行し続けてください。

    古いプライマリーノードでは、テスト中、clusternode1 が別のウィンドウで実行されました。

    clusternode1:rh2adm> watch -n 5 'python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'

    clusternode1 の出力は次のようになります。

    Every 5.0s: python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/exe/python_support/systemReplicati...  clusternode1: Tue XXX XX HH:MM:SS 2023
    
    |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 |clusternode1 |30201 |nameserver   |        1 |	 1 |DC1       |remotehost3    |    30201 |        3 |DC3	  |YES		 |
    ASYNC       |ACTIVE	 |               |        True |
    |RH2	  |clusternode1 |30207 |xsengine     |        2 |	 1 |DC1       |remotehost3    |    30207 |        3 |DC3	  |YES		 |
    ASYNC       |ACTIVE	 |               |        True |
    |RH2	  |clusternode1 |30203 |indexserver  |        3 |	 1 |DC1       |remotehost3    |    30203 |        3 |DC3	  |YES		 |
    ASYNC       |ACTIVE	 |               |        True |
    |SYSTEMDB |clusternode1 |30201 |nameserver   |        1 |	 1 |DC1       |clusternode2    |    30201 |        2 |DC2	  |YES		 |
    SYNCMEM     |ACTIVE	 |               |        True |
    |RH2	  |clusternode1 |30207 |xsengine     |        2 |	 1 |DC1       |clusternode2    |    30207 |        2 |DC2	  |YES		 |
    SYNCMEM     |ACTIVE	 |               |        True |
    |RH2	  |clusternode1 |30203 |indexserver  |        3 |	 1 |DC1       |clusternode2    |    30203 |        2 |DC2	  |YES		 |
    SYNCMEM     |ACTIVE	 |               |        True |
    
    status system replication site "3": ACTIVE
    status system replication site "2": ACTIVE
    overall system replication status: ACTIVE
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 1
    site name: DC1
    Status 15

    remotehost3 で同じコマンドを実行します。

    remotehost3:rh2adm> watch -n 5 'python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'

    結果は次のようになります。

    this system is either not running or is not primary system replication site

    これは、テストでフェイルオーバーが開始された後に変更されます。出力は、テスト開始前のプライマリーノードの例と似ています。

    2 番目のノードで、以下を開始します。

    clusternode2:rh2adm> watch -n 10 'hdbnsutil -sr_state | grep masters'

    これにより、現在のマスターの clusternode1 が表示され、フェイルオーバーの開始直後に切り替わります。

  • すべてが正しく設定されていることを確認するには、global.ini も確認します。
  • DC1、DC2、DC3 の global.ini を確認します。

    3 つのノードすべてで、global.ini に次の内容が含まれている必要があります。

    [persistent]
    log_mode=normal
    [system_replication]
    register_secondaries_on_takeover=true

    以下を使用して global.ini を編集できます。

    clusternode1:rh2adm>vim /usr/sap/${SAPSYSTEMNAME}/SYS/global/hdb/custom/config/global.ini
  • (オプション) クラスターを maintenance-mode にします。

    [root@clusternode1]# pcs property set maintenance-mode=true

    テスト中に、maintenance-mode を設定してもしなくても、フェイルオーバーが機能することがわかります。したがって、最初のテストは設定なしで実行できます。回復中にこれを設定する必要があります。ここでは、この設定があってもなくても機能することを示しています。これは、プライマリーにアクセスできない場合のオプションです。

  • テストを開始します: DC3 にフェイルオーバーします。remotehost3 で次を実行してください。

    remotehost3:rh2adm> hdbnsutil -sr_takeover
    done.

    テストが開始されました。以前に開始したモニターの出力を確認してください。clusternode1 では、システムレプリケーションステータスは remotehost3 および clusternode2 (DC2) との関係を失います。

    Every 5.0s: python /usr/sap/RH2/HDB02/exe/python_support/systemReplicationStatus.py ; echo Status $?                               clusternode1: Mon Sep  4 11:52:16 2023
    
    |Database |Host   |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replic
    ation                  |Secondary    |
    |         |       |      |             |          |        |          |Host      |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status
     Details               |Fully Synced |
    |-------- |------ |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |------
    ---------------------- |------------ |
    |SYSTEMDB |clusternode1 |30201 |nameserver   |        1 |      1 |DC1       |clusternode2    |    30201 |        2 |DC2       |YES           |SYNCMEM     |ERROR       |Commun
    ication channel closed |       False |
    |RH2      |clusternode1 |30207 |xsengine     |        2 |      1 |DC1       |clusternode2    |    30207 |        2 |DC2       |YES           |SYNCMEM     |ERROR       |Commun
    ication channel closed |       False |
    |RH2      |clusternode1 |30203 |indexserver  |        3 |      1 |DC1       |clusternode2    |    30203 |        2 |DC2       |YES           |SYNCMEM     |ERROR       |Commun
    ication channel closed |       False |
    
    status system replication site "2": ERROR
    overall system replication status: ERROR
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 1
    site name: DC1
    Status 11

    クラスターは、この動作をまだ把握していません。システムレプリケーションステータスの戻りコードを確認すると、戻りコード 11 はエラーを意味し、何か問題があることがわかります。アクセスできる場合は、今すぐ maintenance-mode に入ることを推奨します。

    remotehost3 が新しいプライマリーになり、clusternode2 (DC2) が remotehost3 上の新しいプライマリーとして自動的に登録されます。

    remotehost3 のシステムレプリケーション状態の出力例:

    Every 5.0s: python /usr/sap/RH2/HDB02/exe/python_support/systemReplicationStatus.py ; echo Status $?                               remotehost3: Mon Sep  4 13:55:29 2023
    
    |Database |Host   |Port  |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary     |Replication |Replication |Replic
    ation    |Secondary    |
    |         |       |      |             |          |        |          |Host      |Port      |Site ID   |Site Name |Active Status |Mode        |Status      |Status
     Details |Fully Synced |
    |-------- |------ |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |------
    -------- |------------ |
    |SYSTEMDB |remotehost3 |30201 |nameserver   |        1 |      3 |DC3       |clusternode2    |    30201 |        2 |DC2       |YES           |SYNCMEM     |ACTIVE      |
             |        True |
    |RH2      |remotehost3 |30207 |xsengine     |        2 |      3 |DC3       |clusternode2    |    30207 |        2 |DC2       |YES           |SYNCMEM     |ACTIVE      |
             |        True |
    |RH2      |remotehost3 |30203 |indexserver  |        3 |      3 |DC3       |clusternode2    |    30203 |        2 |DC2       |YES           |SYNCMEM     |ACTIVE      |
             |        True |
    
    status system replication site "2": ACTIVE
    overall system replication status: ACTIVE
    
    Local System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    mode: PRIMARY
    site id: 3
    site name: DC3
    Status 15

    戻りコード 15 も、すべてが正常であることを示していますが、clusternode1 が見つかりません。これは手動で再登録する必要があります。以前のプライマリー clusternode1 はリスト表示されないため、レプリケーション関係は失われます。

  • maintenance-mode を設定します。

    まだ行っていない場合は、次のコマンドを使用して、クラスターの 1 つのノードでクラスターに maintenance-mode を設定します。

    [root@clusternode1]# pcs property  set maintenance-mode=true

    このコマンドを実行すると、maintenance-mode がアクティブか確認できます。

    [root@clusternode1]# pcs resource
      * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02] (unmanaged):
        * SAPHanaTopology_RH2_02    (ocf::heartbeat:SAPHanaTopology):        Started clusternode2node2 (unmanaged)
        * SAPHanaTopology_RH2_02    (ocf::heartbeat:SAPHanaTopology):        Started clusternode1node1 (unmanaged)
      * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable, unmanaged):
        * SAPHana_RH2_02    (ocf::heartbeat:SAPHana):        Slave clusternode2node2 (unmanaged)
        * SAPHana_RH2_02    (ocf::heartbeat:SAPHana):        Master clusternode1node1 (unmanaged)
      * vip_RH2_02_MASTER   (ocf::heartbeat:IPaddr2):        Started clusternode1node1 (unmanaged)

    リソースは unmanaged を表示しています。これは、クラスターが maintenance-mode=true であることを示します。仮想 IP アドレスは引き続き clusternode1 で開始されます。この IP を別のノードで使用する場合は、maintanence-mode=true を設定する前に vip_RH2_02_MASTER を無効にしてください。

    [root@clusternode1]# pcs resource disable vip_RH2_02_MASTER
  • clusternode1 を再登録します。

    clusternode1 の sr_state を確認すると、DC2 のみとの関係がわかります。

    clusternode1:rh2adm> hdbnsutil -sr_state
    
    System Replication State
    ~~~~~~~~~~~~~~~~~~~~~~~~
    
    online: true
    
    mode: primary
    operation mode: primary
    site id: 1
    site name: DC1
    
    is source system: true
    is secondary/consumer system: false
    has secondaries/consumers attached: true
    is a takeover active: false
    is primary suspended: false
    
    Host Mappings:
    ~~~~~~~~~~~~~~
    
    clusternode1 -> [DC2] clusternode2
    clusternode1 -> [DC1] clusternode1
    
    
    Site Mappings:
    ~~~~~~~~~~~~~~
    DC1 (primary/primary)
        |---DC2 (syncmem/logreplay)
    
    Tier of DC1: 1
    Tier of DC2: 2
    
    Replication mode of DC1: primary
    Replication mode of DC2: syncmem
    
    Operation mode of DC1: primary
    Operation mode of DC2: logreplay
    
    Mapping: DC1 -> DC2
    done.

    しかし、DC2 を確認すると、プライマリーデータベースサーバーは DC3 です。したがって、DC1 からの情報は正しくありません。

    clusternode2:rh2adm> hdbnsutil -sr_state

    DC1 でシステムレプリケーションステータスを確認すると、リターンコードは 12 ですが、これは不明です。したがって、DC1 を再登録する必要があります。

    このコマンドを使用すると、以前のプライマリー clusternode1 を remotehost3 の新しいセカンダリーとして登録できます。

    clusternode1:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=asyncsyncmem --name=DC1 --remoteName=DC3 --operationMode=logreplay --online

    登録が完了すると、remotehost3 上で 3 つのサイトすべてが複製され、ステータス (戻りコード) が 15 に変わります。

    これが失敗した場合は、DC1 と DC3 のレプリケーション関係を手動で削除する必要があります。セカンダリーの登録 に記載されている手順に従ってください。

    たとえば、次のように既存の関係をリストします。

    clusternode1:rh2adm> hdbnsutil -sr_state

    既存の関係を削除するには、次を使用できます。

    clusternode1:rh2adm> hdbnsutil -sr_unregister --name=DC2`

    通常、これは必要ないかもしれません。テスト 4 は、テスト 3 の後に実行することを想定したものです。回復手順は、テスト 4 を実行することです。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る