COLUMN誰でもわかる!お役立ちコラム

AWS活用支援コラム

AWS ALBとは? ELBとはどう違う?

ロードバランサーとは?

ロードバランサーとは、その名前が示す通り、サーバーやネットワークの「負荷(ロード)」を「均等に分散(バランス)」する技術のことです。
インターネットが発展し、Webサイトやアプリケーションのトラフィックが増大するにつれ、ひとつのサーバーだけでその全てを処理することは難しくなってきました。

そこで、ロードバランサーが登場しました。
ロードバランサーの主要な機能としては下記の2つがあります。

負荷分散

クライアント(例えば、ウェブブラウザを使用しているユーザー)からのリクエストがロードバランサーに到達すると、ロードバランサーはそのリクエストを複数のサーバーの中から一つに振り分けます。振り分ける際の基準は、それぞれのサーバーの現在の負荷や性能、設定に依存します。

この仕組みにより、全てのリクエストが一つのサーバーに集中することを防ぎ、全てのサーバーのリソースを有効に活用することができます。結果として、ウェブサイトやアプリケーションのパフォーマンス(レスポンス時間)が向上し、ダウンタイム(停止時間)が減少します。

ヘルスチェック

また、ロードバランサーはサーバーの稼働状態(健康状態)を監視する役割も果たします。特定のサーバーがダウンした場合やパフォーマンスが低下した場合、ロードバランサーはそのサーバーへのリクエストを他の健康なサーバーへ自動的に振り分けます。

AWS上で様々なマネージドサービスを活用してDXを実現するスタイルズのクラウドネイティブ開発サービスはこちら→

ALB(Application Load Balancer)とは?

ALBは、AWSが提供するロードバランサーの一種です。ネットワークのOSI参照モデルでいうところの、レイヤ7(アプリケーション層)で動作するため、『Application Load Balancer』と名付けられています。HTTP/HTTPSトラフィックを分析し、その内容に基づいてリクエストを適切なターゲット(サーバー)に振り分けます。

そのため、複雑なロードバランシングの要件(URLベースのルーティング、リクエストヘッダベースのルーティングなど)を満たすことが可能です。

ELB(Elastic Load Balancing)と何が違う?

ALBとELBは何が違うのでしょうか。ここで重要なのは、ALBとELBは対立する概念ではなく、ALBは実際にはELBの一部であるということです。ELBはAWSが最初に提供したロードバランサーで、その後の進化とともにClassic Load Balancer(CLB)、ALB(Application Load Balancer)、NLB(Network Load Balancer)という3つのタイプに分化しました。ELBはその総称という概念となります。

それぞれのタイプは、異なるレイヤーで動作し、異なる特性を持っています。例えば、NLBはその名の通りOSI参照モデルのレイヤ4(ネットワーク層)で動作します。要件に応じて適切なロードバランサーを選択することが重要です。

ALB(Application Load Balancer)の特徴は?

それでは、ALBの特徴やALBができることについて、具体的に見ていきましょう。

アプリケーションレベルでのロードバランシング

ALBは、HTTP/HTTPS層で動作し、入ってくるリクエストの内容を見て、それぞれを最適なサーバーにルーティングします。リクエストとは、クライアントからサーバへ要求を伝えるメッセージのことで、URLなどで送信してほしいファイルや表示してほしいコンテンツなどを指示することです。

リクエストに含まれるURLパスに基づくルーティングや、HTTPヘッダー、リクエストメソッド、クエリパラメータ、ソースIPアドレスなど、多種多様な要素に基づいてトラフィックを分散させることを可能にします。

フレキシブルなターゲットグループ

ALBでは、リクエストを分散する先のサーバーを『ターゲットグループ』として指定します。ターゲットとしては、EC2インスタンスだけでなく、ECSコンテナやLambda関数なども指定できます。これにより、異なるリソースに対して柔軟なロードバランシングを行うことが可能です。

ヘルスチェック

ヘルスチェックとは、振り分け先のサーバーが正常にリクエストを処理できる状態かをチェックすることです。ALBはターゲットのヘルスチェックを自動的に行います。また、ヘルスチェックだけでなく障害が発生したインスタンスからトラフィックを自動的に切り替えることができ、サービスのダウンタイムを防止します。

暗号化通信の終端

SSL/TLS暗号化通信の終端をALBに行わせることも可能です。これにより、バックエンドのサーバーはSSL/TLSの処理から解放され、コンピューティングリソースを他の重要なタスクに集中させることができます。また、ALBはSSL/TLS証明書の管理も自動化し、定期的な更新や暗号スイートの選択を簡易化します。

WebSocketとHTTP/2サポート

ALBはWebSocketとHTTP/2をサポートしています。これにより、リアルタイムの双方向通信を可能にするWebSocketや、複数のリクエストを同一の接続で並列処理できるHTTP/2を利用したアプリケーションのパフォーマンスと効率性を向上させることができます。

他のAWSサービスとの統合

ALBは様々なAWSのサービスと連携を行うことができます。例えば、AWS WAF (Web Application Firewall)と数クリックで連携を行うことができるため、一般的なウェブ攻撃を防ぐことが可能です。これにより、アプリケーションを保護することが可能となっています。また、ALBのログについてはCloudwatchやS3に簡単に保存することが可能となっています。

スケーラビリティ

ALBは自動的にスケーリングを行い、急激なトラフィックの増加に対応します。これにより、予期しないトラフィックの増加に対してもアプリケーションのパフォーマンスを維持できます。

Network Load Balancer(NLB)の特徴は?

続いて、NLBの特徴やNLBができることについて、具体的に見ていきます。

超高速なトラフィックの処理

NLBは数百万パケット/秒(Mpps)レベルのトラフィックを処理する能力を持っており、AWSが提供するロードバランサーサービス中でも最もパフォーマンスが高いとされています。これにより、大規模なワークロードと急増するネットワークトラフィックを効率的に処理できます。

UDPトラフィック対応

NLBはTCPのほかに、UDPプロトコルをサポートしています。UDPとは、TCPと違いパケットのやり取りについて厳密なチェックをしないプロトコルであるため、動画配信など大量のデータを配信する際に利用されるプロトコルです。そのため、これらのプロトコルを使用するアプリケーションやワークロードに対してロードバランシングを行うことが可能です。

静的IPのサポート

ALB構成の場合、IPアドレスは動的に変わるため、ELBのDNS名を指定する必要がありました。一方でNLBは、AZ(サブネット)ごとに1つの静的IPアドレスが付与され、IPアドレスが固定されます。加えて、AWSが自動で割り当てたアドレスの他に、Elastic IP を割り当てることもできます。そのため、Route53などではAレコードを使用することができます。また、金融機関などセキュリティの高いネットワークから送信先を絞って通信する場合などに適しています。

接続先IPの保持

LBは送信元IPアドレスをALBのIPアドレスに書き換えますが、NLBはクライアントの送信元IPアドレスがターゲットまで保持されます。これにより、特定のPCやモバイル端末を同じバックエンドのサーバーに振り分け続けることが可能です。

これは、リアルタイムゲームやVoIP(Voice over IP)などのアプリケーションにとって、特に重要な特徴です。

AWS上で様々なマネージドサービスを活用してDXを実現するスタイルズのクラウドネイティブ開発サービスはこちら→

まとめ

ロードバランサーはWebアプリケーションのパフォーマンスと可用性を維持するために欠かせない存在となっています。AWSのロードバランサーサービスである、ELBはALBと対立する概念ではなくロードバランシングサービスの総称です。そして、ALB、NLBにはそれぞれ特性があり、これらは設計・運用しているアプリケーションに合わせて選びます。しかし、これらのサービスを効果的に利用するには、各サービスの特性とそれらが提供する機能を理解することが必要です。不明な点があれば専業のベンダーと相談してみるといいでしょう。