AWSの新しいロードバランサー「Application Load Balancer」とは

aws-application-loadbalancer-cover

Amazonは新しい負荷分散装置としてALB(アプリケーションロードバランサー)の提供を開始した。従来の仕組みでは実現できなかった高度なルーティングや、対応するプロトコルへの追加によって、設定の簡素化やパフォーマンスの向上が期待される。

OSI参照モデル第7層で高度な機能を提供するアプリケーションロードバランサー

2016年8月、AWSは新しいロードバランサーを導入した。2009年に発表されたElastic Load Balancing (ELB)は、今後、標準ロードバランサー(Classic Load Balancer)と呼ばれ、新しいサービスはアプリケーションロードバランサー(Application Load Balancer)として追加される。アプリケーションロードバランサーの導入によって、ユーザーによる詳細な設定が可能になるメリットがある。

ロードバランサーは、Webサーバーなどへのアクセスを一台のマシンではなく複数のマシンに分散させて処理の平準化を図る負荷分散装置だ。ロードバランサーの存在によって、各マシンで稼働率のバランスがとれるため、全体としての処理速度が向上し、また、特定のマシンが停止していても別のマシンにアクセスが振り分けられるので、可用性が向上する。

ロードバランサーの機能は、データ通信の仕組みを階層構造で表現したOSI参照モデルで言うところの、第4層と第7層に関連する。第4層はトランスポート層とも呼ばれ、エラー訂正・再送制御等の通信管理を担当する。また、第7層はアプリケーション層であり、HTTPやFTP等の通信サービスを実現する。第4層のロードバランサーは通信データの内容に関わらず負荷分散を実現するのに対し、第7層のロードバランサーはデータの内容に従って負荷分散のルールを実装できる。

AWSが今回発表したアプリケーションロードバランサーは第7層に特化した高度な機能を持つ。例えば、HTTPヘッダーに含まれる文字列を解析し、URLパスに従ってアクセス先のサーバーを変更するといった使い方が可能だ。一方で、以前から提供されていた標準ロードバランサーは第4層と第7層の両方をカバーし、基本的な機能が利用できる。

ALBによるルーティング設定の例
aws-application-loadbalancer-1

高度なルーティングや対応プロトコルの追加が魅力

アプリケーションロードバランサーが必要とされる背景には、サーバー構成の複雑化が挙げられる。デスクトップとモバイル端末でアクセス量の傾向や提供するコンテンツなどが異なる場合、それぞれ別のサーバーを用意するケースもあるだろう。また、静的コンテンツと動的コンテンツのポートを分けておけば、アプリケーションサーバーの負荷軽減に役立つ。このような場合、アプリケーションロードバランサーを使えば、HTTPリクエストの内容に基づいてルーティングが可能になるのだ。

コンテナーを利用している場合、一つのEC2インスタンスで複数のポートを開け、複数のサービスを展開できる。アプリケーションロードバランサーを使えば、各サービスに紐づけられたポート間で負荷分散を行える。また、正常なポートにのみルーティングをできるよう、アプリケーションの状態を取得するヘルスチェックが利用可能だ。アプリケーションにエラーがある場合、200~399の詳細なエラーコードが取得できる。

アプリケーションロードバランサーは、従来のELBに比べ、2つのプロトコルに追加で対応した。一つはWebSocketで長期間のTCPコネクションを利用可能にする。特に、モバイル端末に有効な手法であり、サーバー接続処理による電源消費を最小にしながら、リアルタイムに更新される株価などのデータを提供するのに適している。もう一つのプロトコルはHTTP/2だ。1つの接続で複数のリクエストを処理できるため、トラフィックの削減に役立つ。モダンなWebブラウザはHTTP/2に対応しているため、ブラウザ側の処理速度向上が期待できる。

アプリケーションロードバランサーは高度な機能を提供しているにも関わらず、標準ロードバランサーに比べ、10%低い料金が設定されている。アプリケーションロードバランサーの利用時間あたり0.0243ドルとなっており、1秒あたりに確立された新規接続数、1分あたりのアクティブ接続数、ロードバランサーで処理された帯域幅の3要素から算出される。

アプリケーションロードバランサーの主な特徴
aws-application-loadbalancer-2

 IPv6非対応のため既存ELBからの移行に注意

アプリケーションロードバランサーは、ELB(Elastic Load Balancing)コンソールを使って作成・管理が可能だ。設定するアベイラビリティ・ゾーン、SSL証明書の添付、セキュリティグループの設定、振り分け先となるターゲットグループのEC2インスタンスとポートの設定が必要になる。管理コンソール上で細かいルーティングの設定までできてしまうのがアプリケーションロードバランサーの利点と言えるだろう。

現在ELBを使用するユーザーがアプリケーションロードバランサーへ移行したい場合、AWSより提供されているPythonスクリプトを利用すると容易に移行が行える。具体的には、既存の標準ロードバランサーの設定を踏襲したアプリケーションロードバランサーが新規に作成される。運用中のEC2インスタンスにアプリケーションロードバランサーを紐づけて、移行が完了する。

アプリケーションロードバランサーを使う上での注意点としてIPv6がサポートされていない点が挙げられる。標準ロードバランサーではIPv4とIPv6の双方がサポートされていたため、アプリケーションロードバランサーへ移行する既存ユーザーは、問題が起こらないようDNS等の設定を確認する必要がある。

最後に

アプリケーションロードバランサーは従来のELBが備えていなかった高度なルーティング機能や、WebSocketなどのプロトコル対応などが提供されている。設定の簡素化やパフォーマンスの向上が期待できるアプリケーションロードバランサーは試してみる価値がある。

Pocket

コメント