Elastic Load Balancing
複数のサーバーにトラフィックを自動分散して可用性と耐障害性を高めるサービス
何ができるか
Elastic Load Balancing (ELB) は、受信したトラフィック (アクセス) を複数の EC2 インスタンスやコンテナなどのターゲットに自動的に分散するサービスです。1 台のサーバーに負荷が集中するのを防ぎ、いずれかのサーバーに障害が発生しても他のサーバーが処理を引き継ぐことで、アプリケーションの可用性と耐障害性を向上させます。トラフィック量に応じて自動的にスケールします。
どのような場面で使うか
Web アプリケーションの負荷分散、マイクロサービス間のトラフィック制御、SSL/TLS 終端処理の一元化、ブルー/グリーンデプロイメントの実現、Auto Scaling と組み合わせた自動スケーリング構成など、複数サーバーで構成されるシステムの基盤として利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
レストランの受付係に例えるとわかりやすいでしょう。お客さん (リクエスト) が来店すると、受付係 (ロードバランサー) が空いているテーブル (サーバー) に案内します。特定のテーブルに客が集中しないよう均等に振り分け、もしあるテーブルが使えなくなっても、他のテーブルに案内を続けます。
Elastic Load Balancing とは
Elastic Load Balancing は、AWS が提供するフルマネージドのロードバランシングサービスです。ロードバランサーとは、クライアントからのリクエストを複数のバックエンドサーバーに振り分ける装置のことです。ELB はトラフィック量に応じて自動的にスケールするため、急激なアクセス増加にも対応できます。ヘルスチェック機能により、異常なターゲットを自動的に検出し、正常なターゲットにのみトラフィックを送ります。
ロードバランサーの種類
ELB には 3 つの種類があります。Application Load Balancer (ALB) は HTTP/HTTPS トラフィックに最適化されており、URL パスやホスト名に基づくルーティングが可能です。Web アプリケーションで最も一般的に使われます。Network Load Balancer (NLB) は TCP/UDP トラフィックに対応し、超低レイテンシと毎秒数百万リクエストの処理能力を持ちます。Gateway Load Balancer (GWLB) はサードパーティのネットワークアプライアンスとの統合に使用します。
Auto Scaling との連携
ELB は Auto Scaling と組み合わせることで、真に弾力的なシステムを構築できます。Auto Scaling がトラフィック量に応じて EC2 インスタンスの数を自動的に増減し、ELB が新しく追加されたインスタンスにもトラフィックを自動的に振り分けます。この組み合わせにより、ピーク時には十分なサーバーで処理し、閑散時にはサーバーを減らしてコストを削減できます。
はじめかた
ELB を使い始めるには、EC2 コンソールのロードバランサーセクションで「ロードバランサーの作成」をクリックします。種類 (ALB、NLB、GWLB) を選択し、リスナー (受信ポート) とターゲットグループ (振り分け先) を設定します。ターゲットグループに EC2 インスタンスを登録すれば、ロードバランサーの DNS 名でアクセスできるようになります。
注意点
- ALB と NLB では料金体系が異なるため、用途に合った種類を選択すること
- ヘルスチェックの設定が不適切だと、正常なインスタンスが異常と判定されてトラフィックが送られなくなる場合がある
- HTTPS を使用する場合は、AWS Certificate Manager (ACM) で無料の SSL/TLS 証明書を取得してロードバランサーに設定できる
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。