Application Load Balancer には静的 IP アドレスが必要です。Application Load Balancer を Network Load Balancer の背後に登録したいと考えています。
簡単な説明
Application Load Balancer に静的 IP アドレスを割り当てることはできません。Application Load Balancer が静的 IP アドレスを必要とする場合は、Network Load Balancer の背後に登録するのがベストプラクティスです。Network Load Balancer に割り当てられる静的 IP アドレスは変更されず、Application Load Balancer の固定エントリポイントとなります。
注: 以下の解決策は、Amazon Elastic Compute Cloud (Amazon EC2) コンソールでの新しい起動エクスペリエンスを使用します。手順を完了するには、Amazon EC2 コンソールでこの機能をオンに切り替えます。
解決策
Amazon EC2 コンソール
Amazon EC2 コンソールを使用して新しいターゲットグループを作成し、Application Load Balancer をターゲットとして登録します。トラフィックを Application Load Balancer に転送するために、Network Load Balancer を作成して設定します。
TCP 80 と TCP 443 トラフィックの新しいターゲットグループを作成し、Application Load Balancer をターゲットとして登録する
新しいターゲットグループを作成して、Amazon EC2 インスタンスのターゲットを登録するには、次の手順を実行します。
- Amazon EC2 コンソールを開きます。
- ナビゲーションペインで、[ロードバランシング] を展開し、[ターゲットグループ] を選択します。
- [ターゲットグループを作成する] を選択します。
- [ターゲットタイプの選択] で、[Application Load Balancer] を選択します。
- [ターゲットグループ名] で、ターゲットグループの名前を入力します。
- [プロトコル] で [TCP] を選択してから、[ポート] で [80] を HTTP トラフィック用として選択します。
- [VPC] で、Application Load Balancer の仮想プライベートクラウド (VPC) を選択します。
- [ヘルスチェックプロトコル] で、HTTP 200 - 399 ステータスを返す Application Load Balancer の [HTTP] または [HTTPS] を選択します。
- [次へ] を選択します。
- [Application Load Balancer] で、該当する Application Load Balancer を選択します。
- [ターゲットグループを作成する] を選択します。
- 手順 3 ~ 11 を繰り返して、追加のターゲットグループを作成します。ステップ 6 を繰り返す場合は、TCP プロトコルとポート 443 を選択して HTTPS トラフィック用の別のターゲットグループを作成します。
HTTP トラフィックおよび HTTPS トラフィックを Application Load Balancer に転送するために、Network Load Balancer を作成して設定する
HTTP トラフィックおよび HTTPS トラフィックを Application Load Balancer に転送するために、Network Load Balancer を作成して設定するには、次の手順を実行します。
- Amazon EC2 コンソールを開きます。
- ナビゲーションペインで、[ロードバランシング] を展開し、[ロードバランサー] を選択します。
- [ロードバランサーの作成] を選択します。
- [ロードバランサータイプ] で、[Network Load Balancer]、[作成] の順に選択します。
- [ロードバランサー名] に、Network Load Balancer の名前を入力します。
- [スキーム] で、[インターネット向け] または [内部] のいずれかを選択します。内部 Application Load Balancer は、インターネットに接続された Network Load Balancer と一緒に使用できます。
- [IP アドレスタイプ] で、[IPv4] を選択します。
- [VPC] で、[VPC] を選択します。
- [マッピング] で、1 つ以上のアベイラビリティーゾーンとサブネットを選択します。内部ロードバランサーにはプライベートサブネットを、インターネット向けロードバランサーにはパブリックサブネットを選択します。
- [IPv4 アドレス] で、[AWS による割り当て] または [Elastic IP アドレスの使用] を選択します。
- [プロトコル] で [TCP] を選択してから、[ポート] で [80] を HTTP トラフィック用として選択します。
- [デフォルトアクション] で、Application Load Balancer を登録済みターゲットとして含むターゲットグループを選択します。
- [リスナーを追加] を選択し、手順 11 ~ 12 を繰り返します。Application Load Balancer の TCP 443 ターゲットグループにトラフィックを転送するデフォルトアクションを使用して、プロトコル [TCP] とポート [443] を選択します。
- [ロードバランサーの作成] を選択します。
- ロードバランサーをテストします。
**注:**この設定で、Application Load Balancer で HTTP から HTTPS にリダイレクトするには、2 つのターゲットグループを作成する必要があります。TCP 80 用と TCP 443 用の Application Load Balancer ターゲットグループを 1 つ作成します。
Application Load Balancer のセキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) を設定して、Network Load Balancer のプライベート IP アドレスからのヘルスチェックを許可します。
AWS CLI
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用しているようにしてください。
AWS CLI を使用して Application Load Balancer を Network Load Balancer の背後に登録するには、次の手順を実行します。
- 新しいターゲットグループを作成し、alb ターゲットタイプを使用します。
aws elbv2 create-target-group \
--name <name> \
--protocol TCP \
--port <port> \
--target-type alb \
--vpc-id <vpc_id>
注: name をターゲットグループの名前に、port をポート番号に、vpc_id を VPC ID にそれぞれ置き換えてください。
- Application Load Balancer をターゲットグループに登録します。
aws elbv2 register-targets \
--target-group-arn <tg_arn from previous command> \
--targets Id=<alb_arn>
注: tg_arn from previous command をターゲットグループの ARN に置き換え、alb_arn を Application Load Balancer の ARN に置き換えてください。
- Network Load Balancer を作成します。
aws elbv2 create-load-balancer \
--name <nlb name> \
--type network \
--scheme internal \
--subnets <subnet_ids>
注: nlb_name をお使いの Network Load Balancer の名前に置き換え、subnet_ids をサブネットの ID に置き換えてください。
- リスナーを作成します。
aws elbv2 create-listener --load-balancer-arn ${nlb1_arn} \
--protocol TCP --port <port> \
--default-actions Type=forward,TargetGroupArn=<target group>
関連情報
AWS Lambda を使用して Application Load Balancer の静的 IP アドレスを有効にする
Application Load Balancer の Network Load Balancer との直接統合により、AWS PrivateLink と静的 IP アドレスを有効にする