テクノロジー クラウドコンピューティング 非公開: AWS のエラスティック ロード バランシング

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

Elastic Load Balancing は、AWS のアプリケーションの中心です。この投稿では、ELB、その種類、機能について詳しく説明します。

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

負荷分散
負荷分散

負荷分散サービスを使用すると、ヘルス チェックを構成してコンピューティング リソースの健全性を監視できます。また、暗号化と復号化の作業をロード バランサーにオフロードできるため、コンピューティング リソースは主な作業に集中できます。

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

Elastic Load Balancing (ELB): 概要

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

出典: AWS
柔軟な負荷分散
柔軟な負荷分散

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

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

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 のコンポーネント

リスナー

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

Elastic Load Balancing でサポートされているプロトコルは次のとおりです。

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

ロードバランサー

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

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

ターゲットグループ

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

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

ロードバランサの種類

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

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

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

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

Application Load Balancer は、問題のあるアプリケーションがレイヤー 7 に到達した場合にのみ、クラウド リソース内の正常なターゲットにトラフィックを送信します。WebSocket は、基盤となるサーバーとの接続を強化するために Application Load Balancer によってサポートされるもう 1 つのプロトコルです。

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

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

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

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

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

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

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

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

負荷分散
負荷分散

Classic Load Balancer の種類:

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

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

ネットワーク ロード バランサーは、OSI モデルの 4 番目の層で動作します。 1 秒あたり数百万のリクエストを処理できます。

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

アプリケーションの耐障害性を高めるために、AWS の Network Load Balancer の有料サービスであるマルチ アベイラビリティ ゾーンを有効にすることができます。 1 つのアベイラビリティーゾーンがダウンしても、アプリケーションの動作は停止しません。

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

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

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

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

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

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

  • サードパーティの仮想アプライアンスの迅速な導入。
  • コストを管理しながら仮想アプライアンスを拡張します。
  • 仮想アプライアンスの可用性を向上させる

最後の言葉

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

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

「 AWS のエラスティック ロード バランシング」についてわかりやすく解説!絶対に観るべきベスト2動画

Elastic Load Balancing【AWS Black Belt】
42-AWS Cloud Practitioner (Elastic Load Balancing (ELB) overview) by Saleh Saad | Arabic

Elastic Load Balancing は、AWS のアプリケーションの中心です。この投稿では、ELB、その種類、機能について詳しく説明します。

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

負荷分散
負荷分散

負荷分散サービスを使用すると、ヘルス チェックを構成してコンピューティング リソースの健全性を監視できます。また、暗号化と復号化の作業をロード バランサーにオフロードできるため、コンピューティング リソースは主な作業に集中できます。

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

Elastic Load Balancing (ELB): 概要

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

出典: AWS
柔軟な負荷分散
柔軟な負荷分散

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

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

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 のコンポーネント

リスナー

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

Elastic Load Balancing でサポートされているプロトコルは次のとおりです。

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

ロードバランサー

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

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

ターゲットグループ

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

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

ロードバランサの種類

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

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

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

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

Application Load Balancer は、問題のあるアプリケーションがレイヤー 7 に到達した場合にのみ、クラウド リソース内の正常なターゲットにトラフィックを送信します。WebSocket は、基盤となるサーバーとの接続を強化するために Application Load Balancer によってサポートされるもう 1 つのプロトコルです。

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

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

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

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

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

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

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

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

負荷分散
負荷分散

Classic Load Balancer の種類:

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

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

ネットワーク ロード バランサーは、OSI モデルの 4 番目の層で動作します。 1 秒あたり数百万のリクエストを処理できます。

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

アプリケーションの耐障害性を高めるために、AWS の Network Load Balancer の有料サービスであるマルチ アベイラビリティ ゾーンを有効にすることができます。 1 つのアベイラビリティーゾーンがダウンしても、アプリケーションの動作は停止しません。

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

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

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

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

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

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

  • サードパーティの仮想アプライアンスの迅速な導入。
  • コストを管理しながら仮想アプライアンスを拡張します。
  • 仮想アプライアンスの可用性を向上させる

最後の言葉

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

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

「 AWS のエラスティック ロード バランシング」についてわかりやすく解説!絶対に観るべきベスト2動画

Elastic Load Balancing【AWS Black Belt】
42-AWS Cloud Practitioner (Elastic Load Balancing (ELB) overview) by Saleh Saad | Arabic