Elastic Load Balancing
リクエスト分散
request を複数の EC2/コンテナ/IP に分散し、ヘルスチェックを行って故障したマシンを除外します。ALB(HTTP)、NLB(TCP/UDP)、GWLB があります。
- コスト$$ ふつう
- 難易度●●●●●
- 未使用でも課金?はい
- AWS マネージド
- 出題試験CLF · SAA · DVA · SOA
たとえるなら空いている窓口にお客様を振り分ける受付係のようなものです。
ELB はシステムのどこにある?
具体例でステップごとに
- Web アプリが 3 つの AZ の EC2 3 台で動いていて、ユーザーがアクセスする 1 つのアドレスが必要です。
- Application Load Balancer を作成し、HTTPS 用に ACM 証明書を付け、Route 53 でドメインを向けます。
- ALB はリクエストを 3 台に振り分け、/api のパスは API 用の台へ、それ以外は Web 用の台へ送ります。
- ヘルスチェックは 30 秒ごとに行われ、応答しなくなった台には ALB がリクエストを送らなくなります。
- Auto Scaling と組み合わせると、故障した台は置き換えられ、新しい台は自動でロードバランサーに登録されます。
いつ使う?
✓ 使うべき場面
2 台以上のマシン/コンテナで同じアプリケーションを提供する場合。
✗ 避けるべき場面
純粋な serverless API → API Gateway。
よくある使い方
- EC2 または ECS への Web/API の負荷分散(ALB)
- マイクロサービス向けの path/host ベースのルーティング
- 低遅延の TCP/UDP、静的 IP(NLB)
- ネットワークフローに仮想ファイアウォールを挿入(GWLB)
ELB・API Gateway・CloudFront の違い
| 役割 | リージョン内のインスタンス/コンテナにトラフィックを分散 | API の窓口:認証、レート制限、変換 | ユーザーの近くでコンテンツをキャッシュする CDN |
|---|---|---|---|
| レイヤー | HTTP(ALB)または TCP/UDP(NLB) | HTTP | HTTP |
| 課金 | 時間料金 + キャパシティユニット | リクエスト単位 | データ転送量 + リクエスト |
| 向いている用途 | EC2/ECS 上の大量トラフィックの Web アプリ | Lambda によるサーバーレス API | 静的コンテンツ、世界中のユーザー |
料金はいくら?
- 課金方式: ALB: 約 $0.0225/時間 + 約 $0.008/LCU 時間(LCU は新規接続、アクティブ接続、帯域幅、rule 数で計算)。
- 無料枠: 旧アカウント: 12 か月間 750 時間 + 15 LCU。
環境ごと/service ごとに別々の ALB(rule でまとめるべき)。Kubernetes が作成した load balancer の放置。load balancer のパブリック IPv4 も課金される。
パスやホスト名によるルーティング、スティッキーセッション、WAF の適用なら ALB です。静的 IP、TCP/UDP、超低レイテンシーなら NLB、サードパーティのファイアウォール製品にトラフィックを通すなら Gateway Load Balancer です。
本番の試験問題に挑戦
1A company has a three-tier environment on AWS that ingests sensor data from its users' devices. The traffic flows through a Network Load Balancer (NLB) then to Amazon EC2 instances for the web tier, and finally to EC2 instances for the application tier that makes database calls. What should a solutions architect do to improve the security of data in transit to the web tier?
- AConfigure a TLS listener and add the server certificate on the NLB.
- BConfigure AWS Shield Advanced and enable AWS WAF on the NLB.
- CChange the load balancer to an Application Load Balancer and attach AWS WAF to it.
- DEncrypt the Amazon Elastic Block Store (Amazon EBS) volume on the EC2 instances using AWS Key Management Service (AWS KMS).
答えを見る
正解: A
NLB に TLS リスナーと証明書を追加し、Web 層への通信を暗号化します。WAF や Shield は攻撃を防ぐものの暗号化はせず、EBS の暗号化は保存データの保護であって転送中のデータではありません。
2A company runs a web application on Amazon EC2 instances in an Auto Scaling group that has a target group. The company designed the application to work with session affinity (sticky sessions) for a better user experience. The application must be available publicly over the internet as an endpoint. A WAF must be applied to the endpoint for additional security. Session affinity (sticky sessions) must be configured on the endpoint. Which combination of steps will meet these requirements? (Choose two.)
- ACreate a public Network Load Balancer. Specify the application target group.
- BCreate a Gateway Load Balancer. Specify the application target group.
- CCreate a public Application Load Balancer. Specify the application target group.
- DCreate a second target group. Add Elastic IP addresses to the EC2 instances.
- ECreate a web ACL in AWS WAF. Associate the web ACL with the endpoint.
答えを見る
正解: C, E
パブリックな Application Load Balancer はスティッキーセッションに対応し、AWS WAF のウェブ ACL を関連付けられます。NLB や Gateway Load Balancer には WAF を適用できません。
よくある質問
ALB、NLB、Gateway Load Balancer の違いは何ですか?
ALB は HTTP/HTTPS レイヤーで動作し、パス、ホスト名、ヘッダーでルーティングします。NLB は TCP/UDP レイヤーで動作し、非常に低いレイテンシーと静的 IP を持ちます。Gateway Load Balancer はサードパーティのファイアウォールなどのセキュリティアプライアンスにトラフィックを通します。
ロードバランサーは異常なインスタンスへの送信を止めますか?
はい。ヘルスチェックで各ターゲットを定期的に確認し、失敗したターゲットには新しいリクエストを送りません。Auto Scaling と組み合わせれば、異常なインスタンスは新しいものに置き換えられます。
Elastic Load Balancing の料金はどのように決まりますか?
各ロードバランサーの稼働時間に加え、接続数、リクエスト数、処理データ量を反映したキャパシティユニット(ALB は LCU、NLB は NLCU)で課金されます。使っていないロードバランサーにも時間料金がかかるので削除しましょう。
AWS 認定試験ではロードバランサーについて何が問われますか?
要件に合った ALB、NLB、GWLB の選択、HTTPS のための ACM 証明書の設定、クロスゾーン負荷分散、スティッキーセッション、静的 IP や HTTP 以外のプロトコルが必要な場合の NLB の利用などです。