yamamototis1105’s tech blog

ネットワークを中心とした技術ブログです

AWS ネットワーク仮想アプライアンスのHA構成パターン

はじめに

 AWSサービスが拡充される中、ネットワーク仮想アプライアンスを利用するケースは減ってますが、顧客要件次第でネットワーク仮想アプライアンスを利用しなければならないケースはあります。
 本記事では、このようなネットワーク仮想アプライアンスのHA構成パターンに関して記載します。

ネットワーク仮想アプライアンスユースケース

 そもそもネットワーク仮想アプライアンスはどのようなケースで利用するのでしょうか。
 運用負荷軽減の観点より、AWSサービスは積極的に利用することをお勧めしますが、要件が充足できない場合はネットワーク仮想アプライアンスでカバーします。

 以下に設計項目ごとのAWSサービスの機能充足状況を記載しております。
 最近ではAWSサービスで暗号化も充足してますが、帯域制御/優先制御やSD-WAN機能等は充足しておらず、ネットワーク仮想アプライアンスを利用せざるを得ないです。

設計項目AWSサービス機能充足
暗号化Site-to-Site VPN、Client VPN、MACsec
帯域制御/優先制御該当なし×
負荷分散Elastic Load Balancer
アドレス変換NAT Gateway
アクセス制御SecurityGroup、NetworkACL、Network Firewall
その他SD-WAN機能等

ネットワーク仮想アプライアンスの課題

 ネットワーク仮想アプライアンスはMarketplaceなどでEC2インスタンスとして提供されているため、AWSサービスとして冗長化されておらず、ユーザが冗長化しなければなりません。
 一方、オンプレミスとAWSは「ルートテーブル~アプライアンス間でBGPなどのダイナミックルーティングが利用できない」や、「アプライアンス間でVRRPなどの冗長化プロトコルが利用できない」などの違いがあります。
 このような違いを踏まえて、どのように冗長化されたネットワーク仮想アプライアンスの系切り替えを行うかがポイントになります。

ネットワーク仮想アプライアンスのHA構成

 以下の1~6の方法で課題を解決でき、ネットワーク仮想アプライアンスのHA構成を実現できます。
 これらの中で、当方がネットワークエンジニアのため贔屓目で見てる節も多々あると思いますが、BGP更新はシンプルのため大変お勧めです。

   1.Lambdaによるルートテーブル更新
   2.アプライアンスによるルートテーブル更新
   3.Site-to-Site VPNによるBGP更新
   4.TGW ConnectアタッチメントによるBGP更新
   5.CloudWAN ConnectアタッチメントによるBGP更新
   6.NLBによるターゲット切り替え

1.Lambdaによるルートテーブル更新

 EventBridgeで定期的にトリガーしているLambdaが主系アプライアンスを確認のうえ、異常な場合はルートテーブルのターゲットを副系アプライアンスに切り替えます。
 例えば、YAMAHA vRXの場合は主系アプライアンスのトンネル状態を監視し、CISCO Merakiの場合は主系アプライアンスのヘルス状態を監視し、ルートテーブル更新APIを実行します。
 EventBridgeの実行間隔が最短1分間、切断時間が最長1分間以上かかりますので、信頼性要件を充足するかの確認が必要となります[1][2]。

[1] YAMAHA vRX - Example of IPsec-Encrypted Hybrid Connection Setup
 https://network.yamaha.com/setting/virtual_router/aws/vrx_ipsec_redundancy
[2] Cisco Meraki Virtual MX - Quick Start Reference Deployment
 https://aws-quickstart.github.io/quickstart-cisco-meraki-sd-wan-vmx/

2.アプライアンスによるルートテーブル更新

 副系アプライアンスが主系アプライアンスを確認のうえ、異常な場合はルートテーブルのターゲットを副系アプライアンスに切り替えます。
 例えば、CISCO Catalyst 8000vの場合はBFDポーリング監視し、Fortinet Fortigate-VMの場合はハートビート監視し、ルートテーブル更新APIを実行します。
 Catalyst 8000vの場合はHAパッケージの別途インストールが必要となり、Fortigate-VMの場合は多くのENIが作れる上位のインスタンスタイプが必要となります[3][4]。


[3] Cisco Catalyst 8000V - Overview of High Availability
 https://www.cisco.com/c/en/us/td/docs/routers/C8000V/HighAvailability/c8000v-high-availability-configuration-guide/overview.html
[4] Fortinet Fortigate-VM - Deploying FortiGate-VM active-passive HA AWS between multiple zones
 https://docs.fortinet.com/document/fortigate-public-cloud/7.4.0/aws-administration-guide/229470/deploying-fortigate-vm-active-passive-ha-aws-between-multiple-zones

3.Site-to-Site VPNによるBGP更新

 VGWもしくはTGWと主系・副系アプライアンス間でSite-to-Site VPNを作成し、IPsecトンネル上を流れるBGPキープアライブで通信断を検知のうえルーティングテーブルを更新します[5][6]。


[5] Cisco Catalyst 8000V - Deploying Cisco Catalyst 8000V Edge Software on Amazon Web Services
 https://www.cisco.com/c/ja_jp/td/docs/routers/C8000V/AWS/deploying-c8000v-on-amazon-web-services/deploy-transit-vpc-with-transit-gateway-aws.html
[6] AWS - Getting started with AWS Site-to-Site VPN
 https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/SetUpVPNConnections.html

4.TGW ConnectアタッチメントによるBGP更新

 TGWと主系・副系アプライアンス間でConnectアタッチメントを作成し、GREトンネル上を流れるBGPキープアライブで通信断を検知のうえルーティングテーブルを更新します[7][8]。


[7] Fortinet Fortigate-VM - SD-WAN Transit Gateway Connect
 https://docs.fortinet.com/document/fortigate-public-cloud/7.4.0/aws-administration-guide/14501/sd-wan-transit-gateway-connect
[8] AWS - Transit Gateway Connect attachments and Transit Gateway Connect peers
 https://docs.aws.amazon.com/ja_jp/vpc/latest/tgw/tgw-connect.html

5.CloudWAN ConnectアタッチメントによるBGP更新

 CloudWANと主系・副系アプライアンス間でConnectアタッチメントを作成し、BGPキープアライブで通信断を検知のうえルーティングテーブルを更新します[9][10]。


[9] Cisco Meraki Virtual MX - Partner Solution Deployment Guide
 https://aws-ia.github.io/cfn-ps-cisco-meraki-vmx-cloudwan/
[10] AWS - Getting started with AWS Cloud WAN
 https://docs.aws.amazon.com/ja_jp/network-manager/latest/cloudwan/cloudwan-getting-started.html

6.NLBによるターゲット切り替え

 NLBのターゲットのヘルス状態を監視し、異常な場合はターゲットを切り替えます。
 NLBはエンドノードを切り替えるものでリレーノードを切り替えられません。そこで、エンドノードのアドレスをNATのうえリレーノードに持たせることで、NLBでリレーノード切り替えを実現します。
 (ALBはHTTP/HTTPS/gRPC通信のみ、GWLBはGENEVE対応がレアのため割愛)


まとめ

  • AWSサービスを可能な限り利用しつつも、帯域制御/優先制御やSD-WAN構成などの要件次第でネットワーク仮想アプライアンスを利用しなければならないケースがあります
  • VRRPなどの冗長化プロトコルやBGPなどのダイナミックルーティングが利用できない仕様に対し、系切り替えをどうするかの課題があります
  • AWSサービスを用いたルーティング制御により、ネットワーク仮想アプライアンスのHA構成を実現できます

おわりに

 AWS ネットワークでネットワーク仮想アプライアンスをお使いの方にとって、本記事の課題・解決策がご参考になりますと幸いです。