検索

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

download PDF

テストの内容

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

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

テストの前提条件

  • DC1、DC2、DC3 上の SAP HANA が稼働している。
  • クラスターがエラーや警告なく稼働している。
  • システムレプリケーションが設定され、同期されている (%python systemReplicationStatus.py を確認してください)。

テストの手順

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

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

テストの開始

SAP HANA commandon remotehost3: rh2adm>: hdbnsutil -sr_takeoverを実行します。

テストのモニタリング

3 番目のサイトで remotehost3:rh2adm> 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 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

クラスターはこの動作を認識しません。システムレプリケーションのステータスの戻りコードを確認すると、Returncode 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 clusternode2 (unmanaged)
    * SAPHanaTopology_RH2_02    (ocf::heartbeat:SAPHanaTopology):        Started clusternode1 (unmanaged)
  * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable, unmanaged):
    * SAPHana_RH2_02    (ocf::heartbeat:SAPHana):        Slave clusternode2 (unmanaged)
    * SAPHana_RH2_02    (ocf::heartbeat:SAPHana):        Master clusternode1 (unmanaged)
  * vip_RH2_02_MASTER   (ocf::heartbeat:IPaddr2):        Started clusternode1 (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=async --name=DC1 --remoteName=DC3 --operationMode=logreplay --online

登録が完了すると、3 つのサイトがすべてレプリケートされ、ステータス (戻りコード) が 15 に変わります。これが失敗した場合は、DC1 および DC3 でのレプリケーション関係を手動で削除する必要があります。セカンダリーの登録 に記載されている手順に従ってください。たとえば、以下を使用して、既存の関係を一覧表示します。

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

© 2024 Red Hat, Inc.