AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

re:Invent 2018 新機能!TransitGatewayを試してみた

Pocket

Pocket

Hello, サービス開発チームの北野です。

ラスベガスでAWSのイベント、re:Inventに絶賛参加中です。

Monday Night Liveでいろいろ新機能が発表されました!
その中で、「今すぐにでも使いたい!」と私が感じた機能、TransitGatewayを試してみました。
弊社ではそれなりの数のVPCがVPC peeringで相互接続されているので期待大です!

TransitGatewayについてはAWSの公式ブログも公開されています。
https://aws.amazon.com/jp/blogs/news/new-aws-transit-gateway/

これまでのVPC間の接続

これまでVPC間の接続はVPC peeringで行われていました。図にするとこんな感じです。

VPC peeringではVPC1からVPC2を経由してVPC3へ接続するみたいなことはできないので、全てのVPCをVPC peeringする必要がありました。
これが3個程度のVPCなら特に問題はありません。もう少し増やしてみます。

VPCが5個になっただけでVPC peeringの数は10個になりました。
計算するとVPC n個に対して、VPC peeringの数はn*(n-1)/2個必要です。
要するにO(n^2)でVPC peeringの数が増えてしまっていくのです。

これからのVPC間の接続

そこで出てきたのがTransitGatewayです。これを使うと下図のようにVPC間の接続を一つにまとめてくれます。

DirectConnectの接続もサポート予定とのことで、AWSのネットワーク構成がシンプルにできそうです!

TransitGatewayを試してみた

先程の図のように、VPCを3つ作ってその中の一つにCloud9を立てて、残り二つにそれぞれEC2インスタンスを立てます。
VPC1(10.101.0.0/16), VPC2(10.102.0.0/16), VPC3(10.103.0.0/16)の3つのVPCができている状況です。
サブネット、セキュリティグループなどは適切に設定してやります。

まだVPC間はつながっていないので、VPC1にあるCloud9からVPC2にあるインスタンスにpingしても繋がらない状況です。

ここからVPCの画面でTransitGatewayを作成します。

今回はクロスアカウントは試さないので、デフォルトのままチェックを入れず、名前だけ設定してCreateします。

次にTransitGatewayにVPCをアタッチします。

適当に名前をつけて、VPC1のVPC IDとSubnetを選択してCreateします。

同様にVPC2, VPC3もアタッチして、Stateがavailableになるまで少々待ちます。

availableになったあと、TransitGatewayのRoute Tableを確認すると、各VPC(10.101.0.0/16, 10.102.0.0/16, 10.103.0.0/16)にルーティングされていることがわかります。

最後に各VPCのルートテーブルを設定します。

少々おおざっぱですが、10.0.0.0/8の接続を全てTransitGatewayに流してやるように設定します。これを3つのVPCのルートテーブル全てに対して行います。

疎通確認

VPC1(10.101.0.0/16)に立てたCloud9から、VPC2(10.102.0.0/16), VPC3(10.103.0.0/16)に対してpingを行い、通信できていることが確認できました!

終わりに

今回は一つのアカウント内でTransitGatewayを使用しましたが、クロスアカウントで使用することもできます。
将来的にはDirectConnectにも対応するとのことなので、ネットワーク構成をシンプルにできそうで楽しみです!
今後も試していきたいです。

Pocket