AWS Direct Connectでフェイルオーバーテストできるようになりました

記事タイトルとURLをコピーする

2020年6月3日のアップデートでDirect Connectのフェイルオーバーテストが可能になりました。 AWSとオンプレミスの接続をする時にはDirect Connectが用いられますが、障害対策として、2本の接続を利用することもよくあります。 1本で障害が起きても、もう1本あるから大丈夫。。。大丈夫なはず。。。テストしたい。。。 それが実現できるようになりました。

やってみた

たまたま手元にDirect Connectの冗長構成があったので、やってみました。

準備

効果測定のためにEC2インスタンスから、Direct Connect経由のサーバに対し、pingを打ち続けます。

ubuntu@ip-10-0-0-10:~$ ping -s 1472 172.16.0.10
PING 172.16.0.10 (172.16.0.10) 1472(1500) bytes of data.
1480 bytes from 172.16.0.10: icmp_seq=1 ttl=58 time=78.3 ms
1480 bytes from 172.16.0.10: icmp_seq=2 ttl=58 time=78.2 ms
1480 bytes from 172.16.0.10: icmp_seq=3 ttl=58 time=78.2 ms

そして、CloudWatchメトリクスでVIFのトラフィックを確認します。 2つのVIFのそれぞれにEgressとIngressがありますが、実際にトラフィックが流れているのは1つのVIFだけであることが確認できます。

f:id:swx-watanabe:20210208112222p:plain

フェイルオーバーテストの実行

VIF1つ目をDownさせてみる

VIFを一つ選択し、アクション > フェイルオーバーテスト > BGPを停止させる をクリックします。

f:id:swx-watanabe:20210208112241p:plain

テストでダウンさせる時間を1分〜180分の間で指定します。 今回は10分にしてみました。 確認するをクリックするとテストが開始されます。

f:id:swx-watanabe:20210208112257p:plain

VIFの状態がtestingになります。

f:id:swx-watanabe:20210208112314p:plainf:id:swx-watanabe:20210208112314p:plain

テスト開始後もしばらくはBGPステータスがupになります。

f:id:swx-watanabe:20210208112326p:plainf:id:swx-watanabe:20210208112326p:plain

しばらくすると、BGPステータスがdownになり、VIFのステータスもdownになります。

f:id:swx-watanabe:20210208112340p:plain

CloudWatchを見ると、トラフィックが流れるVIFが変わったことが確認できます。 なお、Ingressしかフェイルオーバーしなかったのですが、非対称ルートになっていたのが原因のようです。

f:id:swx-watanabe:20210208112351p:plain

指定した10分を経過すると復旧してきます。

f:id:swx-watanabe:20210208112405p:plain

VIF2つ目をDownさせてみる

2つのVIFのどちらで障害が起きてもトラフィックに問題ないかを確認したかったので、もう一つのVIFもDownさせてみます。

f:id:swx-watanabe:20210208112418p:plain

今回はテスト時間を20分にしてみました。

f:id:swx-watanabe:20210208112430p:plain

20分経過後にフェイルバック(経路の切り戻し)が自動的に行われました。 今回はきちんと調べてないですが、対向ルータの設定やBGPパラメータ等が原因なのだろうと思います。

f:id:swx-watanabe:20210208112443p:plain

ping結果

1480 bytes from 172.16.0.10: icmp_seq=7384 ttl=58 time=79.3 ms
1480 bytes from 172.16.0.10: icmp_seq=7385 ttl=58 time=78.2 ms
1480 bytes from 172.16.0.10: icmp_seq=7386 ttl=58 time=78.2 ms
1480 bytes from 172.16.0.10: icmp_seq=7387 ttl=58 time=78.2 ms
^C
--- 172.16.0.10 ping statistics ---
7387 packets transmitted, 7377 received, 0% packet loss, time 7396236ms
rtt min/avg/max/mdev = 61.058/79.008/101.443/1.734 ms

パケットロスは7387の中で10パケットだけロスしてますね。 (1%未満なので0% packet lossと表示) 明確にどのタイミングでロスが発生したかは確認しませんでしたが、本記事に書いたのも含め、フェイルオーバーテストを合計4回しているので、それでこれなら優秀なのではないでしょうか。 なんにしても、障害時の挙動を概ね把握でき、だいぶ安心できるようになりました。

テスト履歴

VIFの画面でフェイルオーバーテストの履歴が見れるようになっていました。

f:id:swx-watanabe:20210208112509p:plain

まとめ

Direct Connectの冗長構成で、片方のVIFのBGP停止させるテストが可能になりました。 それによって、片系障害時にどのようなトラフィックになるのかを確認できるようになりました。 また、障害復旧時にフェイルバックが起きるかどうかも確認ができました。

いろいろとテストができるようになったので、今後はDirect Connectの冗長化に関するテスト計画も作成すると良さそうと感じました。

渡辺 信秀(記事一覧)

2017年入社 / 地味な内容を丁寧に書きたい