Elastic Load Balancing
Network Load Balancer

Network Load Balancer

ロードバランサーは、クライアントにとって単一の通信先として機能します。クライアントはロードバランサーにリクエストを送信し、ロードバランサーは 1 つ以上のアベイラビリティーゾーンにあるターゲット (EC2 インスタンスなど) にそれらのリクエストを送信します。

ロードバランサーを設定するには、ターゲットグループを作成し、ターゲットグループにターゲットを登録します。有効な各アベイラビリティーゾーンに少なくとも 1 つの登録済みターゲットがあるようにする場合、ロードバランサーが最も効果的です。さらに、リスナーを作成してクライアントからの接続リクエストがないかチェックし、リクエストをクライアントからターゲットグループ内のターゲットにルーティングします。

Network Load Balancerは VPC ピアリング、AWS マネージド VPN、およびサードパーティーの VPN ソリューションを経由した接続をサポートします。

ロードバランサーの状態

ロードバランサーの状態は次のいずれかです。

provisioning

ロードバランサーはセットアップ中です。

active

ロードバランサーは完全にセットアップされており、トラフィックをルーティングする準備ができています。

failed

ロードバランサークラウドをセットアップできませんでした。

ロードバランサーの属性

ロードバランサーの属性は以下のとおりです。

deletion_protection.enabled

削除保護が有効化されているかどうかを示します。デフォルト: false

load_balancing.cross_zone.enabled

クロスゾーン負荷分散が有効かどうかを示します。デフォルト: false

アベイラビリティーゾーン

ロードバランサーを作成するときに、ロードバランサーの 1 つまたは複数のアベイラビリティーゾーンを有効にします。ロードバランサーで複数のアベイラビリティーゾーンを有効にすると、アプリケーションの耐障害性が向上します。Network Load Balancer の作成後にそのアベイラビリティーゾーンを無効にすることはできませんが、追加のアベイラビリティーゾーンを有効にすることはできます。

アベイラビリティゾーンを有効にする場合、このアベイラビリティゾーンから 1 つのサブネットを指定します。Elastic Load Balancing はアベイラビリティーゾーンにロードバランサーノードを作成し、サブネットのネットワークインターフェイスを作成します (「ELB net」で始まり、ロードバランサーの名前を含む記述)。アベイラビリティーゾーンの各ロードバランサーノードは、このネットワークインターフェイスを使用して IPv4 アドレスを取得します。このネットワークインターフェイスは表示できますが、変更することはできません。

インターネット向けのロードバランサーを作成する場合は、必要に応じて 1 つの Elastic IP アドレスをサブネットごとに指定することができます。独自の Elastic IP アドレスのいずれも選択しない場合、Elastic Load Balancing はサブネットごとに 1 つの Elastic IP アドレスを提供します。これらの Elastic IP アドレスは、ロードバランサーの存続期間中は変更されない静的 IP アドレスをロードバランサーに提供します。ロードバランサーを作成した後で、これらの Elastic IP アドレスを変更することはできません。

内部ロードバランサーを作成する場合は、必要に応じて 1 つの プライベート IP アドレスをサブネットごとに指定することができます。サブネットから IP アドレスを指定しない場合は、Elastic Load Balancing によって選択されます。これらのプライベート IP アドレスは、ロードバランサーの存続期間中は変更されない静的 IP アドレスをロードバランサーに提供します。ロードバランサーを作成した後で、これらのプライベート IP アドレスを変更することはできません。

要件

  • インターネット向けロードバランサーの場合、指定するサブネットには最低 8 個の利用可能な IP アドレスが必要です。内部ロードバランサーの場合は、AWS がサブネットからプライベート IPv4 アドレスを選択する場合にのみ必要です。

  • 制約のあるアベイラビリティゾーンにあるサブネットを指定することはできません。エラーメッセージは、「'network' タイプを使用したロードバランサーは az_name でサポートされていません」です。制約されていない別のアベイラビリティゾーンにあるサブネットを指定し、クロスゾーン負荷分散を使用して、制約されているアベイラビリティゾーンのターゲットにトラフィックを分散することはできます。

アベイラビリティーゾーンを有効にしたら、ロードバランサーはこれらのアベイラビリティーゾーン内の登録済みターゲットにリクエストをルーティングするようになります。有効な各アベイラビリティーゾーンに少なくとも 1 つの登録済みターゲットがあるようにする場合、ロードバランサーが最も効果的です。

コンソールを使用してアベイラビリティーゾーンを追加するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. ロードバランサーを選択します。

  4. [説明] タブの [Basic Configuration (基本的な設定)] で、[Edit subnets (サブネットを編集)] を選択します。

  5. アベイラビリティーゾーンを有効にするには、そのアベイラビリティーゾーンのチェックボックスをオンにします。そのアベイラビリティーゾーンに対して 1 つのサブネットがある場合、そのサブネットが選択されます。そのアベイラビリティーゾーンに複数のサブネットがある場合は、いずれかのサブネットを選択します。アベイラビリティーゾーンにつき、1 つのサブネットしか選択できないことに注意してください。

    インターネット向けロードバランサーの場合は、各アベイラビリティーゾーンに Elastic IP アドレスを選択できます。内部ロードバランサーの場合、プライベート IP アドレスを Elastic Load Balancing で割り当てるのではなく、各サブネットの IPv4 範囲から割り当てることができます。

  6. [Save] を選択します。

AWS CLI を使用してアベイラビリティーゾーンを追加するには

set-subnets コマンドを使用します。

クロスゾーン負荷分散

デフォルトでは、各ロードバランサーノードは、アベイラビリティーゾーン内の登録済みターゲット間でのみトラフィックを分散します。クロスゾーン負荷分散を有効にすると、各ロードバランサーノードは、有効なすべてのアベイラビリティーゾーンの登録済みターゲットにトラフィックを分散します。詳細については、Elastic Load Balancing ユーザーガイドの「クロスゾーン負荷分散」を参照してください。

コンソールを使用してクロスゾーン負荷分散を有効にするには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. ロードバランサーを選択します。

  4. [Description]、[Edit attributes] を選択します。

  5. [ロードバランサー属性の編集] ページで、[クロスゾーン負荷分散] の [有効] を選択し、[保存] を選択します。

AWS CLI を使用してクロスゾーン負荷分散を有効にするには

load_balancing.cross_zone.enabled 属性を指定して modify-load-balancer-attributes コマンドを使用します。

削除保護

ロードバランサーが誤って削除されるのを防ぐため、削除保護を有効にできます。デフォルトでは、ロードバランサーで削除保護が無効になっています。

ロードバランサーの削除保護を有効にした場合、ロードバランサーを削除する前に無効にする必要があります。

コンソールを使用して削除保護を有効にするには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. ロードバランサーを選択します。

  4. [Description]、[Edit attributes] を選択します。

  5. [ロードバランサー属性の編集] ページで、[削除保護] の [有効] を選択し、[保存] を選択します。

コンソールを使用して削除保護を無効にするには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. ロードバランサーを選択します。

  4. [Description]、[Edit attributes] を選択します。

  5. [Edit load balancer attributes] ページで、[Enable delete protection] をクリアし、[Save] を選択します。

AWS CLI を使用して削除保護を有効または無効にするには

deletion_protection.enabled 属性を指定して modify-load-balancer-attributes コマンドを使用します。

接続のアイドルタイムアウト

クライアントが Network Load Balancer を介して行う TCP リクエストごとに、その接続の状態が追跡されます。アイドルタイムアウトよりも長い時間、クライアントからもターゲットからもその接続経由でデータが送信されない場合、接続は閉じられます。アイドルタイムアウト期間の経過後にクライアントまたはターゲットがデータを送信した場合、TCP RST パケットを受信して、接続が無効になったことを示します。

Elastic Load Balancing は、TCP フローのアイドルタイムアウト値を 350 秒に設定します。この値を変更することはできません。TCP リスナーの場合、クライアントまたはターゲットは TCP キープアライブパケットを使用して、アイドルタイムアウトをリセットできます。TCP キープアライブパケットは、TLS リスナーに対してはサポートされていません。

UDP はコネクションレスですが、ロードバランサーは送信元と宛先のIPアドレスとポートに基づいて UDP フロー状態を維持し、同じフローに属するパケットが一貫して同じターゲットに送信されるようにします。アイドルタイムアウト期間が経過した後、ロードバランサーは着信 UDP パケットを新しいフローと見なし、それを新しいターゲットにルーティングします。Elastic Load Balancing は UDP フローのアイドルタイムアウト値を 120 秒に設定します。

EC2 インスタンスは、リターンパスを確立するために、30 秒以内に新しいリクエストに応答する必要があります。

DNS 名

各 Network Load Balancer は、name-id.elb.region.amazonaws.com の構文でデフォルトのドメインネームシステム (DNS) 名を受け取ります。たとえば、my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com です。

覚えやすい DNS 名を使用する場合は、カスタムドメイン名を作成し、ロードバランサーの DNS 名に関連付けることができます。このカスタムドメイン名を使用してクライアントがリクエストを生成すると、DNS サーバーがロードバランサーの DNS 名に解決します。

最初に、認定ドメイン名レジストラにドメイン名を登録します。次に、ドメインレジストラなどの DNS サービスを使用して、ロードバランサーにリクエストをルーティングするために CNAME レコードを作成します。詳細については、DNS サービスのドキュメントを参照してください。たとえば、Amazon Route 53 を DNS サービスとして使用できます。詳細については、Amazon Route 53 開発者ガイド の「ELB ロードバランサーへのトラフィックのルーティング」を参照してください。

ロードバランサーには、有効なアベイラビリティーゾーンごとに 1 つの IP アドレスがあります。これらはロードバランサーノードのアドレスです。ロードバランサーの DNS 名はこれらのアドレスに解決されます。たとえば、ロードバランサーのカスタムドメイン名が example.networkloadbalancer.com であるとします。以下の dig または nslookup コマンドを使用して、ロードバランサーノードの IP アドレスを調べます。

Linux または Mac

$ dig +short example.networkloadbalancer.com

Windows

C:\> nslookup example.networkloadbalancer.com

ロードバランサーには、ロードバランサーノードの DNS レコードがあります。次の構文で DNS 名を使用して、ロードバランサーノードの IP アドレスを調べることができます。az.name-id.elb.region.amazonaws.com

Linux または Mac

$ dig +short us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com

Windows

C:\> nslookup us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com