内容

はじめに

前提条件

要件

使用するコンポーネント

背景説明

設定

ネットワーク図

コンフィギュレーション

検証

レプリケーションリーダーノードを確認する方法

障害回復登録後のバリデータ(vBond)パスワードの更新

バリデータ(vbond)パスワードの更新

障害回復登録後のオーバーレイへの新しいバリデータ(vBond)の追加

障害回復オーバーレイのアップグレード

はじめる前に

アップグレード プロセス

関連情報

はじめに

このドキュメントでは、Cisco vManageとそのプライマリ/セカンダリ代表ルータ(DR)のステートフルな特性について説明します。自動データレプリケーションを使用した手動フェールオーバーが可能になります。

前提条件

要件

vManage 3ノードクラスタに関する知識があることが推奨されます。

ディザスタリカバリを進めるには、2つの別個のvManage 3ノードクラスタを設定し、動作させる必要があります。アクティブクラスタでは、バリデータとコントローラがオンボーディングされている必要があります。DRサイトにバリデータとコントローラがある場合は、DR vManageクラスタではなく、アクティブクラスタにもオンボーディングする必要があります。

シスコでは、ディザスタリカバリを登録する前に、次の要件を満たしていることを推奨しています。

- トランスポートVPN(VPN 0)上で、プライマリノードとセカンダリノードがHTTPSで到達可能であることを確認します。

- セカンダリ設定のCisco vSmart ControllerおよびCisco vBond Orchestratorsがプライマリ設定に接続されていることを確認します。

- Cisco vManageプライマリノードとセカンダリノードで同じCisco vManageバージョンが実行されていることを確認します。

- VPN 0のアウトオブバンドクラスタインターフェイス：

- クラスタ内のvManageインスタンスごとに、VPN 0（トランスポート）およびVPN 512（管理）に使用されるインターフェイスの他に、3番目のインターフェイス（クラスタリンク）が必要です。

- このインターフェイスは、クラスタ内のvManageサーバ間の通信および同期に使用されます。

- このインターフェイスは、1 Gbps以上で、遅延が4 ms以下である必要があります。10 Gbpsインターフェイスを推奨

- 両方のvManageノードは、このインターフェイスを介して相互に到達できる必要があります。このインターフェイスがレイヤ2セグメントであるか、またはレイヤ3ルーティングを介しているかに関係ありません。

- 各vManageでは、このインターフェイスをGUIでクラスタインターフェイス(Administration > Cluster Management：独自のアウトオブバンドクラスタインターフェイス(OOB)のIPアドレス、ユーザ、およびパスワードを示します)として設定する必要があります。

- Cisco vManageノードがデータセンター間で相互に通信できるようにするには、データセンターファイアウォールでTCPポート8443および830を有効にします。

- すべてのサービス（application-server、configuration-db、messaging server、coordination server、およびstatistics-db）が両方のCisco vManageノードで有効になっていることを確認します。

- Cisco vBond Orchestratorを含むすべてのコントローラをプライマリおよびセカンダリデータセンターに分散させます。これらのコントローラが、これらのデータセンターに分散しているCisco vManageノードから到達可能であることを確認します。コントローラは、プライマリCisco vManageノードにのみ接続します。

- アクティブ（プライマリ）およびスタンバイ（セカンダリ）のCisco vManageノードで他の操作が実行中でないことを確認します。たとえば、サーバがアップグレード中でないか、またはテンプレートをデバイスに添付していないことを確認します。

- Cisco vManage HTTP/HTTPSプロキシサーバが有効になっている場合は無効にします。「Cisco vManageと外部サーバとの通信に使用するHTTP/HTTPSプロキシサーバ」を参照してください。プロキシサーバを無効にしないと、Cisco vManageは、Cisco vManageアウトオブバンドクラスタIPアドレスが直接到達可能な場合でも、プロキシIPアドレスを使用してディザスタリカバリ通信を確立しようとします。ディザスタリカバリの登録が完了したら、Cisco vManage HTTP/HTTPSプロキシサーバを再度有効にすることができます。

- 障害回復登録プロセスを開始する前に、プライマリCisco vManageノードでTools > Rediscover Networkウィンドウに移動し、Cisco vBond Orchestratorsを再検出します。

使用するコンポーネント

このドキュメントの情報は、次のソフトウェアのバージョンに基づいています。

- マネージャ： 20.12.5

- バリデータ： 20.12.5

- コントローラ：20.12.5

- cEdge: 17.12.5

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

背景説明

ディザスタリカバリでは、管理者が起動するフェールオーバープロセスが提供されます。ディザスタリカバリが登録されると、プライマリとセカンダリのCisco vManageクラスタ間でデータが自動的に複製されます。 必要に応じて、手動で二次クラスタへのフェイルオーバーを実行します。

設定

ネットワーク図

この図は、3ノードクラスタを使用したディザスタリカバリソリューションの高度なアーキテクチャを示しています。

コンフィギュレーション

vManageディザスタリカバリの詳細については、このリンクを参照してください。

各SD-WANマネージャの設定が最小限で、認証部分が完了していることを前提として、2つの個別の3ノードクラスタがすでに作成されています。

- 両方のクラスタでAdministration > Cluster Managementの順に移動し、すべてのノードがready状態であることを確認します。

DC vManage:

DR-vManage:

- Administration>Disaster Recoveryの順に移動します。Manage Disaster Recoveryをクリックします。

- ポップアップウィンドウで、プライマリとセカンダリの両方のvManageの詳細を入力します。
示されるIPアドレスは、アウトオブバンドクラスタインターフェイスのIPアドレスです。

クレデンシャルはnetadminユーザのクレデンシャルである必要があり、DRを設定した後は、削除しない限りクレデンシャルを変更しないでください。

入力が完了したら、Nextをクリックします。

- vBondコントローラの詳細を入力します。

vBondコントローラは、指定されたIPアドレスでNetconfを介して到達可能である必要があります。

入力が完了したら、Nextをクリックします。

- Recovery ModeでManualを選択します。自動化モードは廃止されました。[Next] をクリックします。

値を設定して、Saveをクリックします。

- DR登録が開始されます。[更新]ボタンをクリックして、状態と進行状況ログを手動で更新します。このプロセスには、最大で20 ～ 30分かかる場合があります。

検証

- Administration>Disaster Recoveryの順に移動します。 ディザスタリカバリのステータスとデータが最後に複製された日時を確認します。

注：このシナリオでは、ラボ環境のデータベースが小さいため、複製に49秒しかかかりませんでした。ただし、データベースのサイズによっては、レプリケーションに数時間かかる場合があります。また、レプリケーションを正常に実行するには、数回のサイクルが必要になる場合があります。

両方のクラスタでディザスタリカバリログを確認します。

DC-vmanage (9a15f979-d613-4d75-97bf-f7d4124bc687 is export ID)

vmanage1:/var/log/nms$ cat vmanage-disaster_recovery.log | grep 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:17:08,297 UTC INFO [] [] [DataReplicationManager] (pool-232-thread-1) || Export ID Generated: 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:17:58,431 UTC INFO [] [] [DisasterRecoveryAlarmsDAO] (pool-232-thread-1) || AlarmsDAO::addAlarm() - Adding alarm {suppressed=false, component=["Disaster Recovery"], severity="Info", eventname="EXPORT_DATA", message="Primary Successfully Exported", acknowledged=false, active=true, type="Disaster_Recovery", rule_name_display="Disaster_Recovery", uuid="ec133314-7205-4afc-bee3-a4b080fc42f0", update_time=1751606278431, entry_time=1751606278431, values=[{host-name="vmanage1", system-ip="11.11.11.1", dcPersonality="primary", exportSize="22.363 MB", exportDuration="49 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], values_short_display=[{host-name="vmanage1", system-ip="11.11.11.1", dcPersonality="primary", exportSize="22.363 MB", exportDuration="49 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], devices=[{host-name="vmanage1", system-ip="11.11.11.1", dcPersonality="primary", exportSize="22.363 MB", exportDuration="49 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], receive_time=1751606278431}

04-Jul-2025 05:17:58,722 UTC INFO [] [] [DataReplicationManager] (pool-232-thread-1) || Sending the import request to remote server 89.89.89.4 for exportID: 9a15f979-d613-4d75-97bf-f7d4124bc687.

04-Jul-2025 05:17:59,081 UTC INFO [a17a50ae-e6d3-401c-9d34-7c9423a5dd5a] [vmanage1] [DisasterRecoveryRestfulResource] (default task-32) |default| Received request from 89.89.89.1, for token: 9a15f979-d613-4d75-97bf-f7d4124bc687, and file: default_1751001428297.tar.gz

04-Jul-2025 05:21:06,515 UTC INFO [a456da19-9868-42e1-b3e7-9cb7ef3bdb81] [vmanage1] [DisasterRecoveryRestfulResource] (default task-31) |default| Replication status for exportID: 9a15f979-d613-4d75-97bf-f7d4124bc687, is Success

vmanage1:/var/log/nms$

DR-Vmanage

DR-vmanage1:/var/log/nms$ cat vmanage-disaster_recovery.log | grep 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:15:23,296 UTC INFO [] [] [DataReplicationManager] (Thread-366) || Payload received for data replication: {replicationDir="/opt/data/disaster_recovery/", filename="default_1751001428297.tar.gz", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687", deviceIP="89.89.89.1", exportTime="1751606278229", exportDuration="49 secs", exportSize="22.363 MB", SwitchOverHistoryNode={lastSwitch=0, reasonForSwitch=null, updatedPrimary="89.89.89.1"}, startTime="1751606228297", sha256sum="06363770a967beec4667f29e5b033de4a538523f34e36d9952ffc893fb0557db"}

04-Jul-2025 05:15:23,298 UTC INFO [] [] [DataReplicationManager] (Thread-366) || destinationURL dataservice/disasterrecovery/download/9a15f979-d613-4d75-97bf-f7d4124bc687/default_1751001428297.tar.gz Saved to File /opt/data/disaster_recovery/default_1751001428297.tar.gz

04-Jul-2025 05:15:24,040 UTC INFO [] [] [DisasterRecoveryAlarmsDAO] (Thread-366) || AlarmsDAO::addAlarm() - Adding alarm {suppressed=false, component=["Disaster Recovery"], severity="Info", eventname="DOWNLOAD_DATA", message="Replication payload successfully downloaded by secondary", acknowledged=false, active=true, type="Disaster_Recovery", rule_name_display="Disaster_Recovery", uuid="94ab4c3a-26d9-4d99-b631-d380313d7f08", update_time=1751606124040, entry_time=1751606124040, values=[{host-name="DR-vmanage1", system-ip="12.12.12.1", dcPersonality="secondary", exportSize="22.363 MB", downloadDuration="00 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], values_short_display=[{host-name="DR-vmanage1", system-ip="12.12.12.1", dcPersonality="secondary", exportSize="22.363 MB", downloadDuration="00 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], devices=[{host-name="DR-vmanage1", system-ip="12.12.12.1", dcPersonality="secondary", exportSize="22.363 MB", downloadDuration="00 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], receive_time=1751606124040}

04-Jul-2025 05:15:24,170 UTC INFO [] [] [DataReplicationManager] (Thread-366) || Downloaded replication file size 23449259 for token 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:15:24,171 UTC INFO [] [] [DisasterRecoveryManager] (Thread-366) || Sending rpc message to copyReplicationFile for token 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:15:24,216 UTC INFO [] [] [DisasterRecoveryManager] (Thread-366) || Sending message to destinations [Endpoint{ip='89.89.89.5', uuid='c3e303a2-53d0-4525-901b-d96e9ce92875'}, Endpoint{ip='89.89.89.6', uuid='bf45f345-ff2e-48ec-b8fd-0bb92427cc28'}] for token 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:15:24,245 UTC INFO [] [] [DisasterRecoveryManager] (Thread-366) || Waiting for copyReplicationFile to complete for token 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:18:19,545 UTC INFO [] [] [DataReplicationWorker] (Thread-366) || Successfully Deleted Imported Data Directory /opt/data/disaster_recovery/9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:18:19,643 UTC INFO [] [] [DisasterRecoveryAlarmsDAO] (Thread-366) || AlarmsDAO::addAlarm() - Adding alarm {suppressed=false, component=["Disaster Recovery"], severity="Info", eventname="IMPORT_DATA", message="Secondary Successfully Imported", acknowledged=false, active=true, type="Disaster_Recovery", rule_name_display="Disaster_Recovery", uuid="1fc80500-f621-4d45-9395-4ed949ddda68", update_time=1751606299643, entry_time=1751606299643, values=[{host-name="DR-vmanage1", system-ip="12.12.12.1", dcPersonality="secondary", exportSize="22.363 MB", importDuration="02 mins 45 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], values_short_display=[{host-name="DR-vmanage1", system-ip="12.12.12.1", dcPersonality="secondary", exportSize="22.363 MB", importDuration="02 mins 45 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], devices=[{host-name="DR-vmanage1", system-ip="12.12.12.1", dcPersonality="secondary", exportSize="22.363 MB", importDuration="02 mins 45 secs", exportID="9a15f979-d613-4d75-97bf-f7d4124bc687"}], receive_time=1751606299643}

04-Jul-2025 05:18:19,707 UTC INFO [] [] [DataReplicationManager] (Thread-366) || Successfully imported data from exportID 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:18:19,716 UTC INFO [] [] [DisasterRecoveryManager] (Thread-366) || Sending rpc message to deleteReplicationFile for token 9a15f979-d613-4d75-97bf-f7d4124bc687

04-Jul-2025 05:18:19,849 UTC INFO [] [] [DisasterRecoveryManager] (Thread-366) || Sending message to destinations [Endpoint{ip='89.89.89.5', uuid='c3e303a2-53d0-4525-901b-d96e9ce92875'}, Endpoint{ip='89.89.89.6', uuid='bf45f345-ff2e-48ec-b8fd-0bb92427cc28'}] for token 9a15f979-d613-4d75-97bf-f7d4124bc687

レプリケーションリーダーノードを確認する方法

- 次のAPIを使用して、両方のクラスタのレプリケーションリーダーノードを検索します。

https://<vmanage-ip>/data service/entity ownership/treeを参照してください。

DCクラスタ：

レプリケーションノードは、node1であるcb87a08e-079e-4394-81c3-e63c36ac22c0です。show control local-propertiesで確認します。

DR-vManageの場合も同様に、レプリケーションノードはd78832e5-e6d3-4b6b-bf61-f923cf3c7282です。

障害回復登録後のバリデータ(vBond)パスワードの更新

ディザスタリカバリ登録が完了した後にvBondパスワードを変更すると、vBondパスワードが二次クラスタで更新されず、古いvBondパスワードが保持されるため、スイッチオーバーが失敗します。

[04-July-2025 6:47:35 UTC] Unshut control tunnel on the standby vManage.

[04-July-2025 6:47:36 UTC] Sleeping for 10 seconds to ensure control tunnel is fully up and functional on the vmanage.

[04-July-2025 6:47:55 UTC] Failed to activate the cluster. Vbond is unreachable

================

04-July-2025 06:47:55,206 UTC ERROR [89b008fa-2c1b-4f78-b093-ed1fa1f06b71] [vManage20-14-DR] [DisasterRecoveryManager] (dr_activate) |default| IP credentials are not reachable through given ip and authentication creds com.viptela.vmanage.server.device.common.NetConfClientException: java.io.IOException: Unable to authenticate for deviceIP 10.66.91.163. With session Nio2Session[local=/10.66.91.173:56704, remote=/10.66.91.163:830]!

at com.viptela.vmanage.server.device.common.NetConfClient.connect(NetConfClient.java:255) ~[vmanage-server-1.0.0-SNAPSHOT.jar:?]

at com.viptela.vmanage.server.device.common.NetConfClient.

(NetConfClient.java:114) ~[vmanage-server-1.0.0-SNAPSHOT.jar:?]

バリデータ(vbond)パスワードの更新

Disaster RecoveryページとManage Passwordの両方で、新しいvBondパスワードを必ず更新してください。

Administration > Disaster Recovery > Manage Password > Update vBond passwordの順に選択します。

パスワードの更新後にレプリケーションが正常に行われたことを確認します。レプリケーションの成功を確認した後にのみ、フェールオーバーを試行します。

警告：https://bst.cloudapps.cisco.com/bugsearch/bug/CSCwn19224

障害回復登録後のオーバーレイへの新しいバリデータ(vBond)の追加

ディザスタリカバリの登録後にSD-WANオーバーレイに新しいバリデータを追加することはサポートされていません。これは、この新しいバリデータ情報が登録時に更新されなかったために、ディザスタリカバリのセットアップでこの情報が認識されないためです。

バリデータを追加できますが、スイッチオーバーは失敗します。

新しいバリデータを追加する必要がある場合は、次の手順に従います。

1. 障害回復設定を削除します。

2. SD-WANオーバーレイに新しいバリデータを追加します。

3. 障害回復を再構成します。

障害回復オーバーレイのアップグレード

はじめる前に

- CLI方式を使用して、アクティブとスタンバイの両方のCisco SD-WAN Managerをアップグレードします。

- Administration > Disaster Recoverypageのレプリケーションステータスが安定しており、一時的な状態(Import Pending、Export Pending、Download Pendingなど)ではないことを確認します。ディザスタリカバリを一時停止する前にSuccess状態になっている必要があります。

- Administration > Disaster Recoverypageの下のPause Disaster Recoveryを使用して、災害復旧を一時停止します。

アップグレード プロセス

この場合、vManageクラスタを20.12.5から20.15.2にアップグレードします。CLI方式を使用して、クラスタをアップグレードします。

アップグレードする前に、バージョンとレプリケーションステータスを確認します。

ディザスタリカバリの一時停止：

アップグレードが完了したら、すべてのサービスが実行されており、GUIを使用してすべてのvManageノード（DCおよびDR）にログインできることを確認します。

ディザスタリカバリを再開します。レプリケーションが開始され、最終的にレプリケーションステータスが成功と表示されます。

関連情報

- https://www.cisco.com/c/en/us/td/docs/routers/sdwan/configuration/ha-scaling/ios-xe-17/high-availability-book-xe/m-disaster-recovery.html

- シスコのテクニカルサポートとダウンロード