Elastic Load Balancing (ELB)
1. サービス概要¶
Elastic Load Balancing (ELB) は、AWS が提供するフルマネージドサービスで、複数の EC2 インスタンス、コンテナ、IP アドレスにアプリケーションのトラフィックを自動的に分散する。
ELB は、アプリケーションの可用性、耐障害性、スケーラビリティを向上させ、トラフィックの変動に応じてリソースを動的に調整できる。
ELB には、
- Application Load Balancer (ALB)
- Network Load Balancer (NLB)
- Classic Load Balancer (CLB)
- Gateway Load Balancer (GWLB)
という 4 つのタイプがある。
主なユースケースとして、
- Web アプリケーションの負荷分散
- API サービスの負荷分散
- マイクロサービスの負荷分散
- 高可用性を必要とするアプリケーションのデプロイ
などが挙げられる。
2. 主な特徴と機能¶
2.1 複数のロードバランサータイプ¶
ELB には、アプリケーションの要件に合わせて適切なロードバランサータイプを選択できる。
それぞれ異なる特徴と機能を持っている。
- Application Load Balancer (ALB): HTTP/HTTPS トラフィックをルーティングし、高度なルーティング機能をサポート。
- Network Load Balancer (NLB): TCP/UDP トラフィックをルーティングし、非常に高いパフォーマンスと低レイテンシを実現。
- Classic Load Balancer (CLB): 古いタイプのロードバランサーで、HTTP/HTTPS と TCP トラフィックをサポート。
- Gateway Load Balancer (GWLB): 仮想アプライアンスを介したトラフィックをルーティング。
2.2 自動スケーリング¶
ELB は、トラフィックの変動に応じて自動的にスケールアップまたはスケールダウンできる。
これにより、アプリケーションのパフォーマンスを維持し、コストを最適化できる。
2.3 ヘルスチェック¶
バックエンドインスタンスのヘルス状態を定期的にチェックし、異常なインスタンスへのトラフィックルーティングを停止する。
これにより、アプリケーションの可用性を向上させる。
2.4 セッション維持 (Sticky Session)¶
特定のユーザーからのリクエストを、常に同じバックエンドインスタンスにルーティングするセッション維持機能をサポートしている。
これにより、セッション情報を保持するアプリケーションをスムーズに動作させることができる。
2.5 TLS/SSL 終端¶
HTTPS トラフィックを復号化 (TLS/SSL 終端) し、暗号化されていないトラフィックをバックエンドに転送できる。
これにより、バックエンドインスタンスの負荷を軽減できる。
2.6 柔軟なルーティング¶
ALB では、パスベースルーティング、ホストヘッダールーティング、クエリパラメータルーティングなど、高度なルーティングルールを設定できる。
これにより、リクエストを特定のターゲットグループにルーティングできる。
2.7 セキュリティ¶
ELB は、VPC セキュリティグループ、リスナーの HTTPS 設定など、セキュリティ機能を提供し、安全なアプリケーションデプロイをサポートする。
ACM (AWS Certificate Manager) と連携して、TLS/SSL 証明書を簡単に管理できる。
2.8 統合性¶
ELB は、AWS の他のサービス (Auto Scaling, AWS Certificate Manager, Amazon CloudWatch など) と統合されており、スケーラブルで安全なアプリケーションアーキテクチャを構築できる。
AWS WAF と連携して、Web アプリケーションを保護できる。
3. アーキテクチャおよび技術要素¶
- クライアントからのリクエストは、ELB に送信。
- ELB は、設定されたルールに従って、トラフィックをバックエンドインスタンスに分散。
- ヘルスチェック機能により、異常なインスタンスへのトラフィックルーティングを停止。
- セッション維持が有効な場合、特定のユーザーからのリクエストを同じインスタンスにルーティング。
- 必要に応じて、TLS/SSL 終端を実行。
ELB は、フルマネージドサービスとして提供され、高い可用性、スケーラビリティ、セキュリティを内包している。
アプリケーションの負荷分散を自動化し、可用性を向上させる。
4. セキュリティと認証・認可¶
セキュリティは ELB の重要な要素である:
- IAM によるアクセス制御: AWS IAM を利用して、ELB リソースへのアクセスを制御し、権限を管理。
- VPC セキュリティグループ: バックエンドインスタンスへのトラフィックを制御。
- リスナーの HTTPS 設定: TLS/SSL 証明書を使用して、HTTPS 通信を暗号化。
- AWS WAF: Web アプリケーションファイアウォールと連携し、悪意のあるトラフィックをブロック。
- 監査ログ: AWS CloudTrail を利用して、API 呼び出しやリソース変更を記録。
これにより、アプリケーションの安全性とコンプライアンスを確保できる。
5. 料金形態¶
Elastic Load Balancing の料金は主に以下に基づく:
- ロードバランサー時間: ロードバランサーがアクティブな時間に応じた課金。
- データ処理量: ロードバランサーを介して転送されるデータ量に応じた課金。
- LCU (Load Balancer Capacity Units): ALB と NLB で、接続数、データ処理量、ルール評価などに基づく課金単位。
6. よくあるアーキテクチャ・設計パターン¶
一般的なパターンは以下の通りである:
- Web アプリケーションの負荷分散: ウェブアプリケーションのトラフィックを複数の EC2 インスタンスに分散し、高可用性を実現。
- API サービスの負荷分散: API サービスのトラフィックを複数のバックエンドサーバーに分散し、パフォーマンスを向上。
- マイクロサービスの負荷分散: マイクロサービスを個別にデプロイし、ELB で負荷分散。
- コンテナアプリケーションの負荷分散: Amazon ECS や EKS 上で動作するコンテナアプリケーションの負荷分散に ELB を利用。
- 高可用性を必要とするアプリケーションのデプロイ: 複数のアベイラビリティーゾーンにインスタンスを分散し、ELB で負荷分散することで、アプリケーションの可用性を最大化。
7. 設定・デプロイ手順 (ハンズオン例)¶
- EC2 インスタンスを起動し、ターゲットグループを作成。
- ELB (ALB または NLB) を作成し、ターゲットグループを登録。
- リスナーを設定し、ポートとプロトコルを設定。
- ヘルスチェックを設定し、バックエンドインスタンスのヘルス状態を監視。
- ELB にトラフィックを送信し、負荷分散が行われていることを確認。
8. 試験で問われやすいポイント¶
8.1 複数のロードバランサータイプ¶
- ALB: HTTP/HTTPS トラフィック、高度なルーティング機能について理解。
- NLB: TCP/UDP トラフィック、高パフォーマンス、低レイテンシについて理解。
- CLB: HTTP/HTTPS と TCP トラフィックをサポートするが、機能が少ないことを理解。
- GWLB: 仮想アプライアンスを介したトラフィックルーティングを理解。
8.2 自動スケーリング¶
- トラフィック対応: アプリケーションのトラフィックに応じて自動的にスケールアップ/ダウンできることを理解。
- コスト最適化: アプリケーションのパフォーマンスを維持しつつ、コストを最適化できることを理解。
8.3 ヘルスチェック¶
- ヘルス状態監視: バックエンドインスタンスのヘルス状態を定期的にチェックすることを理解。
- 異常インスタンス除外: 異常なインスタンスへのトラフィックルーティングを停止することを理解。
8.4 料金体系¶
- ロードバランサー時間: ロードバランサーがアクティブな時間による課金を理解。
- データ処理量: ロードバランサーを介して転送されるデータ量による課金を理解。
- LCU: ALB と NLB の課金単位である LCU を理解。
8.5 類似・関連サービスとの比較¶
- AWS Auto Scaling: EC2 インスタンスの自動スケーリングに特化。ELB はトラフィック分散に特化。
- AWS Global Accelerator: グローバルなトラフィック分散サービス。ELB はリージョナルな負荷分散サービス。
8.6 試験で頻出となる具体的な問われ方と答え¶
- Q: Elastic Load Balancing (ELB) の主な用途は?
- A: 複数のバックエンドインスタンスにトラフィックを分散し、可用性を向上させること。
- Q: ELB にはどのような種類がある?
- A: Application Load Balancer (ALB), Network Load Balancer (NLB), Classic Load Balancer (CLB), Gateway Load Balancer (GWLB)。
- Q: ALB は主にどのようなトラフィックを処理する?
- A: HTTP/HTTPS トラフィック。
- Q: NLB はどのようなトラフィックを処理する?
- A: TCP/UDP トラフィック。
- Q: ELB のセキュリティ対策は?
- A: VPC セキュリティグループ、TLS/SSL 終端、AWS WAF 連携など。
- Q: ELB の料金体系は?
- A: ロードバランサー時間、データ処理量、LCU などによる課金。
- Q: ELB と Auto Scaling の違いは?
- A: Auto Scaling は EC2 インスタンスのスケーリング、ELB はトラフィック分散。