Network Load Balancer - Elastic Load Balancing

Network Load Balancer

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

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

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

ロードバランサーの状態

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

provisioning

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

active

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

failed

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

ロードバランサーの属性

ロードバランサーには、次の属性があります。

access_logs.s3.enabled

Amazon S3 に保存されたアクセスログが有効かどうかを示します。デフォルトは false です。

access_logs.s3.bucket

アクセスログの Amazon S3 バケットの名前。この属性は、アクセスログが有効になっている場合は必須です。詳細については、「バケットの要件」を参照してください。

access_logs.s3.prefix

Amazon S3 バケットの場所のプレフィックス。

deletion_protection.enabled

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

ipv6.deny_all_igw_traffic

ロードバランサーへのインターネットゲートウェイ (IGW) アクセスをブロックし、インターネットゲートウェイを経由た内部ロードバランサーへの意図しないアクセスを防止します。インターネット向けロードバランサーでは false、内部ロードバランサーでは true に設定されます。この属性は、インターネットゲートウェイ (IGW) 以外のインターネットアクセス(例えば、ピアリング、Transit Gateway、AWS Direct Connect、または AWS VPN などを経由)を妨げません。

load_balancing.cross_zone.enabled

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

IP アドレスタイプ

クライアントがロードバランサーで使用できる IP アドレスのタイプを設定できます。IP アドレスの種類を次に示します。

ipv4

クライアントは IPv4 アドレス (192.0.2.1 など) を使用してロードバランサーに接続する必要があります。IPv4 対応のロードバランサー (インターネット向けと内部向けの両方) では、TCP、UDP、TCP_UDP、および TLS リスナーがサポートされています。

dualstack

クライアントは、IPv4 アドレス (192.0.2.1 など) と IPv6 アドレス (たとえば、2001:0db8:85a3:0:0:8a2e:0370:7334) の両方を使用してロードバランサーに接続できます。デュアルスタック対応のロードバランサー (インターネット向けと内部向けの両方) では、TCP および TLS リスナーがサポートされています。

デュアルスタックロードバランサーに関する考慮事項
  • ロードバランサーは、ターゲットグループの IP アドレスのタイプに基づいてターゲットと通信します。

  • ロードバランサーのデュアルスタックモードを有効にすると、Elastic Load Balancing がロードバランサーの AAAA DNS レコードを提供します。IPv4 アドレスを使用してロードバランサーと通信するクライアントは、A DNS レコードを解決します。IPv6 アドレスを使用してロードバランサーと通信するクライアントは、AAAA DNS レコードを解決します。

  • インターネットゲートウェイを経由する内部デュアルスタックロードバランサーへのアクセスがブロックされ、意図しないインターネットアクセスを防止します。ただし、これはインターネットゲートウェイ以外のインターネットアクセス(ピアリング、Transit Gateway、AWS Direct Connect、AWS VPN などを経由)を妨げることはありません。

ロードバランサーの IP アドレスタイプの詳細については、アドレスタイプの更新 を参照してください。

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

ロードバランサーを作成するときに、ロードバランサーの 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. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーの名前を選択して、その詳細ページを開きます。

  4. [Network mapping] (ネットワークマッピング) タブで、[Edit subnets] (サブネットの編集) を選択します。

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

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

  6. [変更の保存] を選択します。

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

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

クロスゾーン負荷分散

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

削除保護

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

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

コンソールを使用して削除保護を有効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーの名前を選択して、その詳細ページを開きます。

  4. [属性] タブで、[編集] を選択します。

  5. [構成] で、[削除保護] をオンにします。

  6. [変更の保存] を選択します。

コンソールを使用して削除保護を無効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーの名前を選択して、その詳細ページを開きます。

  4. [属性] タブで、[編集] を選択します。

  5. [構成] で、[削除保護] をオンにします。

  6. [変更の保存] を選択します。

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

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

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

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

TCP フローのアイドルタイムアウト値を 350 秒に設定します。この値は変更できません。クライアントまたはターゲットは TCP キープアライブパケットを使用して、アイドルタイムアウトをリセットできます。TLS 接続を維持するために送信されるキープアライブパケットには、データまたはペイロードを含めることはできません。

TLS リスナーがクライアントまたはターゲットのいずれかから TCP キープアライブパケットを受信すると、ロードバランサーは TCP キープアライブパケットを生成し、20 秒ごとにフロントエンド接続とバックエンド接続の両方に送信します。この動作を変更することはできません。

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 サービスを使用して、ロードバランサーにリクエストをルーティングするための DNS レコードを作成します。詳細については、DNS サービスのドキュメントを参照してください。例えば、DNS サービスとして Amazon Route 53 を使用する場合は、ロードバランサーをポイントするエイリアスレコードを作成します。詳細については、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 名 (az.name-id.elb.region.amazonaws.com) を使用して、ロードバランサーノードの IP アドレスを調べることができます。

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