ふと、ど忘れして困ったときに、さっと調べて思い出すための、ゆるっとした短文ブログサイトです。今日は、ELBについて改めて整理してめもめも…
ELBとは…Amazon VPC上のロードバランサー
受付けたリクエストを複数のターゲット(EC2インスタンスやECSコンテナ)に振り分けるサービス。高負荷になったらターゲットを増やすような構成にすればスケーラビリティが向上するし、正常なターゲットにだけ振り分けるようにすればアベイラビリティが向上します。
マネージドサービスなので細かい運用はAWSさんにやってもらえるし、従量課金なのでコストも最適化されますね。ELB自体やターゲットの負荷に応じて自動的にターゲットを追加起動するオートスケールを構成することもできます。(もちろんターゲット上で動くアプリケーションをオートスケールさせても大丈夫なように作っておく必要がありますね。)
2つのオートスケール
バックエンドのターゲットを自動的に増やすオートスケールもありますが、ELB自体も必要に応じてオートスケールするので、安心です。
ELBの種類
ELBには3種類が用意されています。
- ABL(Application Load Balancer)
アプリケーション層(つまりL7)でロードバランシングします。つまりHTTP,HTTPSのレベルで振り分けを行います。 - NBL(Network Load Balancer)
ネットワーク層(L4かなー)でロードバランシングします。TCP, UDP, TLSあたりですね。 - CBL(Classic Load Balancer)
かつてELBとして提供されていたサービスは「Classic」と位置づけられました。今後、新しくCBLを使い始めるという機会は減ってくるのではないでしょうか。
ALB
2個以上のAZが必要です。
何が入ってくるの?
HTTPSの通信が入ってくることが多いです。ちなみに入り口のIPを固定することはできません。
どうやって振り分けるの?
L7(アプリケーション層) で負荷分散します。つまりURL や HTTP ヘッダー、リクエスト元IPなどで振り分けることができます。ルーティングアルゴリズムは、ラウンドロビン。クロスゾーン負荷分散がデフォルトで有効です。
何が出ていくの
HTTPSを復号してHTTPにして出ていくように構成することが多いです。
どこに行くの?
宛先はいろいろ考えられます。
- インスタンス
- IPアドレス
- Lambda関数
NLB
1つのAZでも使えます。
何が入ってくるの?
TCP、UDPの通信がはいってきます。
入り口のIPを固定することができます。
どうやって振り分けるの?
L4(トランスポート層) で負荷分散します。つまり IP アドレスとポート番号で振り分けます。超低遅延で高スループットを維持しながら、秒間何百万リクエストをさばけるようになってます。ルーティングアルゴリズムは、フローハッシュアルゴリズム。クロスゾーン負荷分散はデフォルトで無効です。
何が出ていくの
TCPとかUDPですねー
どこに行くの?
宛先はいろいろ考えられます。
- インスタンス
- IPアドレス
クロスゾーン負荷分散
複数AZにまたがるノードに均等に分散させる機能です。
例えば、AZ-1に2ノード、AZ-2にも2ノードあるとすると、AZ-1に50%、AZ-2に50%を分散します。ここで、AZ-1のうちの1ノードが応答しなくなったとき。。。
クロスゾーン負荷分散が有効であれば、3ノードに対して均等に分散されます。つまり、AZ-1に33%、AZ-2に66%が分散されます
クロスゾーン負荷分散が無効であれば、2AZに対して均等に分散されます。つまりAZ-1には1ノードしかいませんが50%、AZ-2の2ノードに50%の分散が行われます。
他のサービスとの連携
Amazon Route 53
独自ドメインを利用する場合はRoute53にAレコードとして、ELBを追加します
Amazon CloudFront
CloudFrontのオリジンとしてELBを指定することができます
AWS WAF
ELBの設定画面から利用するWAFを指定することができます。
AWS Global Accelerator
ユーザの近くのエッジロケーションから最適な場所のELBに負荷分散します。