【初学者向け】ロードバランサーの基本機能とAWS ALBとNLBを機能比較してみた
はじめに
AWSサービスの学習をしていると、似たような役割をもつサービスがでてきたりしますよね。
その例として、Application Load Balancer(以下、ALB)とNetwork Load Balancer(以下、NLB)が挙げられると思います。
本記事では、「そもそもロードバランサーってなんだっけ?」「AWSが提供するロードバランサーの種類って何があるの?」「ALBとNLBの違いを理解したい~!」っていう初学者の方にぜひ、読んでみていただきたいです。
※2023年11月時点の情報となります。
ロードバランサーってなんなの?
ロードバランサーとは、名前が示す通り、サーバやネットワークの「負荷(ロード)」を「均等に分散(バランス)」する技術のことです。
現代では、インターネットが発展し、Webサイトやアプリケーションのトラフィックが増大するにつれ、1つのサーバだけでは、全てを処理することが困難な状況になりました。
そこで、対応策としてロードバランサーが登場しました。
ロードバランサーの基本機能について
1. 負荷分散
Webサイトやアプリケーションを使用しているユーザからのリクエストがロードバランサーに到達すると、ロードバランサーはそのリクエストを複数のサーバの中から一つに振り分けます。振り分ける際の基準は、それぞれのサーバの現在の負荷や性能、設定に依存します。この仕組みにより、全てのリクエストが一つのサーバに集中することを防ぎ、全てのサーバのリソースを有効に活用することができます。
2. ヘルスチェック
ロードバランサーはサーバの健康状態を定期的にチェックする役割を担っています。このヘルスチェックは、サーバが正常に動作しているかどうかを確認するために特定のURLへのリクエストやポートの状態を確認することで行われます。サーバが応答しない場合や応答時間が長すぎる場合、ロードバランサーはそのサーバを「不健康」と判断し、新しいリクエストを他の健康なサーバに自動的に振り分けます。
AWSが提供するロードバランサーの種類について
AWSが提供するロードバランサーは、総じてElastic Load Balancing(以下、ELB) と呼ばれています。
ELBのサービスの一部として3つの種類のロードバランサーがあります。
※詳細については、各公式サイトをご覧ください。
Classic Load Balancer(以下、CLB)
Application Load Balancer(ALB)
Network Load Balancer(NLB)
ALBとNLBの機能と用途の比較表
項目 | ALB | NLB |
---|---|---|
プロトコル | HTTP/HTTPS | TCP,UDP,TLS |
OSIモデル | 第7層(アプリケーション層) | 第4層(トランスポート層) |
トラフィック管理 | 主にHTTPおよびHTTPSトラフィック URLパス、ホスト名、HTTPヘッダーなどの 内容に基づいてトラフィックをルーティングする |
TCP,UDP,TLSを使用したトラフィック 接続レベルでのトラフィック分散を行う |
スケーラビリティ | 高いスケーラビリティを提供し、アプリケーションの負荷に応じて自動調整 | 極めて高いスループットと性能を提供し、大量のトラフィックを効率的に処理 |
セキュリティ | SSL/TLSオフローディングによる セキュリティの強化 |
TLSリスナーによるセキュアなトラフィックの管理 |
SSL/TLSオフローディング | SSL/TLSオフローディングをサポートし、サーバの負荷を軽減 HTTPSのトラフィック処理が効率的 |
トランスポートレイヤーセキュリティ(TLS)を使用したリスニングはサポートするが、オフローディングはサポートしていない |
ポートマッピング | 同じポートで複数のIPアドレスやインスタンスにトラフィックをルーティングする機能はない | ターゲットグループに対する複数ポートのサポート 同一インスタンスで複数のアプリケーションを運用可能 |
パフォーマンス | リクエストレベルでの高度な処理により、 やや遅延がある |
高いスループットと低遅延を提供 大規模トラフィックに適している |
ヘルスチェック | HTTP/HTTPSベースのヘルスチェック アプリケーションレベルの問題を検出する |
主に接続可能性の確認に基づくヘルスチェック アプリケーションレベルの問題検出は行わない |
終わりに
ロードバランサーの詳細やAWSが提供するロードバランサーの種類について、図解や表を用いて解説しました。図解や表を用いると視覚学習で理解が深まります。
また、各サービスは単発で学習するのではなく、関連付けて学習することも大切だとわかりました。
これからも、日々、学習を積み上げていきます。
最後まで読んでくださり、ありがとうございました。
Discussion