AWS

AWS|ELB(Elastic Load Balancing)について

ELBの概要

EC2インスタンスを複数のアベイラビリティゾーンに配置して、ユーザーからの単一アクセスを受け付けるようにするために使うことのできるサービスがElastic Load Balancing(ELB)。

  • ELBを使用することで、同じ構成を持った2つのEC2インスタンスを別々のAZに配置することができる。
  • ELBはその2つのEC2インスタンスに、ユーザーからのリクエストトラフィックを分散する。
  • このようなマルチアベイラビリティゾーン構成にすることで、EC2の障害だけでなく、アベイラビリティゾーン単位で障害が発生した場合でも、システムを継続することができる。
  • EC2インスタンスの可用性を高めるためにELBを使用することができる。

ELBの特徴

ELBの主な特徴。

  • ロードバランサータイプ
  • ヘルスチェック
  • インターネット向け/内部向け
  • 高可用性のマネージドサービス
  • クロスゾーン負荷分散

ロードバランサータイプ

ELBには3つのタイプがある。

Application Load Balancer

HTTPまたはHTTPSのリクエストを負荷分散する用途で選択する。

Network Load Balancer

HTTP、HTTPS以外のTCPプロトコルを使用する場合に選択する。

Classic Load Balancer

以前のタイプのロードバランサー。これから構築する新しい環境では、Application Load BalancerかNetwork Load Balancerを選択すれば問題ない。
HTTP/HTTPSではApplication Load Balancerを使い、それ以外のTCPではNetwork Load Balancerを使う。

ヘルスチェック

ELBには、正常なインスタンスのみにトラフィックを送るためのヘルスチェック機能がある。そうすることでユーザーが異常なインスタンスにアクセスしてしまうことを防いでいる。ヘルスチェックは、対象として指定されたパス(index.htmlなど)への簡単な接続試行、またはインスタンスに対してのpingで確認する。

インターネット向け/内部向け

  • ELBはインターネット向けにも内部向けにも対応している。
  • インターネット向けだけではなく内部にもELBを挟むことによって、システムの可用性をさらに高めることができる。

高可用性のマネージドサービス

ELB自体が単一障害点とはなりえないのか?ELBも壊れる前提で考えて、障害が発生したときのために複数設定しておいたほうが良いのか?その必要はない。ELB自体が高可用性のマネージドサービスなので単一障害点とはならない。ELBを通過するトラフィックが増えれば自動的・水平的にこのELBのノードも増えてリクエストに対応する。

クロスゾーン負荷分散

Application Load Balancerで常に有効、Network Load Balancerで有効/無効を選択できる機能に、クロスゾーン負荷分散というものがある。名前のとおり、ターゲットに対してアベイラビリティゾーンを越えて負荷分散するかどうかの設定。有効にしていると、すべてのターゲットインスタンスに対してリクエストが送信される。これによりリクエストの分散が均等となり、ターゲットインスタンスのリソースを無駄なく使える。