はじめに
今後 VMware Cloud on AWS (VMC) とネイティブ AWS サービスの連携例をいくつか紹介していきたいなと思っていますので、今回は AWS サービスが稼働する Amazon VPC と VMC の接続パターンと、その中の一つである Elastic Network Interface (ENI) 経由での接続の詳細について解説してみたいと思います。
目次
VMware Cloud on AWS と Amazon VPC の接続パターン
VMC の Software-Defined Data Center (SDDC) と Amazon VPC の接続は大きく分けて 3 つのパターンがあります。
- Elastic Network Interface (ENI) 経由での接続
- AWS Transit Gateway との接続
- VTGW との接続
※ VTGW: VMware Transit Connect サービスにおける AWS Transit Gateway 機能の総称
今回は、その中で一番シンプルな接続パターンである ENI 経由での接続を紹介いたします。
ENI 経由での接続の仕組み
ENI 経由でどのように VPC と接続されるか仕組みを簡単に見ていきたいと思います。
最初に SDDC を作成する際に、接続をする AWS アカウントの指定、そしてそのアカウント内の VPC、サブネットの指定をするステップがあります。
上記で指定したサブネット上に ENI が作成されて、それが SDDC と接続をする形となります。
仮想マシンはコンピューティングゲートウェイ / CGWという分散論理ルーターに接続をいたします。
仮想マシンの論理ネットワークを複数自由に作成する事が出来、好きなIPアドレスレンジが指定が出来ます。
以下では例として2つの論理ネットワークを作成しています。
論理ネットワークを作成するとAWSアカウント内の、VPCのルートテーブルが自動的に更新され、セグメントの情報が追加されます。この為、低遅延かつプライベート接続でAWSサービスと接続が可能となります。
そして同じ AZ 内の通信に関してはデータ転送費用も発生しないというメリットがあります!
ENI が実際にどう作成されているか、AWS マネジメントコンソールにアクセスし、構成を確認してみます。
ENI は AWS マネジメントコンソールから、[EC2] -> [ネットワーク & セキュリティ] -> [ネットワークインターフェイス] にて確認できます。
以下の通り、SDDC 作成時に指定したサブネットに 17 個の ENI が作成されています。
また今回は 2 ホストで構成した為、2 ホスト分の ENI が In-use のステータスになっています。例えば 6 ホストでデプロイした場合は、6 個の ENI が In-use のステータスになります。
ルートテーブルの構成は以下の通りです。SDDC の管理サブネットとして指定した 10.2.0.0/16 と、ワークロード用のセグメントとして作成した 192.168.xxx.0/24 が ENI 経由になるよう自動構成されています。
こちらはVMCコンソール側で見たワークロード用のセグメント一覧です。「ルーティング」として指定したセグメントが全て上記のルートテーブルに反映されている事が見ていただけるかと思います。
また、セグメントの追加を行うと即時にVPC側のルートテーブルに追加されます。
この為、以下のように VPC 上の AWS サービスから仮想マシンに対して NAT などを行う必要なく、直接仮想マシンの IP アドレスを指定してプライベートで接続が可能です。(逆に仮想マシンから AWS サービスに対してももちろん接続が可能です)
EC2 から VMC 上の Linux VM へ SSH でアクセス
[ec2-user@ip-10-0-165-11 ~]$ ssh tc@192.168.160.2
tc@192.168.160.2's password:
( '>')
/) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY.
(/-_--_-\) www.tinycorelinux.net
tc@box:~$
ENI の詳細
補足までにENIについてもう少し深掘りしてみます。
標準クラスタの場合、SDDC デプロイ時に ENI が指定したサブネット上に 17 個作成されます。この ENI は、各 ESXi にそれぞれマッピングされ、アクティブな NSX-T Edge が稼働している ESXi にマッピングされた ENI がアクティブな ENI として機能します。
ENI 経由での接続の仕組みで紹介した環境では、ENI eni-0f38bb6ddacabxxxx にマッピングされた ESXi 上でアクティブな NSX Edge が稼働している為、各セグメントのターゲットとして指定されていました。
尚、"17 個" というのは、1 つ目のクラスタに最大 16 個 ESXi が構成可能 + フェイルオーバー用に 1 つ確保している為です。SDDC デプロイ時のホスト数に関わらず、17 個作成されます。
尚、SDDC あたり最大で 20 個クラスタが作成可能ですが、ENI が作成されるのは最初のクラスタのみです。(NSX などの管理コンポーネントは最初のクラスタにのみ作成される為です。)
アクティブな NSX-T Edge がメンテナンスや障害などで別の ESXi に移動した場合は、それに呼応してアクティブなENIも自動で切り替わります。
ENI での接続の場合の考慮点
最後に ENI での接続の際の一般的な考慮点、ベストプラクティスについて列記します。
- 仮想マシンで利用する論理ネットワークと VPC 間で IP アドレスの重複がないようネットワークセグメントの設計を行う。
- SDDC 毎に専用のプライベートサブネット(/26)の用意が推奨
- ENI が作成される Connected VPC では、メイン ルートテーブルを利用する。(カスタム ルート テーブルの使用はサポートされません)
- SDDC 側で論理ネットワークを作成した場合や、ENI のフェイルオーバーを行う際に、メインルートテーブルに対して自動で変更を行う為です。
まとめ
今回は、Elastic Network Interface (ENI) 経由での VMware Cloud on AWS と Amazon VPC の接続について解説してみました。ENI 経由での接続により、AWS サービスとプライベート、かつ高速に接続をする事ができます。
そして同じ AZ 内の通信に関してはデータ転送費用も発生しないというメリットがあります。
まずはオンプレミス環境にあるアプリケーションを VMC にリロケートし、段階的に AWS のネイティブサービスと連携をするといったステップを取ることが可能です。AWS サービスとの連携により、ライセンスコストの圧縮や、高可用性、スケーラビリティーの確保など、クラウドのさらなるメリットを享受することが可能です。
今後は ENI 経由で色々な AWS サービスとの接続例について紹介していきたいと思います!