Transit GatewayでハブアンドスポークVPCを構築しよう

こんにちは。koarakkoです。re:Invnet2018に参加しています。
その中で気になるVPCでTransit Gatewayがリリースされましたので、紹介したいと思います。

Transit Gatewayとは?

VPC間をハブアンドスポート方式で繋ぐことが可能なサービスです。これにより以前よりVPC間の接続がスムーズになります。

このサービスが出る前から同様のこと、Traisit VPCという方法で実現可能でしたが、スポークVPC上に仮想ルータ(Cisco CSRなど)を構築する必要があり、それぞれのハブVPCはスポークVPCの仮想ルータに対してVPN接続する必要があり、導入までの設定が煩雑でした。

VPC Peeringとの違いは?

VPC間の通信であれば、VPC Peeringで事足りるのではと思わる方もいるかと思いますので、こちら補足したいと思います。

違いはVPC Peeringはフルメッシュ方式で繋ぐ必要があるため、接続する本数が違うということです。
フルメッシュで繋ぐということは、接続するVPCの数が増えることで、以下の式に従って接続数が増大します。
したがって、フルメッシュ接続の方が接続数が多くなります。

■フルメッシュ接続数の計算式
n(n-1)/2
(n = VPCの数)

実際に、上記式に当てはめてVPC毎の接続数を計算すると以下のような結果になります。

VPC2個:2(2-1)/2 = 2
VPC3個:3(3-1)/2 = 3
VPC4個:4(4-1)/2 = 6
VPC5個:5(5-1)/2 = 10
...
VPC10個:10(10-1)/2 = 45
...
VPC50個:50(50-1)/2 = 1225

上記の結果から、せいぜいVPC5個くらいが設定負荷を考えると限界ではないかと思います。

このように、VPC PeeringでVPC間を相互接続する場合はVPC数に応じて、接続する本数が増大することをお分かり頂けたと思います。

ユースケース

以下のようなユースケースが考えられます。

  • セキュリティの一貫としてインターネット出口を特定のVPCに絞りたい
  • 複数VPCを相互に通信させたい

実際の検証

Transit Gatewayの検証としてVPCを繋ぐ設定をしてみたいと思います。
設定の流れは以下となります。

  • Transit Gatewayを作成
  • Transit GatewayをVPCにアタッチ
  • Resource ManagerにてTransit Gateway Resourceを共有

Transit Gatewayを作成

Create Transit Gatewayを選択し、以下のように設定します。
----------2018-11-29-3.11.25

少し待機すると availableになります。

Transit GatewayにVPCをアタッチ

作成したTransit Gatewayと作成済みのVPCを選択し、VPCに紐づけます。
----------2018-11-28-21.43.28

Resource ManagerにてTransit Gateway Resourceを共有

Transit Gatewayを作成したアカウントにて

Transit Gatewayを選択し、共有アカウントを指定します。
----------2018-11-29-3.30.42-1

Transit Gatewayを共有したアカウントにて

Shared with meのResource sharesから、Accept resource shareを選択して、リソースを受け付けます。
----------2018-11-29-3.39.05

Transit Gatewayを共有したアカウントにおいても、同様に、Transit GatewayとVPCを紐づけます。

Transit Gatewayを作成したアカウントにて

紐づけをした後、Transit Gatewayを作成したアカウントに、リソースがpendingで表示されるので、Acceptします。
----------2018-11-29-4.08.55

両方のアカウントにて

VPCのルートテーブルにて、宛先の経路情報を追加します。transit-gatewayのTargetは「tgw-」かは始まるリソースになります。
----------2018-12-03-11.54.37
----------2018-12-03-12.04.00

実際に通信してみる

EC2インスタンスを立てて、そこからpingで疎通確認をしてみたいと思います。

[ec2-user@ip-10-2-2-9 ~]$ ping -c 3 10.1.1.121
PING 10.1.1.121 (10.1.1.121) 56(84) bytes of data.
64 bytes from 10.1.1.121: icmp_seq=1 ttl=254 time=1.07 ms
64 bytes from 10.1.1.121: icmp_seq=2 ttl=254 time=0.963 ms
64 bytes from 10.1.1.121: icmp_seq=3 ttl=254 time=0.997 ms

--- 10.1.1.121 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.963/1.012/1.077/0.054 ms

疎通が取れることが確認できるかと思います。

終わりに

今回のTransit Gatewayを利用することで、ネットワーク構成を見直せるのではないかと思っています。

以上

Author image
About koarakko
expand_less