ロードバランサーの種類について

ロードバランサーの種類について

昨日、AWS Black Belt Online SeminarにてちょうどELBが取り上げられていたので、ELBの種類についておさらいしたいと思います。

Black Belt Online Seminarは、中級者向けと記載の通り、AWSのオペレーションをほとんど行ったことがない方にとっては、少し難しくペースも早いと感じると思います(僕がそうでした)最初は、Webのチュートリアルや入門書籍で慣れてから見る方が良いと思います。

aws.amazon.com

ELBとは

"Elastic Load balancing"の略で、AWSでの、ロードバランシング機能を提供するサービスです。ELBにも種類があります。

aws.amazon.com

具体的には、上記で紹介されているALB, NLB, CLBです。

LBと名が付くものが複数出てくるのでしばらく混乱していましたが、整理すると以下のようなイメージです。

ELB(上位概念:AWSのロードバランシングサービス)

 - ALB (Application Load balancing)

 - NLB (Network Load balancing)

 - CLB (Classic Load balancing)

ALBも、NLBも、CLBもすべてELBなのです。それぞれどういう関係なのか分からず、最初これでつまずきました。業務で「ELB」の単語が出たときは、どれのことなのか意識しておかなくてはなりません。

ALBとは

ALB (Application Load balancing)は、L7(レイヤー7: アプリケーション層)で負荷分散します。情報処理技術者試験でおなじみの、OSI参照モデル(アプセトネデブ..)の一番上位のレイヤーですね。例えば、URLのパスやホストベースにルールを決めることができます。ルールは段階的に設定できます(IF-THEN方式)

f:id:TOSHIOSHIMO:20191030210208g:plain

※画像は https://www.infraexpert.com/study/networking3.html より引用させていただきました

NLBとは

NLB (Network Load balancing)は、L4(レイヤー4: トランスポート層)で負荷分散します。例えば、TCPプロトコルやポート番号をルールを決めることができます。暖気不要で、突発的なトラフィックに対応できます。ターゲットから見ると、クライアントと直接通信しているようにしか見えません。

CLBとは

CLB (Classic Load balancing)はL4/L7の負荷分散が可能です。このCLBですが、特殊なケース以外ではほぼ使うことは無いそうです。EC2-Classicという旧型のEC2を使う場合とからしいですね。

※元々AWSロードバランサーはELBという名称で1種類だけであったのですが、ALBとNLBが新しく追加されたことでELBは上位概念の名称となり、過去のELBがCLBとう名称に変更になったとのことです。

ELB自体もスケーラブル

EC2インスタンスだけではなくELBもスケーラブルで、高負荷時にスケールアップ・スケールアウトが可能です。

f:id:TOSHIOSHIMO:20191029193943p:plain

クロスゾーン負荷分散

異なるAZに負荷分散を行っており、それぞれのAZでEC2インスタンスの数が違う場合でも、それぞれ均等になるよう負荷分散することが可能です。

ルーティングアルゴリズム

ALBは「ラウンドロビン」、NLBは「フローハッシュ」(IPヘッダーのハッシュ値によるルーティング) です。

コスト

CLBに比べ、ALB/NLBの方が圧倒的に安価です。これからシステムを構築する際は、よほどのことが無い限り、ALBかNLBを使うことになるでしょう。

 

クラウドネイティブ・アーキテクチャ 可用性と費用対効果を極める次世代設計の原則 (impress top gear)

クラウドネイティブ・アーキテクチャ 可用性と費用対効果を極める次世代設計の原則 (impress top gear)