AWS アプリケーションロードバランサーとは?

エリカ


AWS アプリケーションロードバランサーとは?

こんにちは、ディレクターのエリカです。

AWS(Amazon Web Services)の『Elastic Load Balancing』(以下 ELB)サービスのオプションに『Application Load Balancer』(以下 ALB)が追加されました。

ELBとALB

よく知られているOSI参照モデルでは、ロードバランサーはレイヤー4(トランスポート層)かレイヤー7(アプリケーション層)で実行されます。レイヤー4のロードバランサーはネットワークプロトコルのレベルで動作するので、ネットワークパケットの中身は見ずに負荷を分散します。したがって、HTTPやHTTPSの機能は無視します。レイヤー7のロードバランサーはパケットの中を見て、HTTPとHTTPSヘッダなどの情報にアクセスし、より賢い方法で負荷を分散します。

これまでのELBは、レイヤー4およびレイヤー7両方の機能を有していました。これに対し、ALBではレイヤー7でのみ動作しますが、いくつかの先進的な機能をサポートするようになりました。

ALBで利用できる主な機能

URLベースのルーティング

URLベースでのルーティングが可能になりました。

例えば、/admin へのリクエストや、/recruit へのリクエストをそれぞれ別のサーバグループ(ターゲットグループと呼ばれます)にルーティングすることができるようになりました。これにより、それぞれのサービスを独立して実行し、スケールさせることが可能です。現在は、URLベースのルーティングルールは最大で10個まで定義できます。この先、他のルーティング方式の実装も計画されているとのことです。

コンテナベースアプリケーションのサポート

これまで『Amazon EC2 Container Service』(以下 ECS)を利用して、ひとつのEC2インスタンス上で複数のコンテナをマイクロサービスとして動かしていた場合には、ロードバランサーを利用する際のポートマッピングやヘルスチェックなどの設定に注意が必要でした。ALBでは、コンテナをターゲットグループに紐付けることができ、またより詳細なポートレベルのヘルスチェックを実施できます。

メトリクスの改善

ポートベースでのヘルスチェックレポートがサポートされるようになります。これにより、マイクロサービス毎でメトリクスを収集することができ、それぞれの負荷に応じたスケールアップ・ダウンの設定が容易になります。

プロトコルとワークロードの追加サポート

ALBでは新たに2つのプロトコルがサポートされました。HTTP/2とWebSocketです。

HTTP/2 サポート

HTTP/2は、HTTP1.1プロトコルから多数の改善がなされています。ひとつのコネクションの上で複数のリクエストがサポートされ、ネットワークトラフィックが削減されます。

ちなみに、『Amazon CloudFront』でもHTTP/2がサポートされるようになりました。

WebSocket サポート

HTTP接続を利用した古い方式ではなく、より効率よく長期間のコネクションが利用可能になります。ALBはWebSocketをネイティブにサポートします。

ALBを使ってみて

試しにELBをALBに置き換えてみたのですが、HTTP/2サポートの恩恵を受けることができました。

また、GoogleがHTTPSに対応しているサイトを優遇するといった趣旨のニュースを目にする機会も増えてきました。まだサイトが常時SSLに対応していない場合は、これを機にALBへの移行と常時SSLへの対応などを進めるといいかもしれませんね。

気になる方は、ぜひLIGまでご相談ください。

こうして便利な機能がどんどんサポートされていくのはうれしいですね。

エリカ
この記事を書いた人
エリカ

ディレクター

関連記事