ALB使ってますか!
正直CLBで良いんじゃない…って人、多いと思います!
CLBはL4でALBはL7…とか色々あると思いますが、あまり注目されてないポイントとして「TCP Keepaliveされるか?」というのがあります
[ユーザー]-[ELB]-[APサーバー]
という構成があるとします。
[ELB=CLB]
ユーザーアクセスが終了したあと、ELB-APサーバー間で数秒間TCP Keepaliveされます。正確に言うと「ESTABLISHED」のままになります。これはHTTP/TCPどちらで死活監視しても一緒です。
[ELB=ALB]
ユーザーアクセスが終了したあと、即時に「TIME_WAIT」に移行します。
これによって何が違うのか?というおはなしなのですが、APサーバーがdjangoやrailsのようなアプリケーション・サーバーの場合に非常に困ることになります。
ユーザー通信が終了しているにもかかわらず、そのプロセスがCLBのKeepaliveによって開放されないため、次の通信に即時に使えない状態になります。それが積み重なった結果、APサーバーのプロセスがCLBによって使い潰されます。
要は『ECSのバランサーにCLBを使わないほうがいい』というおはなしです
0 件のコメント:
コメントを投稿