ハイアベイラビリティは、2 つのピアルータ間のネットワーキング機能と設定データの冗長性を構築する機能を意味します。このガイドでは、ハイアベイラビリティと、さまざまなクラウド サービス プロバイダーで実行されている Cisco Catalyst 8000V エッジソフトウェア でハイアベイラビリティを設定する方法について説明します。
ハイアベイラビリティ機能は、Microsoft Azure、Google Cloud Platform(GCP)、および Amazon Web Services(AWS)で実行されている Cisco Catalyst 8000V ルータでサポートされています。Cisco Catalyst 8000V の一般的な使用例は、仮想ネットワーク内の 2 つのサブネットを相互接続することです。フロントエンド(パブリック)サブネットとバックエンド(プライベート)サブネットの間に Cisco Catalyst 8000V ルータを展開できます。Cisco Catalyst 8000V ルータは、バックエンドリソースへのアクセスのシングルポイント障害を表します。このシングルポイント障害を軽減するには、2 つのサブネット間に 2 つの Cisco Catalyst 8000V ルータを展開する必要があります。
バックエンドサブネットには、2 つの Cisco Catalyst 8000V インスタンスの 1 つであるネクストホップルータを指すエントリを含むルーティングテーブルが含まれています。ピア Cisco Catalyst 8000V ルータは、Bi-directional Forwarding Detection(BFD)プロトコルを使用してトンネルを介して相互に通信します。ルータとピア間の接続が失われると、BFD はイベントを生成します。このイベントにより、動作しているアクティブルータがルートテーブルのエントリを更新し、ルーティングテーブルがデフォルトルートを指すようにします。
ルーティングテーブルは Cisco Catalyst 8000V ルータのアップストリーム トラフィックを制御し、ルータに設定されているルーティングプロトコルはダウンストリーム トラフィックのパスを決定します。
クラウド環境では、仮想ネットワークは、一元化されたルートテーブルに基づく単純なルーティングメカニズムを実装するのが一般的です。ただし、各ルートテーブルにサブネットが割り当てられている複数のルートテーブルを作成することもできます。このサブネットはルート情報のソースとして機能し、ネットワークトポロジに応じて
1 つ以上の個別のルートを含むルートテーブルが自動的に入力されます。ルートテーブルでルートを設定することもできます。
サブネットには集中型ルートテーブルがあり、2 つの Cisco Catalyst 8000V ルータを冗長モードで動作させることができます。同じ仮想ネットワークに 2 つの Cisco Catalyst 8000V ルータを展開し、それらのインターフェイスを仮想ネットワーク内のサブネットに直接接続できます。2 つの冗長 Cisco Catalyst 8000V ルータのいずれかを指すルートをルートテーブルに追加できます。常に、2 つの Cisco Catalyst 8000V ルータのいずれかがサブネットのネクストホップルータとして機能します。このルータは、サブネットのアクティブルータです。ピアルータはパッシブルータと呼ばれます。アクティブルータは、特定のルート宛先のネクストホップです。
Cisco Catalyst 8000V ルータは、Bi-directional Failure Detection(BFD)プロトコルを使用して、ピアルータが正常に動作しているかどうかを検出します。2 つのピアルータ間に IP トンネルが作成され、各ルータは定期的に BFD プロトコルメッセージを他のルータに送信します。1
台のルータがピアからの BFD メッセージの受信に一定期間失敗した場合、アクティブルータはピアルータに障害が発生したと判断します。
アクティブルータに障害が発生した場合、サブネットのルートテーブルを動的に更新して、パッシブルータを参照するように 1 つ以上のルートのネクストホップアドレスを変更できます。ピアルータがアクティブルータの障害を検出すると、ピアルータはプログラム
API を使用してルートテーブルエントリを更新します。
ルートテーブルエントリでは、2 つの Cisco Catalyst 8000V ルータのどちらを「プライマリ」ルータにするかを設定します。もう一方のルータは、「セカンダリ」ルータとして設定されている場合はパッシブルータです。デフォルトでは、すべてのルートがセカンダリとして設定されます。
図 1. ハイアベイラビリティ - トポロジ
右側のサブネットのアドレスブロックは 12.1.0.0/24 です。このサブネットに接続されている 2 つの Cisco Catalyst 8000V ルータは、このリーフサブネットから出るトラフィックの冗長パスを提供します。サブネットは、サブネットに接続されている仮想マシンにルート情報を提供するルートテーブルに関連付けられます。
次のシナリオを考えてみます。最初に、ルートテーブル内のデフォルトルートに、ネクストホップルータの IP アドレス 12.1.0.4(Cisco Catalyst 8000V A)があります。サブネットから発信されるすべてのトラフィックは、Cisco Catalyst 8000V A を通過します。Cisco Catalyst 8000V A は現在、デフォルトルートのアクティブルータです。Cisco Catalyst 8000V A で障害が発生すると、Cisco Catalyst 8000V B は Cisco Catalyst 8000V A からの BFD プロトコルメッセージの受信を停止するため、障害を検出します。Cisco Catalyst 8000V B は RESTAPI を介してルートテーブルに書き込み、12.1.0.0/24 サブネット(IP アドレス 12.1.0.5)での Cisco Catalyst 8000V B のインターフェイスへのデフォルトルートを変更します。Cisco Catalyst 8000V B は、15.0.0.0 ネットワークへのルートのアクティブルータになります。
ステップ
説明
A
アドレス 12.1.0.4 の Cisco Catalyst 8000V A は、15.0.0.0 ネットワークのアクティブルータです。
B
Cisco Catalyst 8000V A は失敗します。Cisco Catalyst 8000V B は、BFD プロトコルを使用して障害を検出します。
C
Cisco Catalyst 8000V B は、Azure REST API への HTTP 要求を使用します。
D
Azure は、ユーザー定義のルートテーブルの 15.0.0.0 ルートを Cisco Catalyst 8000V B の IP アドレスに更新します。
E
仮想マシンは、ルートテーブルの更新を確認します。
F
仮想マシンからのパケットは、Cisco Catalyst 8000V B に向けられています。
ハイ アベイラビリティ機能
ハイ アベイラビリティ バージョンは、いくつかの機能をサポートします。Cisco Catalyst 8000V でのハイアベイラビリティの概要を示します。
クラウド非依存 :このバージョンのハイアベイラビリティは、任意のクラウド サービス プロバイダーで実行されている Cisco Catalyst 8000V ルータで機能します。クラウドの用語とパラメータにはいくつかの違いがありますが、ハイアベイラビリティ機能を設定、制御、および表示するために使用される一連の関数とスクリプトは、さまざまなクラウド サービス プロバイダー間で共通です。ハイアベイラビリティは、AWS、Azure、および
GCP で実行されている Cisco Catalyst 8000V ルータでサポートされています。個々のプロバイダーのクラウドでのハイアベイラビリティの現在のサポートについては、シスコにお問い合わせください。
アクティブ/アクティブ動作 :両方の Cisco Catalyst 8000V ルータを同時にアクティブに設定できます。これにより、負荷分散が可能になります。この動作モードでは、ルートテーブル内の各ルートには、2 台のルータのうち 1 台がプライマリルータとして機能し、もう 1 台がセカンダリルータとして機能します。負荷分散を有効にするには、すべてのルートを取得し、2
つの Cisco Catalyst 8000V ルータ間で分割します。
障害回復後のプライマリ Cisco Catalyst 8000V への復帰 :Cisco Catalyst 8000V を特定のルートのプライマリルータとして指定できます。この Cisco Catalyst 8000V が稼働している間は、これがルートのネクストホップになります。この Cisco Catalyst 8000V が失敗すると、ピア Cisco Catalyst 8000V がルートのネクストホップを引き継ぎ、ネットワーク接続を維持します。元のルータが障害から回復すると、ルートの所有権を再要求し、ネクストホップルータになります。
ユーザー指定のスクリプト :ゲストシェルは、独自のスクリプトを展開できるコンテナです。HA は、ユーザーが提供するスクリプトにプログラミング インターフェイスを公開します。これは、フェールオーバーと復帰の両方のイベントをトリガーできるスクリプトを作成できるようになったことを意味します。また、独自のアルゴリズムとトリガーを開発して、特定のルートに転送サービスを提供する
Cisco Catalyst 8000V を制御することもできます。
新しい設定および展開メカニズム :HA の実装が Cisco IOS XE コードから移動されました。ハイアベイラビリティコードがゲストシェルコンテナで実行されるようになりました。ゲストシェルの詳細については、『Programmability Configuration Guide』の「Guest
Shell」セクションを参照してください。 冗長ノードの設定は、一連の Python スクリプトを使用してゲストシェルで実行されます。
サポートされるトポロジ
1-for-1 冗長トポロジ :両方の Cisco Catalyst 8000V ルータが同じサブネットに直接接続されている場合、ルータは 1-for-1 冗長性を提供します。この 1-for-1 冗長性の例は前出の図に示されています。Cisco Catalyst 8000V 宛てのすべてのトラフィックは、いずれかのルータ(現在アクティブな Cisco Catalyst 8000V )にのみ送信されます。アクティブな Cisco Catalyst 8000V ルータは、サブネットのネクストホップルータです。もう一方の Cisco Catalyst 8000V ルータは、すべてのルートのパッシブルータです。
負荷分散トポロジ :このトポロジでは、両方の Cisco Catalyst 8000V ルータが同じ仮想ネットワーク内の異なるサブネットに直接接続されています。サブネット A からのトラフィックはルータ A に行き、サブネット B からのトラフィックはルータ B に行きます。これらの各サブネットは、異なるルートテーブルにバインドされています。ルータ
A に障害が発生すると、サブネット A のルートテーブルが更新されます。ルータ A がネクストホップになる代わりに、ルートエントリがネクストホップとしてルータ B に変更されます。ルータ B に障害が発生すると、サブネット B のルートテーブルが更新されます。ルータ
B がネクストホップになる代わりに、ルートエントリがネクストホップとしてルータ A に変更されます。