AWS でのエラスティック ロード バランシング

公開: 2022-08-10

Elastic Load Balancing は、AWS のアプリケーションの心臓部です。 この投稿で、ELB、そのタイプ、および機能のすべてを学びましょう。

現在、ほとんどの組織は、アプリケーションのスケーラビリティ、可用性、およびフォールト トレランスを管理および強化する必要があります。 AWS は、これに対する優れたソリューション、つまり Elastic Load Balancing サービスを提供しています。 このサービスは、仮想サーバーなどの多くのコンピューティング リソースにワークロードを分散できるロード バランサーで構成されています。

負荷分散

ロード バランシング サービスを使用すると、ヘルス チェックを構成して、コンピューティング リソースの正常性を監視できます。 また、暗号化と復号化の作業をロード バランサーにオフロードして、コンピューティング リソースが主な作業に集中できるようにすることもできます。

Elastic Load Balancing (ELB): 概要

ELB は、受信トラフィックを複数の EC2 インスタンスに自動的に分散するサービスです。 これにより、アプリケーション トラフィックを分散するための負荷分散能力が提供されるため、アプリケーションのフォールト トレランス レベルが向上します。

エラスティック ロード バランシング
出典:AWS

さらに、Elastic Load Balancing は異常な EC2 インスタンスを検出できます。EC2 インスタンスが異常であることが判明するとすぐに、ELB は正常に戻るまでトラフィックの送信を停止します。 お客様は、単一または複数のアベイラビリティ ゾーン内で簡単に Elastic Load Balancing を有効にして、より一貫したアプリケーション パフォーマンスを実現できます。

Elastic Load Balancing 機能

安全

Amazon Virtual Private Cloud (VPC) で Elastic Load Balancing に関連付けられたセキュリティ グループを管理および作成して、Application Load Balancer および Classic Load Balancer に追加のネットワークおよびセキュリティ オプションを提供できます。

高可用性

Elastic Load Balancer は高可用性です。 アプリケーションへの着信トラフィックを、単一のアベイラビリティ ゾーンまたは複数のアベイラビリティ ゾーン内の EC2 インスタンスに分散できます。

高スループット

Elastic Load Balancer は、トラフィックの増大に合わせてトラフィックを処理するように設計されており、1 秒あたり数百万のリクエストをロードしてバランスを取ることができます。 また、トラフィックの急増にも対応できます。

ヘルスチェック

Elastic Load Balancing を使用すると、EC2 インスタンスの正常性をチェックして、異常なインスタンスにトラフィックを送信するリスクを回避できます。

運用監視とロギング

Amazon CloudWatch は、エラー数、エラーの種類、リクエストのレイテンシー、リクエスト数など、アプリケーションおよびクラシック ロード バランサーのメトリクスをレポートします。

削除保護

Elastic Load Balancer で削除保護を有効にして、Elastic Load Balancer が誤って削除されるのを防ぐことができます。

YouTube ビデオ

Elastic Load Balancer のコンポーネント

リスナー

ロード バランサー用に 1 つ以上のリスナーを構成する必要があります。 接続要求をチェックするプロセスです。 フロントエンド接続 (クライアントからロード バランサー) 用のプロトコルとポート、およびバックエンド接続 (ロード バランサーからバックエンド インスタンス) 用のプロトコルを使用してセットアップされます。

エラスティック ロード バランシングでサポートされているプロトコルは次のとおりです。

  • HTTPS (セキュア HTTP)
  • TCP
  • SSL (セキュア TCP)

ロードバランサー

ロード バランサーは、サーバーの前で「トラフィック ポリスマン」として機能し、速度と容量の使用率を最大化し、パフォーマンスの低下につながるサーバーの過負荷を防ぐ方法で、それらを処理するように装備されたすべてのサーバーにクライアント リクエストを分散します。

ロード バランサーは、1 つのサーバーがオフラインになった場合にトラフィックをアクティブなサーバーにルーティングします。 ロード バランサーは、新しいサーバーがサーバー グループに追加されると、そのサーバーへの要求を開始します。

ターゲットグループ

リクエストは、各ターゲット グループを使用して、1 つ以上の登録済みターゲットにルーティングされます。 各リスナー ルールを作成するときに、ターゲット グループと条件を定義します。 ルールの条件が満たされると、トラフィックは適切なターゲット グループにルーティングされます。

さまざまな種類のリクエストに対して、個別のターゲット グループを作成できます。 たとえば、アプリケーションのマイクロサービスへのリクエストと一般的なリクエストに対して、異なるターゲット グループを作成します。

ロードバランサーの種類

アプリケーション ロード バランサ

Application Load Balancer を使用すると、開発者は着信エンドユーザー トラフィックをセットアップし、AWS パブリック クラウドで実行されているアプリに転送できます。

多数の Web アプリケーションが存在するクラウド環境では、ロード バランシングが重要です。 ロード バランサーは、ネットワーク トラフィックと情報の流れを複数のサーバーに分割することで、単一のサーバーが過負荷にならないようにします。 これにより、ユーザー エクスペリエンスが向上し、アプリケーションの応答性と可用性が向上し、分散型サービス拒否 (DDoS) 攻撃から防御できます。

YouTube ビデオ

Web アプリケーションへのアクセスは、近年大幅に増加しています。 ただし、予期しないトラフィックの増加により、オンライン サービスの速度が低下し、可用性が低下する可能性があります。 Application Load Balancer は、パブリック クラウドのネットワーク負荷を効率的に分散して、安定性と可用性を向上させます。

Application Load Balancer は、問題のあるアプリケーションがレイヤー 7 に到達した場合にのみ、クラウド リソース内の正常なターゲットにトラフィックを送信します。

コンテナーまたは AWS EC2 インスタンスで実行される Web サイトおよびモバイル アプリケーションは、アプリケーション ロード バランサーの使用から最も恩恵を受けます。 マイクロサービス アーキテクチャでは、Application Load Balancer を、特定のサービスを実装する EC2 インスタンスまたは Docker コンテナーの前で内部ロード バランサーとして利用できます。 さらに、RESTful API アプリケーションの前で使用できます。

以下を含む多数の AWS サービスがアプリケーション ロード バランサーと互換性があります。

  • AWS オートスケーリング
  • Amazon エラスティック コンテナ サービス
  • AWS クラウドフォーメーション
  • AWS CodeDeploy
  • AWS 証明書マネージャー

クラシック ロード バランサー

着信アプリケーションからのトラフィックは、従来のロード バランサーを使用して、多数の EC2 インスタンスに分割され、さまざまなアベイラビリティー ゾーンに分割されます。 クラシック ロード バランサーは、クライアントの唯一の連絡先として機能します。 これにより、アプリケーションがよりアクセスしやすくなります。 アプリケーションへのリクエストの一般的な流れを損なうことなく、ニーズの変化に応じてクラシック ロード バランサーからインスタンスを追加/削除できます。

リスナーは、設定したプロトコルとポートを使用して、クライアントの接続要求を監視します。 次にリスナーは、構成されたプロトコルとポートを使用して、1 つ以上の登録済みインスタンスに要求を送信します。 1 つ以上のリスナーを追加して、ロード バランサーを変更します。

ロード バランサーがリクエストを正常なインスタンスにのみルーティングするようにするために、登録済みインスタンスの状態を監視するために使用されるヘルス チェックを構成できます。

デフォルトでは、クラシック ロード バランサーは、ロード バランサーに対して有効にしたアベイラビリティー ゾーン間でトラフィックを均等に分散します。 ロード バランサーでゾーン間負荷分散を有効にして、アクティブ化されたすべてのアベイラビリティー ゾーン内のすべての登録済みインスタンス間でトラフィックを分散します。

負荷分散

Classic Load Balancer のタイプ:

  • インターネットに接続するクラシック ロード バランサー: インターネットに接続するロード バランサーは、パブリックに解決可能な DNS ドメインのおかげで、クライアントからの要求をインターネット経由でロード バランサーに登録された EC2 インスタンスにルーティングできます。 ロード バランサーには、構築時にパブリック DNS 名が与えられ、クライアントはそれを使用して要求を行うことができます。 DNS サーバーは、ロード バランサーの DNS 名をロード バランサー ノードのパブリック IP アドレスに変換します。 プライベート IP アドレスは、各負荷分散ノードをバックエンド インスタンスに接続します。
  • 内部クラシック ロード バランサー:内部ロード バランサーのノードには、個人の IP アドレスしかありません。 内部ロード バランサーの DNS 名は、ノードの IP アドレスにパブリックに解決できます。 その結果、リクエストは、ロード バランサーの VPC にアクセスできるクライアントからの内部ロード バランサーによってのみルーティングできます。

ネットワーク ロード バランサー

ネットワーク ロード バランサーは、OSI モデルの第 4 層で機能します。 毎秒数百万のリクエストを処理できます。

ロード バランサーは、接続要求を受信した後、デフォルト ルールのターゲット グループからターゲットを選択します。 リスナー設定で指定されたポートで、選択したターゲットへの TCP 接続を確立しようとします。

YouTube ビデオ

アプリケーションの耐障害性を高めるために、ネットワーク ロード バランサー用の AWS の有料サービスである複数のアベイラビリティ ゾーンを有効にすることができます。 1 つのアベイラビリティーゾーンがダウンしても、アプリケーションは動作を停止しません。

TCP トラフィックの場合、ターゲットは、プロトコル、送信元ポート、送信元 IP アドレス、宛先ポート、宛先 IP アドレス、および TCP シーケンス番号に基づくフロー ハッシュ アルゴリズムを使用して選択されます。

クライアントの TCP 接続には異なるシーケンス番号と送信元ポートがあるため、接続は他のターゲットにルーティングされます。 一意の各 TCP 接続は、接続中に 1 つのターゲットにルーティングされます。

ゲートウェイ ロード バランサ

Gateway Load Balancer を使用して、サードパーティの仮想アプライアンスを簡単に展開、スケーリング、および管理できます。 多数の仮想アプライアンス間でトラフィックを分割し、需要に応じてそれらをスケールアップまたはスケールダウンするための単一のゲートウェイを提供します。 これにより、ネットワークの潜在的な障害点がなくなり、可用性が向上します。

YouTube ビデオ

独立系メーカーの仮想アプライアンスは、AWS Marketplace から直接検索、テスト、購入できます。 現在のベンダーとの連携を継続する場合でも、何か新しいことを試す場合でも、この統合されたエクスペリエンスにより展開プロセスが加速され、仮想アプライアンスからより迅速に利益を得ることができます。

ゲートウェイ ロード バランサの利点:

  • サードパーティの仮想アプライアンスの迅速な展開。
  • コストを管理しながら仮想アプライアンスをスケーリングします。
  • 仮想アプライアンスの可用性を向上

最後の言葉

Elastic Load Balancer は、AWS で作成された多くのインフラストラクチャの重要な部分です。 ELB から得られる機能により、インフラストラクチャの管理が容易になります。 Elastic Load Balancing は、アプリケーションと Web トラフィックのリクエストを複数のターゲットまたはインスタンスに分散させる実証済みの方法です。

Elastic Load Balancer を使用して、さまざまなワークロードを自動的にスケーリングできます。 AWS が提供するすべてのタイプのロード バランサーをカバーしており、アプリケーションの要求に応じてそれらを使用できます。