AWSクラウド・インフラ・開発基盤

【Udemy AWS 14 days】Day5の知識整理:Amazon RDS

AWS

ELBとは?

AWS ELB(Elastic Load Balancing は、Amazon Web Service (AWS) が提供するロードバランサーサービスです。ELBはその名のとおり「負荷分散(Load Balancing)」を担うサービスであり、受信したトラフィックを複数のアベイラビリティーゾーン (AZ) にある複数のターゲット (EC2インスタンス、コンテナ、IPアドレスなど) に自動的に分散させます。

ELBはAWSマネージドサービスとして提供されるため、運用負担を軽減しつつロードバランサー機能を利用できるメリットがあります。

ロードバランシングの役割とメリット

ELBの導入により、高い可用性(Availability)とスケーラビリティ(Scalability)が実現でき、システムの安定性が大きく向上します。

主な役割とメリットは以下の通りです。

観点内容具体的な効果
[1]負荷分散による安定性の確保ユーザーからのリクエストを複数のサーバー(EC2インスタンスなど)に自動振り分けし、一台へのアクセス集中を防ぐ。ネットワーク遅延やサーバークラッシュを防止し、処理性能と応答性を安定させる。
[2]可用性・耐障害性の向上複数サーバーにトラフィックを分散しつつ、ヘルスチェックにより異常なターゲットへのルーティングを自動停止する。一部サーバー障害時も正常なサーバーでサービスを継続でき、高可用性を実現できる。
[3]自動的なスケーラビリティ着信トラフィックの増減に応じて、ELBの処理能力が自動的にスケールし、急なアクセス増にも対応する。突発的な大量アクセス時でも手動対応なしで負荷分散でき、スケール運用の手間を削減できる。
[4]SSL証明書管理の簡略化AWS Certificate Managerで取得したSSL証明書をELB側にインストールして一元管理できる。各EC2へ個別配布・更新する必要がなくなり、証明書管理コストや運用ミスのリスクを減らせる。

ELBの種類と特徴

現在、AWS ELBは大きく分けてApplication Load Balancer (ALB)Network Load Balancer (NLB)Gateway Load Balancer (GWLB)Classic Load Balancer (CLB) の4種類のロードバランサーを提供しています。

Application Load Balancer(ALB)

ALBはOSI参照モデルの第7層(アプリケーション層)で動作し、HTTPおよびHTTPSトラフィックのルーティングが主な役割です。ロードバランサーを導入する際は、まずこのALBの利用が標準的に推奨されています。

観点内容具体的なポイント
特徴コンテンツベースのルーティングが可能リクエストURLのパスパターン、HTTPヘッダ、送信元IPアドレスなどの条件に基づきルーティングできる
柔軟性コンテナ基盤やLambdaとの相性が良いECSやEKSのターゲットとして利用可能、Lambda関数へのルーティングもサポート
セキュリティAWS WAF統合やユーザー認証対応AWS WAFと連携可能、リスナーでAmazon CognitoなどIDプロバイダーによる認証設定が可能
構成複数アベイラビリティゾーンの利用が必須ALB導入には最低2つ以上のアベイラビリティゾーンを有効にする必要あり

Network Load Balancer(NLB)

NLBはOSI参照モデルの第4層(トランスポート層)で動作し、TCPやUDP、TLSなどのトラフィックを扱います。

観点内容具体的なポイント
特徴超低遅延・高スループットで大量リクエスト処理可能毎秒数百万リクエストの処理を耐え、高性能なTCP/UDP負荷分散を実現
IPアドレス固定IPアドレス(Elastic IP)対応ALBやCLBと異なり、NLBはIPアドレスを固定できるためDNSの安定性向上に寄与
レイテンシ同一アベイラビリティゾーン内での低レイテンシ負荷分散TCP負荷分散をAZ内で行うためレスポンス遅延が少ない
クライアント情報クライアントのSource IPおよびPortを保持ターゲット側はクライアントと直接通信しているかのように情報を受け取れる

Classic Load Balancer(CLB)

CLBは、AWSが提供していた初期型のロードバランサー(旧世代)であり、L4(トランスポート層)とL7(アプリケーション層)の双方に対応していました。

現在は新規での利用は非推奨であり、ALBやNLBへの移行が推奨されています。レガシーシステム(EC2-Classicなど)との互換性のために一部で利用が残っています。

それぞれのユースケースと選び方

ロードバランサーは用途や要件によって使い分けが必要です。

選び方推奨されるELB
一般的なWebアプリ、API、コンテナALB (L7機能、コンテンツルーティング、きめ細やかな制御が必要な場合)
超高パフォーマンス、低レイテンシが必要NLB (大量アクセス、リアルタイム通信(ゲーム、金融)が必要な場合)
固定IPアドレスが必要NLB (IPアドレスを固定したい場合)
セキュリティアプライアンス連携GWLB (仮想ファイアウォール、IDS/IPSなどサードパーティ製品を透過的に連携させたい場合)
レガシーシステム維持CLB (新規利用は非推奨、移行が困難な特殊ケースのみ)

トラフィックの負荷分散

ELBは、クライアントからのリクエストを受け付けるためにリスナーを使用します。リスナーは、設定したプロトコルとポート(例:Webトラフィック用のポート80や443)を使用して接続リクエストをチェックするプロセスです。

ALBの負荷分散

    ◦ ALBは、リスナールールを優先度順に評価し、ルールアクションに紐づけられたターゲットグループからターゲットを選択します。

    ◦ デフォルトのルーティングアルゴリズムはラウンドロビンです。

    ◦ URLパスやホスト名、HTTPヘッダーなど、コンテンツベースでトラフィックをルーティングできます。

NLBの負荷分散

    ◦ NLBは、プロトコル、送信元/宛先IPアドレス、送信元/宛先ポート、TCPシーケンス番号に基づいたフローハッシュアルゴリズムを使用してターゲットを選択します。

    ◦ 接続中、各TCP接続を単一のターゲットにルーティングします。

セキュリティ設定

ALBのセキュリティ設定

セキュリティグループ (SG)

ALB(およびCLB)では、セキュリティグループを作成し、ロードバランサーへのアクセスを定義することで、特定のクライアントからのトラフィックのみを受け入れるように制限できます。ベストプラクティスとして、ポートとIPアドレスの範囲は可能な限り制限することが推奨されています。

AWS WAF

ALBはAWS WAF(Web Application Firewall)と連携できます。これにより、悪質なリクエスト(Webアプリケーションへの攻撃)を遮断し、アプリケーションを保護できます。

NLBのセキュリティ設定

NLBのセキュリティグループ

NLB自体にはセキュリティグループを設定できません。そのため、バックエンドのインスタンスに関連付けられたセキュリティグループでアクセスを制御する必要があります。

まお
まお

NLBでは、バックエンドインスタンスのセキュリティグループ設定を厳格に管理する必要があります。

ELBの設定手順

ロードバランサーを設定する際は、事前にVPCとサブネットを指定する必要があります。ELBの設定手順は、Udemy講座「手を動かしながら2週間で学ぶ AWS 基本から応用まで」にて、ハンズオンの中でわかりやすく解説されており、受講をおすすめします。

Udemyのリンクはこちら:https://www.udemy.com/course/aws-14days

Auto Scalingとの連携

ELBはAmazon EC2 Auto Scaling (ASG) と組み合わせることで、トラフィックの増減に柔軟に対応し、安定したサービス運用に貢献します。

自動登録/解除: ELBでAuto Scalingを有効にすると、ASGによって起動された新しいインスタンスは自動的にロードバランサーに登録され、終了されたインスタンスは自動的に登録解除されます。

スケーリング: 需要が予想しにくい場合や、高負荷時に自動でスケーリングさせてサービスを安定稼働させたい場合に、Auto Scalingとの連携は最も効果的であり、自動水平スケーリングが可能となります。

ELBのコスト管理

ELBはEC2インスタンスのように「停止」できるものではなく、常に稼働している限り課金が発生します。EC2インスタンスを停止してもELBが稼働していれば課金対象となるため、コスト削減のためには不要なELBを削除することが重要です。

まお
まお

ELBは、削除しない限り課金が発生し続けます。不要になったELBは必ず削除するようにしましょう。

まとめ

AWS ELBは、自動的な負荷分散、自動スケーラビリティ、容易なセキュリティ連携といった特徴を持つ、AWSのインフラサービスの中核です。

現在提供されている4つのロードバランサー(ALB、NLB、GWLB、CLB)は、それぞれ異なるOSI層で機能し、Webアプリ、高パフォーマンスな通信、セキュリティ連携など、多様なユースケースに対応します。特にALBはWebアプリケーションの標準的な選択肢であり、NLBは極めて高いパフォーマンスを要求されるシステムに適しています。

コメント

タイトルとURLをコピーしました