Amazon EC2
AWS クラウド
Elastic Load Balancing の使用を開始する
高可用性

高可用性

Elastic Load Balancing は、1 つまたは複数のアベイラビリティーゾーンで、トラフィックを複数のターゲット (Amazon EC2 インスタンス、コンテナ、IP アドレスなど) に自動的に分散します。

ヘルスチェック

ヘルスチェック

Elastic Load Balancing は異常なターゲットを検出し、そのターゲットへのトラフィックの送信を停止し、残りの正常なターゲット全体に負荷を分散します。

セキュリティ機能

セキュリティ機能

Amazon Virtual Private Cloud (Amazon VPC) を使用して、ロードバランサーに関連付けられているセキュリティグループを作成および管理し、追加のネットワーキングおよびセキュリティオプションを提供します。内部 (インターネットに接しない) ロードバランサーを作成することもできます。

TLS Termination

TLS Termination

Elastic Load Balancing では、証明書管理と SSL 復号が統合されるため、ロードバランサーの SSL 設定を一元的に管理できるようになり、CPU を集中的に使用する作業をアプリケーションから柔軟にオフロードできるようになります。

レイヤー 4 またはレイヤー 7 の負荷分散

レイヤー 4 またはレイヤー 7 の負荷分散

レイヤー 7 固有の機能には HTTP/HTTPS アプリケーションを負荷分散し、TCP プロトコルのみに依存するアプリケーションには厳密なレイヤー 4 の負荷分散を用いることができます。

運用のモニタリング

運用のモニタリング

Elastic Load Balancing は、Amazon CloudWatch メトリクスとの統合とリクエスト追跡を提供し、リアルタイムでアプリケーションのパフォーマンスを監視します。

アプリケーションのニーズに応じて、最適なロードバランサーを選ぶことができます。柔軟なアプリケーション管理が必要な場合は、Application Load Balancer を使用することを推奨します。非常に高度なパフォーマンスと静的 IP がアプリケーションで必要な場合は、Network Load Balancer を使用することを推奨します。EC2-Classic ネットワーク内で構築された既存のアプリケーションがある場合は、Classic Load Balancer を使用する必要があります。

特徴

Application Load Balancer

Network Load Balancer

Classic Load Balancer

プロトコル

HTTP、HTTPS

TCP

TCP、SSL、HTTP、HTTPS

プラットフォーム

VPC

VPC

EC2-Classic、VPC

ヘルスチェック

CloudWatch メトリクス

ログ記録

ゾーンのフェイルオーバー

Connection Draining (登録解除の遅延)

同じインスタンスで複数のポートへの負荷分散

 

WebSockets

 

IP アドレスをターゲットに設定
 

ロードバランサーの削除の保護

 

パスベースのルーティング

 

 

ホストベースのルーティング

 

 

ネイティブ HTTP/2

 

 

設定可能なアイドル接続のタイムアウト
 

クロスゾーン負荷分散

 

SSL のオフロード

 

サーバーネームインディケーション (SNI)    

スティッキーセッション

 

バックエンドサーバー暗号化

 

静的 IP

 

 

Elastic IP アドレス

 

 

ソース IP アドレスを保持する

 

 

  • Application Load Balancer

    Application Load Balancer はリクエストレベル (レイヤー 7) で動作し、リクエストの内容に基づいてターゲット (EC2 インスタンス、コンテナ、IP アドレス) にトラフィックをルーティングします。HTTP および HTTPS トラフィックの高度な負荷分散に最適な Application Load Balancer は、コンテナベースのアプリケーションやマイクロサービスなど、最新のアプリケーションアーキテクチャの配信をターゲットとした高度なリクエストルーティングを提供します。Application Load Balancer は、最新の SSL/TLS 暗号とプロトコルを常に使用することで、アプリケーションのセキュリティを簡素化し向上させます。

    レイヤー 7 の負荷分散
    HTTP/HTTPS アプリケーションを負荷分散でき、X-Forwarded-For ヘッダーなどのレイヤー 7 固有の機能を使用できます。

    HTTPS サポート
    Application Load Balancer では、クライアントとロードバランサー間の HTTPS 終了をサポートしています。また、Application Load Balancer では、定義済みのセキュリティポリシーの AWS Identity and Access Management (IAM) および AWS Certificate Manager 経由で SSL 証明書を管理できます。

    サーバーネームインディケーション (SNI)
    サーバーネームインディケーション (SNI) は、クライアントが TSL ハンドシェイク開始時に接続先のホスト名を提示する、TLS プロトコルの拡張機能の 1 つです。ロードバランサーは、同じセキュアリスナーを通じて複数の証明書を提示できるため、単一のセキュアリスナーを使用して複数のセキュアなウェブサイトをサポートすることができます。Application Load Balancer は、SNI を使用したスマート証明書の選択アルゴリズムもサポートしています。クライアントによって示されたホスト名が複数の証明書と一致する場合、ロードバランサーは、クライアントの特徴を含む複数の要因に基づいて、使用する最適な証明書を決定します。

    IP アドレスをターゲットに設定
    アプリケーションのバックエンドの IP アドレスをターゲットとして使用し、AWS またはオンプレミスにホスティングされた任意のアプリケーションの負荷を分散できます。これにより、インスタンス内の任意の IP アドレスまたはインターフェイスにホスティングされたアプリケーションのバックエンドに対する負荷分散が可能です。同じインスタンスにホスティングされた各アプリケーションにはセキュリティグループを関連付けることが可能で、同じポートを使用できます。また、IP アドレスをターゲットとして使用して、オンプレミスロケーション (Direct Connect または VPN 接続を使用)、ピアリング接続された VPC、EC2-Classic (ClassicLink を使用) にホスティングされたアプリケーションの負荷を分散できます。AWS およびオンプレミスのリソースにかけて負荷を分散できるため、クラウドへの移行、バースト、フェイルオーバーに役立ちます。

    高可用性
    Application Load Balancer では、2 つ以上のアベイラビリティーゾーンを指定する必要があります。複数のアベイラビリティーゾーンのターゲット間で、受信トラフィックを分散できます。Application Load Balancer は、受信アプリケーショントラフィックに応じて自動的にリクエスト処理能力をスケールします。

    セキュリティ機能
    Amazon Virtual Private Cloud (Amazon VPC) を使用する際は、Elastic Load Balancing に関連付けられているセキュリティグループを作成および管理して、追加のネットワーキングおよびセキュリティオプションを提供できます。Application Load Balancer をインターネット向けに設定できます。または、内部 (インターネットに接続しない) ロードバランサーとして機能するように、パブリック IP アドレスを使用せずにロードバランサーを作成することもできます。

    コンテンツベースのルーティング
    アプリケーションが個別のサービスで構成されている場合、Application Load Balancer ではリクエストのコンテンツに基づいて、リクエストをサービスにルーティングできます。

            ホストベースのルーティング
            HTTP ヘッダーの Host フィールドに基づきクライアントのリクエストをルーティングできます。これにより、同じロードバランサーから複数のドメインにルーティングできます。

            パスベースのルーティング
            HTTP ヘッダーの URL パスに基づきクライアントのリクエストをルーティングできます。

    コンテナ化されたアプリケーションのサポート
    Application Load Balancer は、複数のポートを単一の Amazon EC2 インスタンスで負荷分散することで、コンテナのサポートを強化します。Amazon EC2 Container Service (ECS) との密接な統合により、フルマネージドコンテナサービスを提供します。ECS を使用すると、ECS タスク定義でダイナミックポートを指定でき、EC2 インスタンスでスケジュールされているときに未使用のポートをコンテナに付与します。ECS スケジューラーは、このポートを使用してロードバランサーにタスクを自動的に追加します。

    HTTP/2 サポート
    HTTP/2 は HyperText Transfer Protocol (HTTP) の新しいバージョンで、単一の多重化された接続を使用して複数のリクエストを同じ接続で送信できるようにします。また、バイナリ形式で送信する前にヘッダーデータを圧縮し、クライアントへの TLS 接続をサポートします。

    WebSocket サポート
    WebSocket を使用すると、エンドユーザーがサーバーにアップデートをリクエスト (またはポーリング) する必要なく、サーバーはエンドユーザーとリアルタイムでメッセージを交換できます。WebSocket のプロトコルは、クライアントとサーバーの間で長時間実行される TCP 接続を経由して双方向通信チャンネルを提供します。

    ネイティブな IPv6 サポート
    Application Load Balancer では VPC 内でネイティブなインターネットプロトコルバージョン 6 (IPv6) がサポートされます。これにより、クライアントは IPv4 または IPv6 経由で Application Load Balancer に接続できます。

    スティッキーセッション
    スティッキーセッションは、同じクライアントから同じターゲットにリクエストをルーティングするメカニズムです。Application Load Balancer では、ロードバランサーが生成する Cookie を使用して、スティッキーセッションをサポートします。スティッキーセッションを有効にすると、同じターゲットはリクエストを受信し、Cookie を使用してセッションのコンテキストを復元できます。維持設定はターゲットグループレベルで定義されます。

    ヘルスチェック
    Application Load Balancer は正常なターゲットにのみトラフィックをルーティングします。Application Load Balancer を使用すると、アプリケーションの状態の詳細情報を次の 2 つの方法で取得できます。(1) ヘルスチェックの向上により、200~499 の詳細なエラーコードを設定できます。ヘルスチェックを使用すると、ロードバランサーの背後にある各サービスの状態をモニタリングできます。(2) 新しいメトリクスは、EC2 インスタンスで実行される各サービスのトラフィックに関する情報を提供します。

    運用のモニタリング
    Amazon CloudWatch は、リクエスト数、エラー数、エラータイプ、およびリクエストレイテンシーなどの Application Load Balancer のメトリクスをレポートします。

    ログ記録
    アクセスログ機能を使用して、ロードバランサーに送信されたすべてのリクエストを記録し、ログを Amazon S3 に保存して分析に利用できます。ログは圧縮され、gzip ファイル拡張子が付けられます。圧縮されたログは、ストレージ領域および転送帯域幅の両方を節約し、アプリケーションのエラー診断やウェブトラフィックの分析に活用できます。

    AWS CloudTrail を使用してアカウントの Application Load Balancer API コールを記録し、ログファイルを配信できます。API コール履歴を使用して、セキュリティ分析、リソース変更の追跡、コンプライアンスの監査を実行できます。

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

    リクエストトレーシング
    Application Load Balancer は、到着するすべてのリクエストに新しいカスタム識別子 “X-Amzn-Trace-Id” HTTP ヘッダーを挿入します。リクエストトレーシングでは、リクエストが、ウェブサイトや分散アプリケーションを構成しているさまざまなサービス間を移動するときに、一意の ID でリクエストを追跡することができます。一意のトレース識別子を使用すると、個々のリクエスト単位で、アプリケーションスタックでのパフォーマンスやタイミングの問題を明らかにすることができます。

    Web アプリケーションファイアウォール
    AWS WAF を使用して、Application Load Balancer 上のウェブアプリケーションを保護できるようになりました。AWS WAF は、アプリケーションの可用性低下、セキュリティの侵害、リソースの過剰消費などの一般的なウェブの脆弱性から、ウェブアプリケーションを保護する Web アプリケーションファイアウォールです。

  • Network Load Balancer

    Network Load Balancer は接続レベル (レイヤー 4) で動作し、IP プロトコルデータに基づいてターゲットへの接続のルーティング (Amazon EC2 インスタンス、コンテナ、IP アドレス) を行います。TCP トラフィックの負荷分散に最適な Network Load Balancer は、1 秒あたり数百万のリクエストを処理しながら超低レイテンシーを維持できます。Network Load Balancer は、突発的で不安定なトラフィックパターンを処理しながら、アベイラビリティーゾーンごとに単一の静的 IP アドレスを使用するように最適化されています。Auto Scaling、Amazon EC2 Container Service (ECS)、および Amazon CloudFormation などの一般的な他の AWS サービスと統合されています。

    接続ベースの負荷分散
    TCP トラフィックを負荷分散して、ターゲット (Amazon EC2 インスタンス、マイクロサービス、コンテナ、および IP アドレス) への接続をルーティングします。

    高可用性
    Network Load Balancer は高可用性が確保されます。クライアントからの受信トラフィックを受け入れ、このトラフィックを同じアベイラビリティーゾーン内のターゲットに分散します。また、ロードバランサーは登録されているターゲットの状態を監視して、トラフィックが正常なターゲットにのみルーティングされるよう保証します。異常なターゲットが検出された場合、ロードバランサーはそのターゲットへのトラフィックのルーティングを停止し、残りの正常なターゲットにトラフィックをルーティングし直します。単一のアベイラビリティーゾーンにあるターゲットすべてに不具合があり、別のアベイラビリティーゾーンでターゲットを設定している場合、Network Load Balancer は、自動的にフェイルオーバーを実行してその別のアベイラビリティーゾーンで正常なターゲットにトラフィックをルーティングします。

    高いスループット
    Network Load Balancer は、トラフィックの増大に合わせて処理するように設計されており、1 秒あたり何百万ものリクエストを負荷分散することができます。突発的で不安定なトラフィックパターンの処理も可能です。

    低レイテンシー
    Network Load Balancer は、レイテンシーの影響を受けやすいアプリケーションにきわめて低いレイテンシーを提供します。

    送信元 IP アドレスの保持
    Network Load Balancer はクライアント側の送信元 IP を保持するため、バックエンドでクライアントの IP アドレスを確認できます。その後処理を続行するアプリケーションがこれを使用できます。

    静的 IP のサポート
    Network Load Balancer は、ロードバランサーのフロントエンド IP としてアプリケーションで使用できる静的 IP (サブネット) をアベイラビリティーゾーンごとに自動的に提供ます。

    Elastic IP のサポート
    Network Load Balancer は、アベイラビリティーゾーン (サブネット) ごとに Elastic IP を割り当てることもでき、それによって固定された独自の IP が提供されます。

    ヘルスチェック
    Network Load Balancer は、ネットワークとアプリケーション両方のターゲットのヘルスチェックをサポートしています。ネットワークレベルの状態は、ターゲットから通常トラフィックへのレスポンス全体に基づきます。ターゲットが新しい接続に応答できない、または応答が遅すぎる場合は、ロードバランサーがターゲットを使用不可としてマークします。アプリケーションレベルのヘルスチェックはさらに詳しく行うこともできます。特定のターゲットの固有 URL を定期的に調査することで、実際のアプリケーションの状態を統合できます。クイック診断と強力なデバッグについては、ヘルスチェックの完全可視化と失敗の可能性の理由も、ターゲットヘルスチェックに付随する Network Load Balancer API と Amazon CloudWatch メトリクスの"理由コード"を通じて使用できます。

    DNS フェイルオーバー
    Network Load Balancer に登録された正常なターゲットがない場合、または特定のゾーンの Network Load Balancer ノードが異常な場合は、Amazon Route 53 は他のアベイラビリティーゾーン内のロードバランサーノードにトラフィックを送信します。

    Amazon Route 53 との統合
    Network Load Balancer が応答しない場合、Route 53 との統合により、使用できないロードバランサーの IP アドレスがサービスから削除され、トラフィックが別のリージョンの Network Load Balancer に送信されます。

    AWS サービスとの統合
    Network Load Balancer は Auto Scaling、Amazon EC2 Container Service (ECS)、AWS CloudFormation、AWS CodeDeploy、AWS Config などの他の AWS サービスと統合されています。

    存続時間の長い TCP 接続
    Network Load Balancer では、WebSocket タイプのアプリケーションに適した存続時間の長い TCP 接続をサポートしています。

    API の一元サポート
    Network Load Balancer は Application Load Balancer と同じ API を使用します。このため、ターゲットグループとヘルスチェックを利用したり、同じ Amazon EC2 インスタンスの複数のポート間で負荷分散したりできるので、コンテナ化されたアプリケーションのサポートが可能になります。

    堅牢なモニタリングと監査
    Amazon CloudWatch は Network Load Balancer のメトリクスをレポートします。CloudWatch では、アクティブなフローの数、正常なホストの数、新しいフローの数、処理されたバイト数などのメトリクスを確認できます。Network Load Balancer は AWS CloudTrail とも統合されています。CloudTrail は Network Load Balancer への API コールを追跡します。

    ログ記録の強化
    フローログ機能を使用して、ロードバランサーに送信されたすべてのリクエストを記録します。フローログは、VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャします。フローログのデータは、Amazon CloudWatch Logs を使用して保存されます。

    ゾーンの分離
    Network Load Balancer は、単一のゾーンのアプリケーションアーキテクチャ向けに設計されています。アベイラビリティーゾーン内で障害が発生した場合は、自動的に他の正常なアベイラビリティーゾーンにフェイルオーバーします。高可用性を実現するためにロードバランサーと複数のアベイラビリティーゾーンのターゲットを設定することをお勧めしますが、1 つのアベイラビリティーゾーンで Network Load Balancer を有効にして、ゾーン分離を必要とするアーキテクチャをサポートすることも可能です。

    IP アドレスをターゲットにした負荷分散
    アプリケーションのバックエンドの IP アドレスをターゲットとして使用し、AWS またはオンプレミスにホスティングされた任意のアプリケーションの負荷を分散できます。これにより、インスタンス内の任意の IP アドレスまたはインターフェイスにホスティングされたアプリケーションのバックエンドに対する負荷分散が可能です。同じインスタンスにホスティングされた各アプリケーションにはセキュリティグループを関連付けることが可能で、同じポートを使用できます。また、IP アドレスをターゲットとして使用して、オンプレミスロケーション (Direct Connect 接続を使用)、および EC2-Classic (ClassicLink を使用) にホスティングされたアプリケーションの負荷を分散することもできます。AWS およびオンプレミスのリソースにかけて負荷を分散できるため、クラウドへの移行、バースト、フェイルオーバーに役立ちます。

  • Classic Load Balancer

    Classic Load Balancer は、複数の Amazon EC2 インスタンスにおける基本的な負荷分散を提供し、リクエストレベルと接続レベルの両方で動作します。Classic Load Balancer は、EC2-Classic ネットワーク内で構築されたアプリケーションを対象としています。Virtual Private Cloud (VPC) を使用する場合は、レイヤー 7 には Application Load Balancer を、レイヤー 4 には Network Load Balancer をお勧めします。

    高可用性
    単一または複数のアベイラビリティーゾーンにおける Amazon EC2 インスタンス全体で、受信トラフィックを分散できます。Classic Load Balancer は、受信するアプリケーショントラフィックに応じて、リクエスト処理能力を自動的にスケールします。

    ヘルスチェック
    Classic Load Balancer では Amazon EC2 インスタンスの状態を検出できます。異常な EC2 インスタンスが検出されると、そうしたインスタンスに対するトラフィックの割り当ては行われず、残りの正常な Amazon EC2 インスタンス全体に負荷が分散されます。

    セキュリティ機能
    Amazon Virtual Private Cloud (Amazon VPC) を使用する際は、Classic Load Balancer に関連付けられているセキュリティグループを作成および管理して、追加のネットワーキングおよびセキュリティオプションを提供できます。また、内部 (インターネットに接続しない) ロードバランサーとして機能するように、パブリック IP アドレスを使用せずに Classic Load Balancer を作成することもできます。

    SSL のオフロード
    Classic Load Balancer は、SSL 終了をサポートします。それには、アプリケーションインスタンスの SSL 復号をオフロードで行ったり、SSL 証明書を集中管理したり、オプションのパブリックキー認証を使用してバックエンドインスタンスへ暗号化したりすることが含まれます。暗号化には柔軟なサポートがあるため、ロードバランサーがクライアントに提示する暗号やプロトコルをコントロールすることができます。

    スティッキーセッション
    Classic Load Balancer では、Cookie を使用して、特定の EC2 インスタンスにユーザーセッションを接続する機能がサポートされています。ユーザーがアプリケーションにアクセスし続けると、トラフィックは同じインスタンスにルーティングされます。

    IPv6 サポート
    Classic Load Balancer は、EC2-Classic のネットワーク用にインターネットプロトコルバージョン 4 および 6 (IPv4 および IPv6) の両方の使用をサポートしています。

    レイヤー 4 またはレイヤー 7 の負荷分散
    HTTP/HTTPS アプリケーションを負荷分散し、X-Forwarded やスティッキーセッションなどのレイヤー 7 固有の機能を使用できます。TCP プロトコルのみに依存するアプリケーションには、厳密なレイヤー 4 負荷分散を使用することもできます。

    運用のモニタリング
    リクエスト数やリクエストレイテンシーなどの Classic Load Balancer のメトリクスは、Amazon CloudWatch によってレポートされます。

    ログ記録
    アクセスログ機能を使用して、ロードバランサーに送信されたすべてのリクエストを記録し、ログを Amazon S3 に保存して分析に利用します。ログはアプリケーションのエラーを診断するときや、ウェブトラフィックを分析するときに役立ちます。AWS CloudTrail を使用してアカウントの Classic Load Balancer API コールを記録し、ログファイルを配信できます。API コール履歴を使用して、セキュリティ分析、リソース変更の追跡、コンプライアンスの監査を実行できます。