本記事の内容
本記事では、初めてALBを扱う人やAWS認定資格取得を目指す方向けに、ALBの基礎知識を解説します。
- ELBとの違い
- ALBの構成要素
- ALBの特徴/利用シーン
- 利用料金
ALBの概要
ALBは、AWSが提供するロードバランサーサービスの一つで、アプリケーションレベルでのトラフィック分散を行います。複数のサーバーやコンテナにリクエストを振り分けることで、システムの可用性と耐障害性を向上させます。
【ロードバランサーとは?】
ネットワークトラフィックを複数のサーバーに分散させる装置やサービスです。これにより、単一のサーバーに負荷が集中することを防ぎ、システム全体の効率と信頼性を向上させます。
ALBとELBの違い
ALBとELBは異なるAWSサービスではなくて、ELBというサービス群の中にALBが含まれます。ELBには、以下の3種類のロードバランサーがあります。
- ALB
- 「OSI参照モデル」におけるレイヤー7(アプリケーション層)で動作し、HTTP/HTTPSトラフィックを詳細に解析してルーティングできます。
- NLB
- 「OSI参照モデル」におけるレイヤー4(トランスポート層)で動作し、非常に低レイテンシで大量のトラフィックを扱うネットワーク層の負荷分散を行います。
- CLB
- 初期のロードバランサーで、「OSI参照モデル」におけるレイヤー4(トランスポート層)とレイヤー7(アプリケーション層)で動作します。
- 機能は基本的で、ラウンドロビンやスティッキーセッションなどのシンプルな負荷分散を提供しますが、細かなトラフィック制御はできません。
【OSI参照モデルとは?】
ネットワーク通信を7つの層(物理層からアプリケーション層まで)に分けて標準化したモデルで、国際標準化機構(ISO)によって作成されました。
ALBの構成要素
ALBは以下の要素で構成されます。
- リスナー
- リスナールール
- ヘルスチェック
①リスナー
リスナーは「どのプロトコル(HTTP/HTTPS)・ポートでリクエストを受け取るか」を定義します。リスナーは指定されたポートでリクエストを待ち受け、受信したリクエストをその内容に応じて処理するための次のステップに進めます。
②リスナールール
リスナーが受け取ったリクエストに対して「どの条件に一致するか」を基に振り分け先を定義するものです。
URLのパスやホストヘッダなどの条件を指定し、条件に一致するリクエストを適切なターゲットグループに転送します。条件に合わないリクエストは、デフォルトルールに従って処理されます。
③ターゲットグループ
ターゲットグループは、ALBがトラフィックを転送する先のグループを定義します。ターゲットグループには、EC2インスタンス、コンテナ(ECSタスク)、Lambda関数などを登録できます。
ALBの特徴
ALBの特徴を抑えることで、効果的に活用するための理解を深めましょう。
- レイヤー7での動作
- WebSocketとHTTP/2のサポート
- 詳細なヘルスチェック
- 暗号化通信のサポート
特徴①:レイヤー7での動作
ALBはOSI参照モデルのレイヤー7(アプリケーション層)で動作します。
これにより、ALBはHTTPやHTTPSのリクエスト内容を解析し、パスやホストヘッダ、クエリパラメータ、HTTPメソッドなどを基に高度なトラフィックルーティングを行えます。例えば、特定のパス(例:/api/
)を持つリクエストを特定のサーバー群に、別のパスを持つリクエストを別のサーバーに振り分けることが可能です。
特徴②:WebSocketとHTTP/2のサポート
- WebSocket
-
双方向のリアルタイム通信を可能にするプロトコルであり、ALBはこのプロトコルをサポートしています。これにより、クライアントとサーバー間で持続的な接続を確立し、リアルタイムなチャットやストリーミングなどのアプリケーションに適しています。
- HTTP/2
-
HTTP/1.1よりも効率的なプロトコルで、複数のリクエストを1つの接続で多重化し、ヘッダーの圧縮などにより通信の高速化を図ります。ALBはHTTP/2もサポートしており、ページの読み込み速度を向上させ、リソースの効率的な利用が可能です。
特徴③:ヘルスチェック
ALBはターゲットグループに対して、ヘルスチェック機能を提供します。
ヘルスチェックはターゲットグループごとに設定され、HTTPやHTTPSプロトコルで指定したエンドポイントに対してリクエストを送信して状態を確認します。そして、健康状態が悪いターゲットはトラフィックの対象から外れ、健康状態が回復すると再びトラフィックを受け取れるようになります。このプロセスにより、システム全体の可用性を保ちます。
特徴④:暗号化通信のサポート
ALBは、HTTPS(SSL/TLS)による暗号化通信をサポートしており、セキュアな通信を実現します。
SSL/TLS証明書を使用してWebトラフィックを暗号化することで、クライアントとサーバー間のデータ通信を保護できます。ALBには、AWS Certificate Manager(ACM)との連携により、無料で証明書を管理し、自動更新する機能も提供されています。
ALBの利用例
ALBの具体的な利用シーンを解説します。
利用例①:Webアプリケーションの負荷分散
ALBは、HTTP/HTTPSトラフィックを解析し、リクエストのパスやホストに基づいてトラフィックを振り分けることができるため、複数のWebサーバーに対するトラフィックを効率的に分散できます。これにより、負荷が均等化され、応答性が向上します。
利用例②:マイクロサービスアーキテクチャ
マイクロサービス環境では、複数のサービスが異なるエンドポイントを持つことが一般的です。ALBは、特定のURLパスやホスト名に基づいてトラフィックを適切なマイクロサービスにルーティングできるため、サービス間の連携が容易になります。
利用例③:WebSocketやHTTP/2を使用するアプリケーション
リアルタイム通信を行うアプリケーション(例:チャットアプリやゲーム)では、WebSocketのサポートが重要です。ALBはWebSocketをサポートしているため、持続的な接続が必要なアプリケーションにも適しています。また、HTTP/2を利用することで、複数のリクエストを1つの接続で効率的に処理できます。
利用例④:暗号化通信を実現したい場合
ALBはSSL/TLS証明書を管理し、トラフィックを暗号化・復号化する機能を持っています。これにより、バックエンドサーバーは暗号化処理から解放され、管理負荷が軽減されます。
ALBの料金
①実行料 + ②データ転送料
ALBは実行時間とデータ転送量に応じて料金が発生します。
料金の詳細情報を知りたい方は「AWS公式サイト」をご確認ください。
①実行料
実行時間× 単価
ALBの実行時間に比例して料金が発生します。
また単価は、リージョンによって若干異なります。
データ転送料
データ転送量(OUT)× 単価
データ送信量に比例して料金が発生し、データ受信には料金が発生しません。
また単価は、リージョンによって若干異なります。
参考記事
本記事の解説は以上です。
ここからは、より知識を深めたい人向けに関連記事を紹介します。
ALBのユースケース
本ブログでは、AWSサービスの紹介だけではなく頻出のシステム構成も解説しています。
ハンズオン形式で解説しているので、作成手順や構築時のパラメータが気になる人にもおすすめです!
コメント