ハイアベイラビリティの概要

ハイアベイラビリティは、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. ハイアベイラビリティ - トポロジ
ハイアベイラビリティ - Cisco Catalyst 8000V

右側のサブネットのアドレスブロックは 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 に変更されます。

冗長ノード

冗長ノードは、ルートテーブル内のエントリを指定する一連の設定パラメータです。アクティブルータに障害が発生すると、ルートのネクストホップが更新されます。冗長ノードを設定するには、次の情報が必要です。

  • ルートテーブル:クラウド内のルートテーブルの ID。ルートテーブルには、テーブルが作成されたリージョンまたはグループ、テーブルの作成者または所有者の識別子、および特定のテーブルの名前または識別子が含まれます。必要に応じて、テーブル内の個々のルートを指定できます。個々のルートを指定しない場合、冗長ノードはテーブル内のすべてのルートを表します。

  • ログイン情報:Cisco Catalyst 8000V ルータの ID の認証。各クラウドプロバイダーは、ログイン情報の取得と指定のプロセスを異なる方法で処理します。

  • ネクストホップ—トリガーイベントが発生したときにルートエントリに書き込まれるネクストホップアドレス。ネクストホップは、通常、保護されているサブネット上の Cisco Catalyst 8000V ルータのインターフェイスです。

  • ピアルータ:このルータで障害が発生した後に、このルートのトラフィックを転送する冗長ルータを識別します。

  • ルータロール—冗長ノードがプライマリロールまたはセカンダリロールのどちらで機能するかを識別します。これは省略可能なパラメータです。この値を指定しない場合、ルータロールはデフォルトでセカンダリロールになります。

イベント タイプ

ハイアベイラビリティ機能は、次の 3 種類のイベントを認識して応答します。

  • ピアルータ障害:ピアルートに障害が発生すると、ピアルータ障害イベントとして検出されます。このイベントに応答して、イベントハンドラは、冗長ノードで定義されているネクストホップアドレスを使用してルートエントリを書き込みます。このイベントを生成できるようにするには、ピアルータに BFD プロトコルを設定し、クラウドのハイアベイラビリティのために冗長性の下で BFD ピアを関連付けます。

  • プライマリルータに戻す:ルータが障害から回復した後、プライマリルータに戻すイベントが発生します。このイベントの目的は、ルートのプライマリルータがアクティブルータとして再確立されるようにすることです。このイベントはタイマーによってトリガーされ、このイベントを設定する必要はありません。ルートテーブルエントリでは、イベントハンドラは、ルートに現在設定されているネクストホップアドレスと異なる場合にのみ、冗長ノードで定義されているネクストホップアドレスを変更します。

    このプライマリルータに戻すイベントは、ゲストシェル環境で CRON ジョブを使用して定期的に生成されます。ジョブは 5 分ごとに実行されるようにスケジュールされ、プライマリモードで設定されている各冗長ノードに、このルータのネクスト ホップ インターフェイスがルートテーブルに設定されているかどうかを確認します。ルートテーブルエントリがすでにこのルータのネクスト ホップ インターフェイスを指している場合、更新は必要ありません。モードパラメータの冗長ノード設定がセカンダリの場合、プライマリルータに戻すイベントは無視されます。

  • 冗長ノードの検証:イベントハンドラは、冗長ノードの検証イベントを検出し、冗長ノードによって指定されたルートエントリを読み取ります。イベントハンドラは、同じデータをルートエントリに書き戻します。このイベントは、自動的またはアルゴリズム的に生成されません。このイベントは、イベントハンドラが機能を実行できるかどうかを確認します。手動またはプログラムでスクリプトを実行して、冗長ノード検証イベントをトリガーします。検証イベントの詳細については、「Advanced Programming for High Availability on Microsoft Azure」セクションの「User-Defined Triggers」を参照してください。