LoginSignup
3
3

More than 1 year has passed since last update.

NLBのターゲットとしてALBを指定する

Last updated at Posted at 2022-09-26

概要

ターゲットグループのタイプとして ALB を指定できるようになったことで、ALB のプライベート IP アドレスの変化への対応がマネージドになりました。この記事ではリソースの作成方法を記述します。

image.png

注意点としては、この構成では ALB で SSL を終端させることはできないということです。ALB で HTTP リスナーを HTTPS リスナーにリダイレクトするように設定しても、NLB を経由した場合トラフィックは ALB の HTTPS ポートに到達しません。したがって TLS 暗号化をロードバランサーにオフロードしたい場合、NLB の TLS 終端を使用する必要があります。

ただし NLB に TLS:443 ではなく TCP:443 リスナーを設定することで、ALB で TLS 終端させることができます。このことに関する記事を書きました。

ALB を作成する

ロードバランサー名を入力し、スキーム、IP アドレスタイプを選択します。

2.png

サブネットは最低 2 つ選択する必要があります。

3.png

セキュリティグループを選択します。画像中のセキュリティグループ「nlb-alb-sg」は以下の通りです。

インバウントルール アウトバウンドルール
ポート:80, ソース:0.0.0.0/0 ポート:すべて, ソース:0.0.0.0/0

4.png

リスナーとルーティングの設定は以下の通りです。転送先にはインスタンスタイプのターゲットグループを選択し、ターゲットには Web サーバを指定します。この記事ではここで指定するターゲットグループの作成方法については記述しませんが、以下に設定情報を記載します。

ターゲットタイプ プロトコル ポート ヘルスチェックプロトコル ヘルスチェックパス プロトコルバージョン
インスタンス HTTP 80 HTTP / HTTP1

5.png

設定を確認します。

6.png

作成後、リダイレクト用のリスナーを追加します。これにより、HTTP リクエストを 443 ポートに転送し、その後の通信は HTTPS で行うことができます。作成した ALB を選択し、「リスナーの追加」をクリックします。

7.png

以下のようにリダイレクト先を指定します。

8.png

最後にログを有効化するために、「アクション」→「属性の編集」→「アクセスログの有効化」の順にクリックします。

動作確認

ブラウザを開き、以下を URL 欄に貼り付けます。alb-897482902.ap-northeast-1.elb.amazonaws.com は ALB の DNS 名です。

http://alb-897482902.ap-northeast-1.elb.amazonaws.com/

以下にログの一部を記載します。HTTP リクエストが HTTPS にリダイレクトされていることがわかります。(172.31.25.134 は ALB のプライベート IP アドレス)

type client:port target:port elb_status_code target_status_code request
http xxx.xxx.xxx.xxx:60225 - 301 - GET http://alb-897482902.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1
h2 xxx.xxx.xxx.xxx:60234 172.31.25.134:80 200 200 GET https://alb-897482902.ap-northeast-1.elb.amazonaws.com:443/ HTTP/2.0

ALB のログに関しては以下に詳細が載っています。

以下は Wireshark のキャプチャです。

image.png

ターゲットグループを作成する

ターゲットタイプが ALB であるターゲットグループを作成します。

9.png

ヘルスチェックについては以下のように設定します。

10.png

先ほど作成した ALB を選択します。

11.png

NLB を作成する

NLB を選択します。

12.png

NLB では最低 1 つの AZ を選択します。インスタンスが存在するサブネットを選択する必要があります。

13.png

リスナー、ルーティングは以下のように設定します。転送先には先ほど作成した ALB タイプのターゲットグループを選択します。

14.png

設定を確認します。

15.png

動作確認

ブラウザを開き、以下を URL 欄に貼り付けます。nlb-dae1232ee0feabdb.elb.ap-northeast-1.amazonaws.com は NLB の DNS 名です。

http://nlb-dae1232ee0feabdb.elb.ap-northeast-1.amazonaws.com

以下は ALB のログです。ALB の HTTPS リスナーには到達していないことがわかります。

type client:port target:port elb_status_code target_status_code request
http xxx.xxx.xxx.xxx:60921 - - 301 GET http://nlb-dae1232ee0feabdb.elb.ap-northeast-1.amazonaws.com:80/ HTTP/1.1

ALB のリスナーを変更する

以下のように、ALB の HTTP リスナーのルールをリダイレクトではなくインスタンスのターゲットグループに変更します。

16.png

その後、NLB の 40 番ポートにアクセスすると、ALB タイプのターゲットグループに転送され、最終的にインスタンスのターゲットグループに転送されます。

image.png

ログは以下の通りです(172.31.25.134 は ALB のプライベート IP アドレス)。

type client:port target:port elb_status_code target_status_code request
http xxx.xxx.xxx.xxx:61358 172.31.25.134:80 200 200 GET http://nlb-dae1232ee0feabdb.elb.ap-northeast-1.amazonaws.com:80/ HTTP/1.1

NLB で TLS 終端を設定する

ここではインスタンスタイプのターゲットグループを作成し、NLB の TLS リスナーに指定します。

nlb.png

動作確認

NLB の DNS 名に HTTPS でアクセスし、Web コンテンツを取得できることを確認します。

20.png

以下は Wireshark のキャプチャです。

image.png

参考記事

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3