Application Load Balancer のターゲットグループにターゲットを登録する - エラスティックロードバランシング

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Application Load Balancer のターゲットグループにターゲットを登録する

ターゲットグループにターゲットを登録します。ターゲットグループを作成するときは、そのターゲットの種類を指定します。ターゲットの種類は、ターゲットの登録方法を決定します。たとえば、インスタンス ID、IP アドレス、または Lambda 関数を登録できます。詳細については、「Application Load Balancer のターゲットグループ」を参照してください

現在登録されているターゲットの需要が上昇した場合、需要に対応するために追加ターゲットを登録できます。ターゲットがリクエストを処理する準備ができたら、ターゲットグループに登録します。登録処理が完了し、ターゲットが最初のヘルスチェックに合格するとすぐに、ロードバランサーはターゲットへのリクエストのルーティングを開始します。

登録済みターゲットの需要が低下した場合や、ターゲットを保守する必要がある場合、ターゲットグループから登録解除できます。登録解除するとすぐに、ロードバランサーはターゲットへのリクエストのルーティングを停止します。ターゲットがリクエストを受信する準備ができたら、ターゲットグループに再度登録することができます。

ターゲットを登録解除すると、ロードバランサーは未処理のリクエストが完了するまで待機します。これは、Connection Drainingと呼ばれます。Connection Drainingの進行中、ターゲットのステータスは draining です。

IP アドレスで登録されたターゲットを登録解除する場合、同じ IP アドレスを再び登録するには、登録解除の遅延が完了するまで待機する必要があります。

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

ターゲットでアプリケーションをシャットダウンするときは、まずターゲットグループからターゲットの登録を解除し、既存の接続をドレインする時間を確保する必要があります。登録解除ステータスをモニタリングするには、describe-target-health CLI コマンドを使用するか、 AWS マネジメントコンソールのターゲットグループビューを更新します。ターゲットの登録が解除されたことを確認したら、アプリケーションの停止または終了に進むことができます。このシーケンスにより、トラフィックの処理中にアプリケーションが終了すると、ユーザーが 5XX エラーを経験することを防ぎます。

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

EC2 インスタンスをターゲットとして登録した場合、インスタンスのセキュリティグループにより、ロードバランサーがリスナーポートとヘルスチェックポートの両方でインスタンスとの通信が許可されるようにする必要があります。

推奨ルール
Inbound
送信元 ポート範囲 コメント
ロードバランサーのセキュリティグループ インスタンスリスナー Allow traffic from the load balancer on the instance listener port
ロードバランサーのセキュリティグループ ヘルスチェック Allow traffic from the load balancer on the health check port

また、パス MTU 検出をサポートするため、インバウンド ICMP トラフィックを許可することをお勧めします。詳細については、「Amazon EC2 ユーザーガイド」の「パス MTU 検出」を参照してください。

ターゲットオプティマイザ

ターゲットオプティマイザを使用すると、ターゲットグループ内のターゲットに厳密な同時実行を適用できます。ターゲットにインストールして設定するエージェントの助けを借りて動作します。エージェントは、ロードバランサーとアプリケーション間のインラインプロキシとして機能します。ロードバランサーがターゲットに送信できる同時リクエストの最大数を適用するようにエージェントを設定します。エージェントは、ターゲットが処理しているリクエストの数を追跡します。数値が設定された最大値を下回ると、エージェントはロードバランサーにシグナルを送信し、ターゲットが別のリクエストを処理する準備ができていることを通知します。

ターゲットオプティマイザを有効にするには、ターゲットグループの作成時にターゲットコントロールポートを指定します。ロードバランサーは、管理トラフィックのために、このポートでエージェントとの制御チャネルを確立します。このポートは、ロードバランサーがアプリケーショントラフィックを送信するポートとは異なります。ターゲットグループに登録されたターゲットには、エージェントが実行されている必要があります。

注: ターゲットオプティマイザは、ターゲットグループの作成中にのみ有効にできます。ターゲットコントロールポートは、作成後に変更することはできません。

エージェントは、 で Docker イメージとして使用できます public.ecr.aws/aws-elb/target-optimizer/target-control-agent:latest。エージェントコンテナを実行するときに、次の環境変数を設定します。

TARGET_CONTROL_DATA_ADDRESS

エージェントは、このソケット (IP:port) のロードバランサーからアプリケーショントラフィックを受信します。このソケットのポートは、ターゲットグループ用に設定したアプリケーショントラフィックポートです。デフォルトでは、エージェントはプレーンテキスト接続と TLS 接続の両方を受け入れることができます。

TARGET_CONTROL_CONTROL_ADDRESS

エージェントは、このソケット (IP:port) のロードバランサーから管理トラフィックを受信します。ソケットのポートは、ターゲットグループに設定したターゲットコントロールポートです。

TARGET_CONTROL_DESTINATION_ADDRESS

エージェントはこのソケット (IP:port) にアプリケーショントラフィックをプロキシします。アプリケーションはこのソケットでリッスンしている必要があります。

(オプション) TARGET_CONTROL_MAX_CONCURRENCY

ターゲットがロードバランサーから受け取る同時リクエストの最大数。0~1000 の範囲で指定できます。デフォルトは 1 です。

(オプション) TARGET_CONTROL_TLS_CERT_PATH

TLS ハンドシェイク中にエージェントがロードバランサーに提供する TLS 証明書の場所。デフォルトでは、エージェントは自己署名証明書をメモリ内に生成します。

(オプション) TARGET_CONTROL_TLS_KEY_PATH

TLS ハンドシェイク中にエージェントがロードバランサーに提供する TLS 証明書に対応するプライベートキーの場所。デフォルトでは、エージェントはプライベートキーをメモリ内に生成します。

(オプション) TARGET_CONTROL_TLS_SECURITY_POLICY

ターゲットグループに設定した ELB セキュリティポリシー。デフォルトは ELBSecurityPolicy-2016-08 です。

(オプション) TARGET_CONTROL_PROTOCOL_VERSION

ロードバランサーがエージェントと通信するプロトコル。指定できる値は、 HTTP1 HTTP2、 です GRPC。デフォルトは HTTP1 です。

(オプション) RUST_LOG

エージェントプロセスのログレベル。エージェントソフトウェアは Rust で記述されます。指定できる値は、 debug info errorおよび です。デフォルトは info です。

環境変数の値を変更するには、新しい値でエージェントを再起動する必要があります。ターゲットオプティマイザは、、TargetControlRequestCountTargetControlRequestRejectCount、、TargetControlActiveChannelCountTargetControlNewChannelCountTargetControlChannelErrorCount TargetControlWorkQueueLength、 のメトリクスでモニタリングできますTargetControlProcessedBytes。詳細については、「ターゲットオプティマイザメトリクス」を参照してください。トラブルシューティング情報については、「ターゲットオプティマイザのトラブルシューティング」を参照してください。

共有サブネット

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

ターゲットの登録

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

ターゲットグループのターゲットの種類により、ターゲットグループにターゲットを登録する方法が決定されます。詳しくは、「[Target type (ターゲットタイプ)]」を参照してください。

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

  • ターゲットインスタンスは、ターゲットグループに指定された仮想プライベートクラウド (VPC) に存在している必要があります。

  • 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 ブロック内にある必要があります。

  • 同じ VPC に別の Application Load Balancer の IP アドレスを登録することはできません。もう一方の Application Load Balancer が、ロードバランサー VPC にピアリング接続されている VPC に含まれている場合は、その IP アドレスを登録できます。

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. ターゲットグループのターゲットタイプが lambda の場合、Lambda 関数を選択するか、その ARN を入力します。詳細については、「Lambda 関数をターゲットとして 使用する」を参照してください。

  9. [保留中の対象を登録] を選択します。

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

次の例では、Lambda 関数をターゲットとして登録します。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=lambda-function-arn
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

ターゲットの登録解除

アプリケーションの需要が低下した場合や、ターゲットを保守する必要がある場合、ターゲットグループからターゲットを登録解除することができます。ターゲットを登録解除するとターゲットグループから削除されますが、ターゲットにそれ以外の影響は及びません。

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

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

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

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

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

  6. 確認を求めるメッセージが表示されたら、[Deregister] を選択します。

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

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

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