Network Load Balancer のターゲットを登録する - Elastic Load Balancing

Network Load Balancer のターゲットを登録する

ターゲットがリクエストを処理する準備ができたら、そのターゲットを 1 つ以上のターゲットグループに登録します。ターゲットグループのターゲットタイプにより、ターゲットを登録する方法が決定されます。たとえば、インスタンス ID、IP アドレス、または Application Load Balancer を登録できます。登録処理が完了し、ターゲットが最初のヘルスチェックに合格すると、Network Load Balancer はすぐにターゲットへのリクエストのルーティングを開始します。登録プロセスが完了し、ヘルスチェックが開始されるまで数分かかることがあります。詳細については、「Network Load Balancer ターゲットグループのヘルスチェック」を参照してください。

現在登録されているターゲットの需要が上昇した場合、需要に対応するために追加ターゲットを登録できます。登録されたターゲットの需要が減少した場合は、ターゲットグループからターゲットの登録を解除できます。登録解除プロセスが完了し、ロードバランサーがターゲットへのリクエストのルーティングを停止するまで数分かかることがあります。その後需要が増加した場合は、登録解除したターゲットをターゲットグループに再度登録できます。ターゲットをサービスする必要がある場合は、そのターゲットを登録解除し、サービスの完了時に再度登録できます。

ターゲットを登録解除すると、Elastic Load Balancing は未処理のリクエストが完了するまで待機します。これは、Connection Drainingと呼ばれます。Connection Drainingの進行中、ターゲットのステータスは draining です。登録解除が完了すると、ターゲットのステータスは unused に変わります。詳細については、「登録解除の遅延」を参照してください。

インスタンス ID でターゲットを登録する場合は、Auto Scaling グループでロードバランサーを使用できます。Auto Scaling グループにターゲットグループをアタッチし、そのグループがスケールアウトすると、Auto Scaling グループによって起動されたインスタンスが自動的にターゲットグループに登録されます。Auto Scaling グループからロードバランサーをデタッチした場合、インスタンスはターゲットグループから自動的に登録解除されます。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「Auto Scaling グループへのロードバランサーのアタッチ」を参照してください。

ターゲットセキュリティグループ

ターゲットグループにターゲットを追加する前に、ターゲットに関連するセキュリティグループを Network Load Balancer からのトラフィックを受け入れるように設定します。

ロードバランサーにセキュリティグループが関連付けられている場合のターゲットセキュリティグループに関する推奨事項
  • クライアントトラフィックを許可するには: ロードバランサーに関連付けられたセキュリティグループを参照するルールを追加します。

  • プライベートリンクのトラフィックを許可するには: AWS PrivateLink 経由で送信されるトラフィックのインバウンドルールを評価するためにロードバランサーを設定した場合は、トラフィックポートでロードバランサーセキュリティグループからのトラフィックを受け入れるルールを追加します。それ以外の場合は、トラフィックポートのロードバランサーのプライベート IP アドレスからのトラフィックを受け入れるルールを追加します。

  • ロードバランサーのヘルスチェックを受け入れるには: ヘルスチェックポートのロードバランサーセキュリティグループからのヘルスチェックトラフィックを受け入れるルールを追加します。

ロードバランサーがセキュリティグループに関連付けられていない場合のターゲットセキュリティグループの推奨事項
  • クライアントトラフィックを許可するには: ロードバランサーがクライアント IP アドレスを保持している場合は、承認されたクライアントの IP アドレスからのトラフィックをトラフィックポートで受け付けるルールを追加します。それ以外の場合は、トラフィックポートのロードバランサーのプライベート IP アドレスからのトラフィックを受け入れるルールを追加します。

  • プライベートリンクのトラフィックを許可するには: トラフィックポートのロードバランサーのプライベート IP アドレスからのトラフィックを受け入れるルールを追加します。

  • ロードバランサーのヘルスチェックを受け入れるには: ヘルスチェックポートのロードバランサーのプライベート IP アドレスからのヘルスチェックトラフィックを受け入れるルールを追加します。

クライアント IP 保存の仕組み

preserve_client_ip.enabled 属性を true に設定しない限り、Network Load Balancer はクライアント IP アドレスを保持しません。また、デュアルスタックの Network Load Balancer を使用すると、IPv4 アドレスを IPv6 に、または IPv6 アドレスを IPv4 に変換する場合、クライアント IP アドレス保存は機能しません。クライアント IP アドレス保存は、クライアント IP アドレスとターゲット IP アドレスの両方が IPv4 または IPv6 である場合にのみ機能します。

コンソールを使用してロードバランサーのプライベート IP アドレスを見つけるには
  1. Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。

  2. ナビゲーションペインで、[ネットワークインターフェイス] を選択します。

  3. 検索フィールドに、Network Load Balancer の名前を入力します。ロードバランサーのサブネットあたり 1 つのネットワークインターフェイスがあります。

  4. 各ネットワークインターフェイスの [詳細] タブで、[プライベート IPv4 アドレス] からアドレスをコピーします。

詳細については、「Network Load Balancer のセキュリティグループを更新する」を参照してください。

ネットワーク ACL

EC2 インスタンスをターゲットとして登録する場合は、インスタンスのサブネットのネットワーク ACL をチェックして、リスナーポートとヘルスチェックポートの両方でトラフィックを許可していることを確認する必要があります。VPC のデフォルトネットワークアクセスコントロールリスト (ACL) では、すべてのインバウンドトラフィックとアウトバウンドトラフィックが許可されます。カスタムネットワーク ACL を作成する場合は、適切なトラフィックを許可していることを確認してください。

インスタンスのサブネットに関連付けられているネットワーク ACL では、インターネット向けロードバランサーの次のトラフィックを許可する必要があります。

インスタンスサブネットの推奨ルール
Inbound
送信元 プロトコル ポート範囲 コメント
クライアント IP アドレス リスナー ターゲットポート Allow client traffic (IP Preservation: ON)
VPC CIDR リスナー ターゲットポート Allow client traffic (IP Preservation: VOFF)
VPC CIDR ヘルスチェック ヘルスチェック Allow health check traffic
Outbound
送信先 プロトコル ポート範囲 コメント
クライアント IP アドレス リスナー 1024-65535 Allow return traffic to client (IP Preservation: ON)
VPC CIDR リスナー 1024-65535 Allow return traffic to client (IP Preservation: VOFF)
VPC CIDR ヘルスチェック 1024-65535 Allow health check traffic

ロードバランサーのサブネットに関連付けられているネットワーク ACL では、インターネット向けロードバランサーの次のトラフィックを許可する必要があります。

ロードバランサーサブネットの推奨ルール
Inbound
送信元 プロトコル ポート範囲 コメント
クライアント IP アドレス リスナー リスナー Allow client traffic
VPC CIDR リスナー 1024-65535 Allow response from target
VPC CIDR ヘルスチェック 1024-65535 Allow health check traffic
Outbound
送信先 プロトコル ポート範囲 コメント
クライアント IP アドレス リスナー 1024-65535 Allow responses to clients
VPC CIDR リスナー ターゲットポート Allow requests to targets
VPC CIDR ヘルスチェック ヘルスチェック Allow health check to targets

内部ロードバランサーの場合、インスタンスおよびロードバランサーノードのサブネットのネットワーク ACL は、リスナーポートおよび一時ポートにおいて、VPC CIDR とやり取りされるインバウンドトラフィックとアウトバウンドトラフィックの両方を許可する必要があります。

共有サブネット

参加者は共有 VPC に Network Load Balancer を作成できます。参加者は、自分と共有されていないサブネットで実行するターゲットを登録することはできません。

Network Load Balancer の共有サブネットは、以下を除くすべての AWS リージョンでサポートされています。

  • アジアパシフィック (大阪) ap-northeast-3

  • アジアパシフィック (香港) ap-east-1

  • 中東 (バーレーン) me-south-1

  • AWS 中国 (北京) cn-north-1

  • AWS 中国 (寧夏) cn-northwest-1

ターゲットの登録

各ターゲットグループでは、ロードバランサーが有効になっている各アベイラビリティーゾーンで少なくとも 1 つのターゲットが登録されている必要があります。

ターゲットグループのターゲットタイプにより、登録できるターゲットが決定されます。詳細については、「[Target type (ターゲットタイプ)]」を参照してください。以下の情報を使用して、タイプ instance または ip のターゲットグループにターゲットを登録します。ターゲットタイプが alb の場合は、「ターゲットとして Application Load Balancer を使用する」を参照してください。

要件と考慮事項
  • インスタンスの登録時の状態は running である必要があります。

  • インスタンスで使用されているインスタンスタイプが C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3、T1 のいずれかである場合、インスタンス ID でインスタンスを登録することはできません。

  • インスタンス ID でターゲットを登録する場合、インスタンスは Network Load Balancer と同じ VPC にある必要があります。ロードバランサー VPC (同じリージョンまたは異なるリージョン) とピア接続されている VPC にインスタンスがある場合、そのインスタンスをインスタンス ID で登録することはできません。このようなインスタンスは IP アドレスで登録できます。

  • IPv6 ターゲットグループにインスタンス ID でターゲットを登録する場合、ターゲットにはプライマリ IPv6 アドレスが割り当てられている必要があります。詳細については、「Amazon EC2 ユーザーガイド」の「IPv6 アドレス」を参照してください。

  • IPv4 ターゲットグループの IP アドレスでターゲットを登録する場合、登録する IP アドレスは次のいずれかの CIDR ブロックからのものである必要があります。

    • ターゲットグループの VPC のサブネット

    • 10.0.0.0/8 (RFC 1918)

    • 100.64.0.0/10 (RFC 6598)

    • 172.16.0.0/12 (RFC 1918)

    • 192.168.0.0/16 (RFC 1918)

  • IPv6 ターゲットグループの IP アドレスでターゲットを登録する場合、登録する IP アドレスは VPC IPv6 CIDR ブロック内またはピア接続された VPC の IPv6 CIDR ブロック内にある必要があります。

  • ターゲットを IP アドレスで登録し、その IP アドレスがロードバランサーと同じ VPC にある場合、ロードバランサーは、到達可能なサブネットからターゲットがアクセスしていることを確認します。

  • UDP、TCP_UDP、QUIC、TCP_QUIC ターゲットグループの場合、インスタンスがロードバランサー VPC の外部に存在するか、インスタンスタイプとして C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3、T1 のいずれかを使用しているときは、IP アドレスでインスタンスを登録しないでください。ロードバランサー VPC の外部に存在するか、サポートされていないインスタンスタイプを使用するターゲットは、ロードバランサーからのトラフィックを受信できても、応答できない場合があります。

QUIC 固有の要件と考慮事項
  • QUIC または TCP_QUIC ターゲットグループに登録されたすべてのターゲットには、サーバー ID を指定する必要があります。

  • サーバー ID は、Network Load Balancer リスナー内に存在するすべてのターゲットに対して一意である必要があります。

  • QUIC サーバー ID は常に 8 バイトです。ターゲットを登録する場合、サーバー ID は 0x 形式で、16 進数文字が続く必要があります。

  • ターゲットがサーバー ID に登録されると、その ID はイミュータブルになります。ターゲットサーバー ID を変更するには、最初に登録を解除してから、新しいサーバー ID に登録する必要があります。

  • ターゲット識別子とポートの組み合わせには、1 つのサーバー ID が必要です。同じ VPC 内の同じ IP またはインスタンス ID とポートの組み合わせに別のサーバー ID を使用することはサポートされていません。

  • 6 時間以内に別のターゲットに同じサーバー ID を再使用しないでください。

Console
ターゲットを登録するには
  1. Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。

  2. ナビゲーションペインの [ Load Balancing (ロードバランシング) ] で [ Target Groups (ターゲットグループ) ] を選択します。

  3. ターゲットグループの名前を選択して、その詳細ページを開きます。

  4. [Targets] タブを選択します。

  5. [Register targets] を選択します。

  6. ターゲットグループのターゲットタイプが instance の場合、使用可能なインスタンスを選択し、必要に応じてデフォルトのポートを上書きしてから、[保留中として以下を含める] を選択します。

  7. ターゲットグループのターゲットタイプが ip の場合は、各 IP アドレスでネットワークを選択し、IP アドレスとポートを入力して、[保留中として以下を含める] を選択します。

  8. ターゲットグループのターゲットタイプが alb の場合、必要に応じてデフォルトのポートを上書きし、Application Load Balancer を選択します。詳細については、「ターゲットとして Application Load Balancer を使用する」を参照してください。

  9. ターゲットグループのプロトコルが QUIC または TCP_QUIC の場合は、サーバー ID が指定されていることを確認します。

  10. [保留中のターゲットを登録] を選択します。

AWS CLI
ターゲットを登録するには

register-targets コマンドを使用します。次の例では、インスタンス ID でターゲットを登録します。ポートが指定されていないため、ロードバランサーはターゲットグループポートを使用します。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890

次の例では、IP アドレスでターゲットを登録します。ポートが指定されていないため、ロードバランサーはターゲットグループポートを使用します。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=10.0.50.10 Id=10.0.50.20

次の例では、Application Load Balancer をターゲットとして登録します。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=application-load-balancer-arn

次の例では、QUIC または TCP_QUIC ターゲットグループにターゲットを登録します。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=10.0.50.10,QuicServerId=0xa1b2c3d4e5f65890 Id=10.0.50.20,QuicServerId=0xa1b2c3d4e5f65999
CloudFormation
ターゲットを登録するには

AWS::ElasticLoadBalancingV2::TargetGroup リソースを更新して、新しいターゲットを含めます。次の例では、インスタンス ID で 2 つのターゲットを登録します。

Resources: myTargetGroup: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: my-target-group Protocol: HTTP Port: 80 TargetType: instance VpcId: !Ref myVPC Targets: - Id: !GetAtt Instance1.InstanceId Port: 80 - Id: !GetAtt Instance2.InstanceId Port: 80

次の例では、インスタンス ID で 2 つのターゲットを QUIC または TCP_QUIC プロトコルターゲットグループに登録します。

Resources: myTargetGroup: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: my-target-group Protocol: HTTP Port: 80 TargetType: instance VpcId: !Ref myVPC Targets: - Id: !GetAtt Instance1.InstanceId Port: 80 QuicServerId: 0xa1b2c3d4e5f65999 - Id: !GetAtt Instance2.InstanceId Port: 80 QuicServerId: 0xa1b2c3d4e5f65000

ターゲットの登録解除

アプリケーションの需要が低下した場合や、ターゲットを保守する必要がある場合、ターゲットグループからターゲットを登録解除することができます。ターゲットを登録解除するとターゲットグループから削除されますが、ターゲットにそれ以外の影響は及びません。登録解除するとすぐに、ロードバランサーはターゲットへのトラフィックのルーティングを停止します。ターゲットは、未処理のリクエストが完了するまで draining 状態になります。

Console
ターゲットの登録を解除するには
  1. Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/ を開いてください。

  2. ナビゲーションペインの [ Load Balancing (ロードバランシング) ] で [ Target Groups (ターゲットグループ) ] を選択します。

  3. ターゲットグループの名前を選択して、その詳細ページを開きます。

  4. [ターゲット] タブで、削除するターゲットを選択します。

  5. [登録解除] を選択します。

AWS CLI
ターゲットの登録を解除するには

deregister-targets コマンドを使用します。次の例では、インスタンス ID で登録された 2 つのターゲットを登録解除します。

aws elbv2 deregister-targets \ --target-group-arn target-group-arn \ --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890