EC2(6)Elastic Load Balancing

ELBとは

ELBとは複数のアベイラビリティゾーンのEC2インスタンスに負荷を分散させるロードバランサである。ELBには、Classic Load BalancerApplication Load Balancerの2種類が存在し、Clasic Load Balancerは、HTTPとHTTPSの他に、TCPSSLにも対応している。一方でApplication Load Balancerは、HTTP/2やWebSocketに対応している。

ロードバランサは、登録されているEC2のうち正常なものだけを選んで負荷を分散する。Clasic Load Balancerは、EC2のインスタンスを直接登録するが、Application Load Balancerは、ターゲットグループをまず生成し、その中にインスタンスを登録する形となる。クロスゾーン負荷分散を無効にしていると、インスタンスがどのようなバランスで配置されていたとしても、アベイラビリティゾーンの数で均等に配分されてしまうので注意が必要である。なお、Application Load Balancerでは、クロスゾーン負荷分散はデフォルトで有効になっている。

ロードバランサに紐付けられているドメイン名に紐づけられたIPアドレスは、負荷に合わせて動的に変化する。DNSエントリは、TTLが60秒に設定されている。また、Application Load Balancerはリクエストタイムアウト値が60秒に設定されている。内側のインスタンスとの通信では、EC2にKeep Aliveを設定しておくことが望ましい。

Application Load Balancer とは

Application Load Balancerは、OSI参照モデルのレイヤー7で動作するロードバランサで、負荷に合わせて自動的にスケールする。ロードバランサには複数のリスナーを紐づけることができ、この下にターゲットグループがぶら下がる。EC2でクライアントの送信先アドレスを取得するためには、x-forwarded-forヘッダフィールドを参照する。またALBが負荷に追従できずスケーリングが間に合わなかった場合は、503を返す。

ELB基本コンポーネント