AWS CLI を使用した Gateway Load Balancer の開始方法 - Elastic Load Balancing

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

AWS CLI を使用した Gateway Load Balancer の開始方法

Gateway Load Balancer を使用すると、セキュリティアプライアンスなどのサードパーティー仮想アプライアンスを簡単にデプロイ、スケーリング、管理できます。

このチュートリアルでは、Gateway Load Balancer と Gateway Load Balancer エンドポイントを使用して検査システムを実装します。

概要

Gateway Load Balancer エンドポイントは、サービスプロバイダー VPC 内の仮想アプライアンスとサービスコンシューマー VPC 内のアプリケーションサーバー間のプライベート接続を提供する VPC エンドポイントです。Gateway Load Balancer は、仮想アプライアンスと同じ VPC にデプロイされます。これらのアプライアンスは、Gateway Load Balancer のターゲットグループに登録されます。

アプリケーションサーバーはサービスコンシューマー VPC の 1 つのサブネット (宛先サブネット) で実行されますが、Gateway Load Balancer エンドポイントは同じ VPC の別のサブネットにあります。インターネットゲートウェイを経由してサービスコンシューマー VPC に入るすべてのトラフィックは、まず、Gateway Load Balancer エンドポイントにルーティングされ、その後、送信先サブネットにルーティングされます。

同様に、アプリケーションサーバー (送信先サブネット) から出るすべてのトラフィックは、Gateway Load Balancer エンドポイントにルーティングされてから、インターネットにルーティングされます。次のネットワークの図は、Gateway Load Balancer エンドポイントがエンドポイントサービスへのアクセスにどのように使用されるのかを視覚的に示したものです。


    Gateway Load Balancer エンドポイントを使用してエンドポイントサービスにアクセスする

下の番号付きの項目で、上記の図に示されている各要素がわかりやすく説明されています。

インターネットからアプリケーションへのトラフィック (青い矢印):
  1. トラフィックは、インターネットゲートウェイを介してサービスコンシューマー VPC に入ります。

  2. トラフィックは、入力ルーティングの結果として Gateway Load Balancer エンドポイントに送信されます。

  3. Gateway Load Balancer に送信されたトラフィックは、セキュリティアプライアンスの 1 つに分散されます。

  4. セキュリティアプライアンスによって検査されたトラフィックは Gateway Load Balancer エンドポイントに戻されます。

  5. トラフィックはアプリケーションサーバー (宛先サブネット) に送信されます。

アプリケーションからインターネットへのトラフィック (オレンジの矢印):
  1. トラフィックは、アプリケーションサーバーのサブネットで設定されたデフォルトルートの結果として、Gateway Load Balancer エンドポイントに送信されます。

  2. Gateway Load Balancer に送信されたトラフィックは、セキュリティアプライアンスの 1 つに分散されます。

  3. セキュリティアプライアンスによって検査されたトラフィックは Gateway Load Balancer エンドポイントに戻されます。

  4. トラフィックは、ルートテーブルの設定に基づいてインターネットゲートウェイに送信されます。

  5. トラフィックはインターネットにルーティングされます。

ルーティング

インターネットゲートウェイのルートテーブルには、アプリケーションサーバー宛てのトラフィックを Gateway Load Balancer エンドポイントにルーティングするエントリが必要です。Gateway Load Balancer エンドポイントを指定するには、VPC エンドポイントの ID を使用します。次の例は、デュアルスタック設定のルートを示します。

送信先 ターゲット
VPC IPv4 CIDR [Local] (ローカル)
VPC IPv6 CIDR [Local] (ローカル)
サブネット 1 IPv4 CIDR vpc-endpoint-id
サブネット 1 IPv6 CIDR vpc-endpoint-id

アプリケーションサーバーがあるサブネットのルートテーブルには、アプリケーションサーバーからのすべてのトラフィックを Gateway Load Balancer エンドポイントにルーティングするエントリが必要です。

送信先 ターゲット
VPC IPv4 CIDR [Local] (ローカル)
VPC IPv6 CIDR [Local] (ローカル)
0.0.0.0/0 vpc-endpoint-id
::/0 vpc-endpoint-id

Gateway Load Balancer エンドポイントがあるサブネットのルートテーブルは、検査から返されるトラフィックを最終的な送信先にルーティングする必要があります。インターネットを起点とするトラフィックについては、ローカルルートによって、アプリケーションサーバーに確実に到達します。アプリケーションサーバーを起点とするトラフィックに対して、すべてのトラフィックをインターネットゲートウェイにルーティングするエントリを追加します。

送信先 ターゲット
VPC IPv4 CIDR [Local] (ローカル)
VPC IPv6 CIDR [Local] (ローカル)
0.0.0.0/0 internet-gateway-id
::/0 internet-gateway-id

前提条件

  • AWS CLI をインストールするか、Gateway Load Balancer をサポートしていないバージョンを使用している場合は AWS CLI を現行バージョンに更新します。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS Command Line Interface のインストール」を参照してください。

  • サービスコンシューマー VPC に、アプリケーションサーバーを含むアベイラビリティーゾーンごとに少なくとも 2 つのサブネットがあることを確認します。1 つのサブネットは Gateway Load Balancer エンドポイント用で、もう 1 つはアプリケーションサーバー用です。

  • サービスプロバイダー VPC に、セキュリティアプライアンスインスタンスを含むアベイラビリティーゾーンごとに少なくとも 2 つのサブネットがあることを確認します。1 つのサブネットは Gateway Load Balancer 用で、もう 1 つはインスタンス用です。

  • サービスプロバイダー VPC 内の各セキュリティアプライアンスサブネットで、少なくとも 1 つのセキュリティアプライアンスインスタンスを起動します。これらのインスタンスのセキュリティグループは、ポート 6081 で UDP トラフィックを許可する必要があります。

ステップ 1: Gateway Load Balancer を作成し、ターゲットを登録する

次の手順に従って、ロードバランサー、リスナー、およびターゲットグループを作成し、セキュリティアプライアンスインスタンスをターゲットとして登録します。

Gateway Load Balancer を作成し、ターゲットを登録するには
  1. create-load-balancer コマンドを使用して、gateway タイプのロードバランサーを作成します。セキュリティアプライアンスインスタンスを起動したアベイラビリティーゾーンごとに 1 つのサブネットを指定できます。

    aws elbv2 create-load-balancer --name my-load-balancer --type gateway --subnets provider-subnet-id

    デフォルトでは、IPv4 アドレスのみがサポートされます。IPv4 と IPv6 の両方のアドレスをサポートするには、--ip-address-type dualstack オプションを追加します。

    出力には、次の例に示されている形式でロードバランサーの Amazon リソースネーム (ARN) が含まれます。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/gwy/my-load-balancer/1234567890123456
  2. create-target-group コマンドを使用して、インスタンスを起動したサービスプロバイダー VPC を指定し、ターゲットグループを作成します。

    aws elbv2 create-target-group --name my-targets --protocol GENEVE --port 6081 --vpc-id provider-vpc-id

    出力には、次の形式でターゲットグループの ARN が含まれます。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/0123456789012345
  3. インスタンスをターゲットグループに登録するには、register-targets コマンドを使用します。

    aws elbv2 register-targets --target-group-arn targetgroup-arn --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890
  4. create-listener コマンドを使用して、ターゲットグループにリクエストを転送するデフォルトルールを持つロードバランサーのリスナーを作成します。

    aws elbv2 create-listener --load-balancer-arn loadbalancer-arn --default-actions Type=forward,TargetGroupArn=targetgroup-arn

    出力には、次の形式のリスナーの ARN が含まれます。

    arn:aws:elasticloadbalancing:us-east-2:123456789012:listener/gwy/my-load-balancer/1234567890123456/abc1234567890123
  5. (オプション) 次の describe-target-health コマンドを使用してターゲットグループの登録されたターゲットのヘルスステータスを確認できます。

    aws elbv2 describe-target-health --target-group-arn targetgroup-arn

ステップ 2: Gateway Load Balancer エンドポイントを作成する

次の手順に従って、Gateway Load Balancer エンドポイントを作成します。Gateway Load Balancer エンドポイントにはゾーンが適用されます。ゾーンごとに Gateway Load Balancer エンドポイントを 1 つ作成することをお勧めします。詳細については、「AWS PrivateLink を通じて仮想アプライアンスにアクセスする」を参照してください。

Gateway Load Balancer エンドポイントを作成するには
  1. create-vpc-endpoint-service-configuration コマンドを使用して、Gateway Load Balancer を使用するエンドポイントサービス設定を作成します。

    aws ec2 create-vpc-endpoint-service-configuration --gateway-load-balancer-arns loadbalancer-arn --no-acceptance-required

    IPv4 と IPv6 の両方のアドレスをサポートするには、--supported-ip-address-types ipv4 ipv6 オプションを追加します。

    出力には、サービス ID (例: vpce-svc-12345678901234567)、およびサービス名 (例: com.amazonaws.vpce.us-east-2.vpce-svc-12345678901234567) が含まれます。

  2. modify-vpc-endpoint-service-permissions コマンドを使用して、サービスコンシューマーがサービスへのエンドポイントを作成できるようにします。サービスコンシューマーは、ユーザー、IAM ロール、または AWS アカウントです。次の例では、指定した AWS アカウントのアクセス許可を追加します。

    aws ec2 modify-vpc-endpoint-service-permissions --service-id vpce-svc-12345678901234567 --add-allowed-principals arn:aws:iam::123456789012:root
  3. create-vpc-endpoint コマンドを使用して、サービス用の Gateway Load Balancer エンドポイントを作成します。

    aws ec2 create-vpc-endpoint --vpc-endpoint-type GatewayLoadBalancer --service-name com.amazonaws.vpce.us-east-2.vpce-svc-12345678901234567 --vpc-id consumer-vpc-id --subnet-ids consumer-subnet-id

    IPv4 と IPv6 の両方のアドレスをサポートするには、--ip-address-type dualstack オプションを追加します。

    出力には、Gateway Load Balancer エンドポイントの ID (例: vpce-01234567890abcdef) が含まれます。

ステップ 3: ルーティングを設定する

次のようにして、サービスコンシューマー VPC のルートテーブルを設定します。これにより、セキュリティアプライアンスは、アプリケーションサーバー宛てのインバウンドトラフィックに対してセキュリティ検査を実行できます。

ルーティングを設定するには
  1. create-route コマンドを使用して、アプリケーションサーバー宛てのトラフィックを Gateway Load Balancer エンドポイントにルーティングするエントリをインターネットゲートウェイのルートテーブルに追加します。

    aws ec2 create-route --route-table-id gateway-rtb --destination-cidr-block Subnet 1 IPv4 CIDR --vpc-endpoint-id vpce-01234567890abcdef

    IPv6 をサポートするには、次のルートを追加します。

    aws ec2 create-route --route-table-id gateway-rtb --destination-cidr-block Subnet 1 IPv6 CIDR --vpc-endpoint-id vpce-01234567890abcdef
  2. create-route コマンドを使用して、アプリケーションサーバーから Gateway Load Balancer エンドポイントにすべてのトラフィックをルーティングするエントリを、アプリケーションサーバーを持つサブネットのルートテーブルに追加します。

    aws ec2 create-route --route-table-id application-rtb --destination-cidr-block 0.0.0.0/0 --vpc-endpoint-id vpce-01234567890abcdef

    IPv6 をサポートするには、次のルートを追加します。

    aws ec2 create-route --route-table-id application-rtb --destination-cidr-block ::/0 --vpc-endpoint-id vpce-01234567890abcdef
  3. create-route コマンドを使用して、アプリケーションサーバーを起点とするすべてのトラフィックをインターネットゲートウェイにルーティングするエントリを、Gateway Load Balancer エンドポイントを持つサブネットのルートテーブルに追加します。

    aws ec2 create-route --route-table-id endpoint-rtb --destination-cidr-block 0.0.0.0/0 --gateway-id igw-01234567890abcdef

    IPv6 をサポートするには、次のルートを追加します。

    aws ec2 create-route --route-table-id endpoint-rtb --destination-cidr-block ::/0 --gateway-id igw-01234567890abcdef
  4. 各ゾーン内のアプリケーションサブネットのルートテーブルごとに繰り返します。