VPC Peeringを使って、PublicへのEgress料金を節約しよう

こんにちは。
GMOアドマーケティングのT.Cです。
今回は、VPC Peeringを利用してGCPのプロジェクト間のVM to VM, VM to MIGの通信をしてみます。

VPC Peering

  • 2つのVPCネットワークを繋いで、各ネットワーク内のリソースが相互に通信できるようにします。
  • GCPの同じプロジェクト、同じ組織の異なるプロジェクト、又は異なる組織のプロジェクトで通信可能です。

VPC Peeringの利点

  • Low Latency: 外部アドレスではなく、内部アドレスを利用するのでより早くなります。
  • Security: 内部アドレスを利用するので、セキュリティ(public internetを経由しない)にもいいです。
  • Network Cost: public internetを経由しないため、publicへのegress料金を節約できます。通常のネットワークの料金は発生します。
publicへのegress料金は、通常のネットワーク料金に比べて大体の場合、結構高いです。
例えば、GCPのVM間の通常のネットワーク料金だと、内部IPを利用であり同じゾーンであれば無料、同じリージョンで異なるゾーンであれば$0.01(1GB)の料金が発生します。
ただ、外部IPを利用すると、通常のネットワーク料金に加えてPremium Tier(= default tier)の場合$0.12~$0.14(1GB)のpublicへのegress料金が発生します。 つまり、GCPのプロジェクト間の通信は、VPC Peeringを利用することで上記のようなpublicへのegress料金を節約できるようになります。 参考資料
GCPドキュメント :「通常のネットワーク料金」「publicへのegress料金」

実践

プロジェクトAとプロジェクトBをPeeringして通信してみます。


プロジェクトA -> VPCネットワーク -> VPCネットワーク作成に入り、a-peeringというVPCネットワークを作成します。
プロジェクトBでも、上記と同じくb-peeringというVPCネットワークを作成します。
ただ、サブネットのIP Adress Rangeが被らないようにしてください。


次に、VPC Peeringを作成していきます。
プロジェクトA -> VPCネットワーク -> VPCネットワーク ピアリングに入り、プロジェクトBとの接続設定をします。
プロジェクトBでも、上記と同じくプロジェクトAとの接続設定をします。  


各プロジェクトにピアリングの接続を作成したら、以下のようにステータスが「有効」になります。


後は、プロジェクトAとBでテストするため、作成したVPCネットワークを利用してインスタンスを立ち上げて、Pingでテストします。


プロジェクトAのインスタンスからプロジェクトBへのPingテスト
これで、VPC Peeringを利用して、プロジェクト間のVMの通信ができました。


次は、内部ロードバランサーを利用してMIGとの通信もテストしてみます。
まず、インスタンスグループを生成します。
インスタンステンプレートは、事前に用意したものを使っていてapacheがインストールされています。
(プロジェクトAのa-peering-instance -> プロジェクトBのLB -> プロジェクトBのMIGの通信)


次に、内部ロードバランサーも作成します。
LBのヘルスチェックが通るように、ファイアウォールを確認してください。



構成に問題がなければ、バックエンドのステータスが「正常」になります。


プロジェクトAのインスタンス(a-peering-instance)に入り、通信のテストをします。
これで、VPC PeeringでMIGとの通信もできました。

終わりに

VPC Peeringは異なる組織のプロジェクトの接続が可能ですが、Shared VPCは同じ組織内のプロジェクトを繋ぎます。Shared VPCの長所としては、サブネット・ルート・ファイアウォールなどのネットワークリソースをcentralized controlできるなどがあり、状況に応じて使えばいいと思います。