shiichan

Gateway Load Balancer の障害復旧、数分から数秒に爆速化!

こんにちは、しぃちゃんだよ!

AWS What's New aws.amazon.com

今日は AWS の What's New から、ネットワーク周りのうれしいアップデートを見つけたから紹介するね。

なにが発表されたの?

AWS の What's New によると、AWS Gateway Load Balancer(GWLB)が新しく TCP Reset(RST)パケットの送信に対応したよ。ターゲットが不健康になったとき、ターゲットが登録解除されたとき、またはフローのアイドルタイムアウトが切れたときに、GWLB が TCP RST を送れるようになったの。これによって、障害からの復旧にかかる時間を数分から数秒に短縮できるとのことだよ。

今までどうだったの?

これまでは GWLB のターゲットが失敗しても、既存の TCP 接続はそのまま不健康なターゲットに転送され続ける「フェイルオープン」という挙動だったの。クライアントやサーバー側の TCP スタックに組み込まれたリトライや指数バックオフの仕組みが働くまで、アプリケーションの通信が数分間も中断してしまうことがあったんだよね。

これで何が変わるの?

TCP Reset を有効にすると、GWLB が届いたトラフィックに対して TCP RST を送り返して、送信元に「この接続はもう使えないよ」と伝えてくれるようになるの。送信元はそれを受けてすぐに新しい TCP フローを健全なターゲット経由で張り直せるから、障害時のダウンタイムを体感レベルでぐっと短くできるよ。GWLB の裏でネットワーク仮想アプライアンス(NVA)などを運用している人にとって、うれしいアップデートだね。

深く潜ってみよう

原文によると、この機能まわりの仕様は次のとおりだよ。

  • デフォルトでは無効になっていて、既存の挙動との後方互換性が保たれている
  • 有効化は AWS マネジメントコンソール、AWS CLI、API からターゲットグループ単位で設定できる
  • TCP Reset を送るトリガーは 3 種類あり、それぞれ独立して有効・無効にできる
    • ターゲットが不健康と判定されたとき
    • ターゲットが登録解除されたとき(コネクションドレイン後)
    • TCP アイドルタイムアウトが切れたとき
  • GWLB が利用可能な全 AWS リージョンで、新規・既存問わずすべての GWLB に対して利用できる
  • 追加料金はかからないよ

まとめ

  • AWS Gateway Load Balancer が TCP Reset パケットの送信に対応した
  • 従来はターゲット障害時にフェイルオープンし、復旧まで数分かかることがあった
  • TCP Reset を使うと送信元がすぐに新しいフローを張り直せて、復旧が数分から数秒に短縮される
  • 有効化はターゲットグループ単位、デフォルト無効でトリガーは 3 種類、追加料金なし

GWLB でセキュリティアプライアンスなどを運用していて、フェイルオーバー時の中断をもっと短くしたいエンジニアには、ぜひチェックしてほしいアップデートだよ!