前回の記事 でAWSとGCPのVPNの違いについて調べてみました。今回は冗長構成にしてみてVPNトンネルを落としたときに挙動から、各クラウドのVPNの違いについて見ていきたいと思います。
構成
以下のようなシンプルな構成です。AWSはVPN接続一つにつき、トンネルが二つ作成されるため、VPN接続を二つ作成すると、GCP側ではVPNトンネルは四つ必要になります。
今回は静的ルーティングで設定してみました。
AWS側の設定
ここではキャプチャのみ貼り付けていきます。細かい設定方法はこちらが参考になりました。
Amazon VPCとGoogle Compute EngineをVPN接続する | DevelopersIO
カスタマーゲートウェイ(CGW)
仮想プライベートゲートウェイ(VGW)
VPN接続(ここを二つ作成し冗長構成化)
GCP側の設定
VPNゲートウェイ。ゲートウェイ一つにつき、トンネルを四つ作成。
VPNトンネル
フェイルオーバーの検証
検証方法
- AWSとGCPからそれぞれpingとhttp通信(
curl <IPアドレス>
)をする - pingは疎通確認がとれるかを確認するため
- httpは通過するパケットサイズを見てどのトンネルが使われているかを確認するため
フェイルオーバー実施前
AWSは四つのトンネルのうち、一つのみ使用されていることがわかります。
それに対し、GCPは四つのトンネルそれぞれに分散されていることがわかります。
フェイルオーバー実施後
手動フェイルオーバーができないため、GCPのトンネルを削除することでフェイルオーバーされるかを確認しました。フェイルオーバーを二回行い、挙動を確認しました。
AWSは使用されているトンネルが落ちると、別のトンネルに切り替えて疎通されていることがわかります。
GCPは残りのトンネルでトラフィックを分散しているのが確認できました。
pingは2回とも約40秒程度で通信が復旧していました。
# 1回目 64 bytes from 10.0.0.6: icmp_seq=1287 ttl=128 time=4.46 ms 64 bytes from 10.0.0.6: icmp_seq=1288 ttl=128 time=4.35 ms 64 bytes from 10.0.0.6: icmp_seq=1289 ttl=128 time=4.30 ms 64 bytes from 10.0.0.6: icmp_seq=1290 ttl=128 time=4.58 ms # 通信切断 64 bytes from 10.0.0.6: icmp_seq=1331 ttl=128 time=4.49 ms # 通信再開 64 bytes from 10.0.0.6: icmp_seq=1332 ttl=128 time=4.38 ms 64 bytes from 10.0.0.6: icmp_seq=1333 ttl=128 time=4.79 ms 64 bytes from 10.0.0.6: icmp_seq=1334 ttl=128 time=4.54 ms # 2回目 64 bytes from 10.0.0.6: icmp_seq=2133 ttl=128 time=5.25 ms 64 bytes from 10.0.0.6: icmp_seq=2134 ttl=128 time=4.91 ms 64 bytes from 10.0.0.6: icmp_seq=2135 ttl=128 time=8.13 ms 64 bytes from 10.0.0.6: icmp_seq=2136 ttl=128 time=5.04 ms # 通信切断 64 bytes from 10.0.0.6: icmp_seq=2180 ttl=128 time=6.51 ms # 通信再開 64 bytes from 10.0.0.6: icmp_seq=2181 ttl=128 time=6.18 ms 64 bytes from 10.0.0.6: icmp_seq=2182 ttl=128 time=8.53 ms 64 bytes from 10.0.0.6: icmp_seq=2183 ttl=128 time=6.10 ms
結論
以上の結果から、以下の結論に至ります。
- AWSはホットスタンバイ方式でどれかひとつだけのトンネルが使用される。そのためトンネルをいくら増やしてもVPNの帯域が増やすことはできない(前回の記事を参照)
- GCPはトンネルの数だけトラフィックを分散する。そのためトンネルを増やす分だけVPNの帯域を増やすことができる