みなさん、こんばんは。新人のRenです。今日はElastic Load Balancingについて、お伝えします!

Elastic Load Balancing の特徴

ELBとは、Elastic Load Balancingの略称で、AWSが提供しているロードバランシングサービスです。役割としては、サーバーの負荷(ロード)を分散(バランシング)してくれます。サーバーにアクセスが集中したときに処理速度が低下してしまう、サーバーがダウンしてしまう、エラーでページが表示されなくなってしまうといった問題を防いでくれるのがロードバランサーです。ロードバランサーはオートスケーリングと合わせて使うことが多いです。オートスケーリングの単1通信先として機能するため、オートスケーリングと組み合わせて使うことで、アクセスの需要が低いときはインスタンス数を減らして(スケールイン)それらに負荷を分散し、需要が高いときは増やしたインスタンス数(スケールアウト)に対して負荷を分散することが出来ます(インスタンスは、水平スケールのイメージです)。それによって、負荷の分散と同時に高いコストパフォーマンスを実現できます。

ELBの種類

LBには、3つのロードバランサーがあります。そして、これらを用途に合わせて選択することが出来ます。その3つのロードバランサーというのがALB、NLB、CLBです。

ALBについて

ALB(Application Load Balancer)とは、Webサービスに発生する負荷を分散するロードバランサーです。具体的には、レイヤー7(アプリケーション層と呼ばれ、HTTPのリクエストおよびレスポンスが発生する場所)で動作し、HTTP、HTTPSトラフィックの負荷を分散してくれます。URLに基づくルーティング(通信経路の決定)を行うので、アプリケーションごとにロードバランサーを用意する必要なく、インスタンスのターゲットグループへルーティングできます。他にも、アプリケーションのモニタリングやセキュリティ機能が充実していることもメリットです。

ALBの特徴
 ・レイヤー7に対応している
 ・HTTP/HTTPSリクエストの負荷分散を行う
 ・セキュリティグループによるアクセス制限が可能
 ・同一のクライアントからのリクエストを同一のターゲットにルーティング可能

NLBについて

NLB(Network Load Balancer)は、高パフォーマンスが必要な環境においての負荷分散に最適なロードバランサーです。低いレイテンシーを維持しながら1秒に数百万のリクエストを送信でき、トラフィックパターンの変化にも対応できます。そのため、大量のアクセスが予測されるサーバーに向いています(負荷の急激な上昇に対応できるため)。

〇NLBの特徴
 ・レイヤー4に対応
 ・高可用性、高スループット、低レイテンシである
 ・急激な負荷の上昇にも対応可能
 ・クライアントの送信元IPアドレス/port がターゲットまで保持される
 ・静的IPおよびElastic IPが利用可能

CLBについて

CLB(Classic Load Balancer)は、対応できるプロトコルが多いのが特徴のロードバランサーです。具体的には、TCP、SSL/TLS、HTTP、HTTPSなどに対応できます。CLBはELBの中でも古いタイプのロードバランサーで、複数のEC2インスタンスにおける基本的な負荷分散を提供します。CLBは、EC2 Classicネットワーク内のアプリケーションを対象としています。しかしながら、複雑な設定が出来ないので、現在は使用が推奨されていません。

〇CLBの特徴
 ・レイヤー4、レイヤー7に対応
 ・EC2-Classicネットワークで構築されたアプリケーションが対象
 ・旧タイプのロードバランサー
 ・後方互換性(より新しい製品が既存の製品を扱うことができること)のために残されている

ALBとNLBの違いとは

ALBとNLBには細かな違いが多くあります。それぞれを項目に分けてみていきましょう。

・レイヤー
ALB:レイヤー7(アプリケーション層)
NLB:レイヤー4(トランスポート層、データを適切なアプリケーションに振り分ける)

・プロトコル
  ALB:HTTP、HTTPS
  NLB:TCP、UDP、TCP_UDP、TLS

・送信元ポート
  ALB:ALBのものとなる
  NLB:保持することもできる

・ELBサーバーのIPアドレス
  ALB:指定不可能
  NLB:指定可能

・セキュリティグループ
  ALB:設定可能
  NLB:設定不可能

上記内容が主な違いとなっています。この2つの違いを知ることで、それぞれのメリットが享受されることが理解できます。また、この2つを同じものだと思って扱うと、設計・構築の漏れにつながるため、違いをしっかり理解しておく必要がありますね。