こんにちは。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を選択し、以下のように設定します。
少し待機すると availableになります。
Transit GatewayにVPCをアタッチ
作成したTransit Gatewayと作成済みのVPCを選択し、VPCに紐づけます。
Resource ManagerにてTransit Gateway Resourceを共有
Transit Gatewayを作成したアカウントにて
Transit Gatewayを選択し、共有アカウントを指定します。
Transit Gatewayを共有したアカウントにて
Shared with meのResource sharesから、Accept resource shareを選択して、リソースを受け付けます。
Transit Gatewayを共有したアカウントにおいても、同様に、Transit GatewayとVPCを紐づけます。
Transit Gatewayを作成したアカウントにて
紐づけをした後、Transit Gatewayを作成したアカウントに、リソースがpendingで表示されるので、Acceptします。
両方のアカウントにて
VPCのルートテーブルにて、宛先の経路情報を追加します。transit-gatewayのTargetは「tgw-」かは始まるリソースになります。
実際に通信してみる
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を利用することで、ネットワーク構成を見直せるのではないかと思っています。
以上