AWSでの負荷分散:選択肢を理解する
はじめに
用途、プラットフォーム、テクノロジーは多岐にわたりますが、ほとんどのアプリケーションには共通する要件があります。オンライン状態を維持してハードウェア障害の影響を受けないようにすること、需要に応じて拡張できること、侵害や攻撃から保護することが必要です。
アプリケーションがメインフレームコンピューターからオープンシステムへ移行し始めて以来、組織はロードバランサーを使用して、アプリケーションの拡張性と可用性を管理してきました。複雑な問題や高度化するセキュリティ脅威に対応するため、ロードバランサーにはセキュリティ機能と最適化機能が追加され、より充実した機能セットへと進化しました。
時代とともに、シンプルなロードバランサーは、強力なアプリケーションデリバリーコントローラー(ADC)へと進化してきました。世界中の何千もの組織が、私たちの生活を支えるアプリケーションのセキュリティ、速度、可用性を確保するためにADCを活用しています。救急医療サービスや銀行業務からゲームやマッチングサービスまで、ADCはアプリケーションが最高のパフォーマンスを発揮できるよう支えるテクノロジーを提供します。
アプリケーションが従来のオンプレミスモデルからクラウドサービスへ移行しても、拡張性、セキュリティ、可用性に対するニーズが低下することはありません。そのため、パブリックとプライベートを問わず、すべてのクラウドプラットフォームが中核となるInfrastructure-as-a-Service(IaaS)の一部として負荷分散サービスを提供しているのは当然のことです。
Amazon Web Services(AWS)のElastic Load Balancing(ELB)サービスは、インターネット上で最大規模のものを含む数十万のアプリケーションを組織が提供できるよう支援します。また、オンプレミスのロードバランサーが顧客ニーズに応えるために機能を追加してきたのと同様に、AWSのロードバランシングサービスにも新たな特長や機能が継続的に組み込まれています。
ELBは多くの組織にとって優れた選択肢となり得ますが、ミッションクリティカルなアプリケーションを最適にサポートするために、追加機能を必要とする組織もあります。また、オンプレミスのアプリケーションを拡張、管理するために、すでにADCやロードバランサーを導入している企業もあります。こうした組織では、データセンターと同じプラットフォームをAWSでも採用することで、クラウド移行にかかる時間、コスト、リスクを削減できます。組織に適したロードバランシングサービスを選定する前に、AWSで利用できるさまざまなロードバランシングの選択肢を見ていきましょう。
AWSでの負荷分散
Amazon Web Servicesは、主要なIaaSプロバイダーの中で最も幅広いサービスを提供しており、シンプルなコンピューティングやブロックストレージから、高度なデータベースや機械学習環境まで、非常に多岐にわたる機能と用途を網羅しています。多くのAWS顧客アーキテクチャで重要なコンポーネントとなるのがロードバランサーです。AWSは、仮想プライベートクラウド(VPC)環境向けに、「Elastic Load Balancing」という名称で2つの異なるサービスを提供しています。
Application Load Balancer
AmazonのApplication Load Balancer(ALB)は、AWSクラウド上で負荷分散、ヘルスモニタリング、URLベースのリクエストルーティングを提供します。ALBは、AWSのいずれかの証明書管理サービスから読み込んだお客さまのSSL証明書を使用して、HTTPおよびHTTPSプロトコルの負荷分散を行うほか、WebSocketトラフィックの負荷分散にも対応しています。さらに、ALBでは、バックエンドのElastic Compute Cloud(EC2)サーバーリソースを自動的にスケーリングできます。トラフィック需要が増加すると、ALBは追加サーバーのデプロイをトリガーし、需要が減少するとそれらを削除できます。
ALBサービス自体も、負荷の増加に対応してスケールします。アプリケーションのネットワークトラフィックが増加すると、追加のALBインスタンスが作成されてDNSに登録され、DNSラウンドロビンによって各ALBインスタンスにトラフィックが分散されます。新しいインスタンスの起動には1~7分かかる場合があるため、急激なワークロード増加時に最適なパフォーマンスを得るには、ALBインスタンスの事前ウォーミングを推奨します。
ALBは、Webコンソール、CLI、API、CloudFormationテンプレート(CFT)、Ansibleなどの各種自動化ツールを使用してデプロイできます。
ネットワークロードバランサー
AWS Elastic Load Balancingファミリーに新たに加わったのが、Network Load Balancer(NLB)です。「Classic」ロードバランサーと同様にレイヤー4で動作し、接続ベースの負荷分散に加え、ネットワーク層およびアプリケーション層のヘルスチェックを提供します。NLBは、トラフィックの急増や大量の接続にも適切に対応できるよう設計されています。また、EC2インスタンスだけでなく、RFC 1918で規定されたプライベートIPアドレスもターゲットとして指定できます。自動スケーリング、セルフスケーリング、デプロイのオプションはALBと同様です。
Classic Load Balancer
AWSは現在も「クラシック」Elastic Load Balancerを提供しています。これはTCPトラフィックの基本的なレイヤー4負荷分散をサポートしますが、レイヤー7のトラフィック負荷分散やステアリングには対応していません。自動スケーリング、セルフスケーリング、デプロイのオプションはALBと同様です。
F5 BIG-IP仮想ADC
F5® BIG-IP® ADCプラットフォームは、軽量なAWS Classic Load Balancerとは対極に位置するロードバランシングソリューションです。セキュリティ、アプリケーション最適化、可用性に関する幅広い課題に対応する一連の機能を備え、よりシンプルなソリューションでは対処できない問題を解決し、アプリケーショントラフィックを管理できます。
BIG-IPは、トラフィックの完全な検査、制御、操作を含む包括的なアプリケーショントラフィック管理を提供します。これはアプリケーション層のリクエストとレスポンスの両方に及び、データ損失の防止やサーバーレスポンスのコンテンツ操作を可能にします。この機能は、迅速かつ信頼性が高く、極めて有用な問題解決ツールとして、数千もの組織で実績を上げています。さらに、アプリケーショントラフィックをプログラムで完全に検査、操作できるため、開発者は戦略上重要な制御ポイントにアーキテクチャ層を追加し、アプリケーションの動作を強化できます。
BIG-IPとELB:管理上の違い
こうしたプログラム可能な問題解決能力には、認識しておくべき負担も伴います。まず、BIG-IPはAWS Classic Load BalancerやALBとは異なるインフラストラクチャレベルで動作します。BIG-IPはVPC内にEC2インスタンスとしてデプロイされるため、メリットとデメリットの両方があります。VPCの一部として動作することで、ADCはアベイラビリティーゾーン内のすべてのコンポーネント間のトラフィックを効果的に管理できるほか、VPC内のコンポーネント間通信をきめ細かく制御できます。
同時に、管理および保守が必要なEC2インスタンスが追加されます。ミッションクリティカルなコンポーネントとなるBIG-IPの高可用性は、構成自体は容易ですが、お客さまの責任で確保する必要があります。ソフトウェア更新や日常的な運用など、基盤となるプラットフォームの管理はAWSではなくお客さまが担います。また、新機能は、ほぼシームレスなサービスアップグレードではなく、AWS Marketplaceでリリースされる新しいバージョンを通じて提供されます。
最後に、BIG-IPはオンデマンドでスケールできるほか、アプリケーションサーバーインスタンスを自動スケーリングできます。ただし、AWSのコアサービスを使用する場合と比べると、ほぼ必然的にお客さまが担う設定作業は増えます。

最適なロードバランサーはどれですか?
組織に適したソリューションは、基本的にアプリケーションとプラットフォームの要件に応じて選択します。AWS ELBが適しているアプリケーションやユースケースもあれば、BIG-IPの高度な機能が必要なものもあります。
AWS Elastic Load Balancing
ALBは、基本的なURIから宛先へのマッピングルールを使用する、シンプルな負荷分散が必要なアプリケーション向けに設計されています。多くのAWSネイティブアプリケーションに必要な、基本的なトラフィック分散およびスケーリングサービスを提供します。開発者やアプリケーションベンダーがセキュリティまたは機能上の問題に迅速に対応できる場合、あるいはセキュリティ侵害の全体的なリスクが低い場合、ALBは有力な選択肢です。
他のTCPプロトコルを使用する同様のアプリケーションで、堅牢かつシンプルな負荷分散サービスが必要な場合は、多くの場合、Classic Load Balancerで十分です。
BIG-IPの負荷分散
組織によっては、AWS上で本格的なADCの機能を活用したい場合もあります。AWS上でBIG-IPを使用するメリットには、次のようなものがあります。
- セキュリティの強化
- トラフィック制御の強化
- トラフィックの最適化
- 真のアプリケーションレイヤープログラマビリティ
BIG-IPのプラットフォームアーキテクチャにより、アプリケーショントラフィックを完全に可視化し、制御できます。幅広い機能を備えたAWS環境内のBIG-IPインスタンスは、アプリケーションのパフォーマンス、セキュリティ、可用性に関する問題に対処するための強力なツールキットを提供します。BIG-IPは、個々のアプリケーションレイヤーのリクエストを、ローカルのEC2インスタンス、別のクラウドのサーバーインスタンス、APIベースのサービス、オンプレミスのデバイスなど、ルーティング可能な任意のリソースに転送できます。
たとえば、ALBはリクエストされたURLに基づいてトラフィックをバックエンドリソースに振り分けることができます。一方、デバイスの種類、接続速度、クライアントの所在地など、より複雑な特性に基づいてトラフィックを振り分ける必要がある場合は、BIG-IPの方が適しています。
この高度な問題解決機能は、エンタープライズアプリケーションをクラウドへ移行する場合や、アプリケーションの脆弱性や動作上の問題に対処できる開発者をすぐに確保できない場合に、特に有用です。アプリケーションを緊急に保護する必要がある場合、新しいクライアントタイプ(クライアントOSの変更を含む)で正常に動作しない場合、または特定のリクエストでクラッシュする場合、BIG-IPは多くの場合、迅速かつ簡単で信頼性の高い解決策を提供します。
もう1つの重要な要素は、データセンターとクラウドの間で一貫性を確保する必要があることです。数千もの組織が、データセンターで重要なアプリケーションを提供するためにBIG-IPデバイスを利用しています。AWS BIG-IP Virtual Editionは、データセンター内の物理BIG-IPと同じアプリケーションレイヤーサービスをAWS上で提供します。BIG-IP VEを使用することで、組織はアプリケーションをより迅速かつ低コストで、確信を持って移行できます。同時に、スタッフは他の分野のリスキリングに注力でき、BIG-IPに関する組織の知識と投資も維持されます。
導入オプション
ネイティブサービスであるAWS ELBは、チェックボックスをオンにするだけで簡単にデプロイできます。AWSでBIG-IP VEを稼働させるには、従量課金モデルまたはライセンス持ち込みモデルを使用して、Amazon Marketplaceからインスタンスをデプロイします。BIG-IPイメージは、手動でデプロイを管理することも、AWS CFTなどの自動化オプションを使用することもできます。F5は、完全にサポートされるテンプレートを複数提供しているほか、一部の「試験的」テンプレートも提供しています。これらはF5 Githubリポジトリから入手できます。このリポジトリには、Python SDKやその他のツールも含まれています。コミュニティでサポートされるその他のデプロイツール、プレイブック、ドキュメントは、F5 DevCentralリポジトリから入手できます。
まとめ
AWS ELBとF5 BIG-IPは、いずれもAWS上にアプリケーションを展開する組織に大きな価値をもたらします。より高度な制御、セキュリティ、プログラマビリティが必要となる状況を把握することで、クラウド上のアプリケーションとビジネスを支える適切なソリューションを選択しやすくなります。
公開日:2017年11月3日
