こんにちは。よっしーです(^^)
今日は、ロードバランサについて解説しています。
背景
ロードバランサについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。
ロードバランサとは
AWSにおけるロードバランサは、着信トラフィックを複数のリソース(EC2インスタンスなど)に自動的に分散させるサービスです。主な役割は以下の通りです。
1. トラフィックの分散
- 着信リクエストを登録された複数のリソースに分散させます
- リソースへの負荷を分散し、可用性とスケーラビリティを高めます
2. ヘルスチェック
- 登録リソースの正常性を定期的に確認します
- 異常を検知した場合、その対象をロードバランシングから外します
3. セッション維持
- 同じクライアントからのリクエストを同じリソースに転送し、セッション維持が可能
4. セキュリティ
- リスナーを使ってSSL/TLSでの通信が可能
- DoS攻撃からのアプリケーション保護にも役立ちます
AWSでは以下の3種類のロードバランサが提供されています。
1. Classic Load Balancer (CLB) – 従来のLB
– OSIモデルの第4層(TCP/UDP)でロードバランシングを行います
2. Application Load Balancer (ALB) – L7 LB
– OSIモデルの第7層(HTTPおよびHTTPS)でロードバランシングを行います
– コンテンツベースのルーティングなど、より高度な機能を備えています
3. Network Load Balancer (NLB) – L4 LB
– OSIモデル第4層(TCP/UDP)でロードバランシングを行います
– CLBよりも高パフォーマンスで、従来のTCPロードバランシングに適しています
これらを使い分けることで、ユースケースに最適なロードバランシングが可能になります。特にALB/NLBは高度な機能を備えており、マイクロサービスアーキテクチャなどの最新のシステムによく利用されています。
ロードバランサを利用することで、スケーラビリティとフォールトトレランスを確保し、耐障害性とセキュリティの高い可用性の高いアーキテクチャを実現できます。
具体例
AWSロードバランサの具体例を挙げます。
1. クラシックロードバランサ(CLB)の例
- Webサーバー(Apache/Nginx)の冗長化
- CLBでEC2インスタンスにHTTPトラフィックを分散
- ヘルスチェックでインスタンスの死活監視
- 自動スケーリンググループと連携してスケールアウト
2. アプリケーションロードバランサ(ALB)の例
- マイクロサービスのロードバランシング
- ALBでコンテナ(ECS/EKS)へリクエストをルーティング
- パス(/api/v1)ベースのルーティング
- ホストヘッダベースのルーティング
- スティッキーセッション維持
- WAF(Web Application Firewall)と連携し、Layer7でセキュリティ強化
3. ネットワークロードバランサ(NLB)の例
- TCP/UDPベースのロードバランシング
- UDP/TCPゲームサーバーのロードバランシング
- VoIPセッションのロードバランシング
- 超低レイテンシーが必要なTCPベースのロードバランシング
4. ゲートウェイロードバランサの例
- ALBとNLBを組み合わせた、マルチロードバランサデプロイ
- 例えばHTTPSリバースプロキシとTCP/UDPゲームサーバーの組み合わせ
- ALB: HTTPSリバースプロキシ
- NLB: UDPゲームサーバー
- ゲートウェイロードバランサで複数のロードバランサをフェデレート
このように、AWSロードバランサは、L4〜L7レイヤーのさまざまなロードバランシングニーズに対応し、高可用で拡張性の高いシステムを実現します。ALB/NLBはマイクロサービスやコンテナ化されたアプリケーションによく使われています。
おわりに
今日は、 ロードバランサについて解説しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント