2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NLBとALBを使って固定IPアドレスでのパスベースルーティングを実現する

Last updated at Posted at 2022-03-21

はじめに

AWSのALB(Application Load Balancer)のパスベースのルーティングを利用することで、1つのALBでパスごとに複数のアプリケーションを公開することが可能です。強力な機能ですが、ALBはIPアドレスが動的に変化してしまうため、オンプレミスとのハイブリット環境等でDNSの名前解決に制約がある場合や、セキュリティポリシー等でIPアドレスにてアウトバウンドの通信制限をしなければいけない要件などがあった場合にハードルがあり、利用を断念することがこれまでありました。
またIPアドレス固定については、ALBの前段にGlobal Acceleratorを置く手段はありましたが、特に閉域環境では利用が難しい状況でした。

そんな中、2021年9月にNLBのターゲットとしてALBを設定可能になるアップデートがありました。これを利用することで閉域環境でもNLBでIPアドレスを固定しつつ、ALBでパスベースのルーティングを実現することができるようになったため、動作検証を行いました。

検証したアーキテクチャ

検証したアーキテクチャは以下の通りです。
Screen Shot 2022-03-20 at 11.45.32 PM.png

VPC(10.0.0.0/16)内に二つのSubnet(10.0.10.0/24、10.0.11.0/24)を配置し、NLBとALBをInternal Load BalancerとしてVPC内に配置しています。またNLBのターゲットとしてALBを設定し、さらにALBのターゲットとして、3つのターゲットを設定しています。1つ目は/パスでアクセスできるデフォルトのアプリケーション(nginxのデフォルトページを出力)、2つ目は/app1でアクセスできるApp1(アクセスするとapp1と出力するアプリ)、3つ目は/app2でアクセスできるApp2(アクセスするとapp2と出力するアプリ)です。
またそれぞれのアプリケーションはECSのタスクとして定義して配置しています。

検証環境のデプロイ

検証に利用したAWS環境およびコンテナアプリケーションは下記に公開していますので、適宜ご参照ください。
https://github.com/moreyhat/nlb-alb-ecs

設定の確認

ポイントとなる設定を確認していきます。

NLBのIPアドレス

NLBではSubnetごとにプライベートIPアドレスを固定しています。
Screen Shot 2022-03-21 at 12.13.08 AM.png

NLBのターゲットグループ

NLBのターゲットグループには「Application Load Balancer」がターゲットとして登録されています。
Screen Shot 2022-03-21 at 12.16.09 AM.png

ALBのリスナールール

ALBのリスナールールは/app1*/app2*でそれぞれ対応するターゲットグループにルーティングするように設定されています。また/はデフォルトのルーティング先にフォワードされます。(今回はヘルスチェックのパスとして利用)
Screen Shot 2022-03-21 at 12.19.46 AM.png

ALBのターゲットグループ

ALBのルーティング先となる3つのターゲットグループはそれぞれECSで起動されたタスクがターゲットとして登録されています。
Screen Shot 2022-03-21 at 12.24.14 AM.png
Screen Shot 2022-03-21 at 12.24.23 AM.png

動作検証

動作検証ではVPC内にEC2インスタンスを立てて、そこからNLBのIPアドレスに対してそれぞれのパスでアプリケーションにアクセスできるかを検証しました。その結果、下記のような出力が得られたため、期待通りに動作しているのを確認しました。(/はnginxのデフォルトページが表示されるため、省略しています。)

$ curl -L 10.0.10.30/app1
app1
$ curl -L 10.0.10.30/app2
app2
$ curl -L 10.0.11.30/app1
app1
$ curl -L 10.0.11.30/app2
app2

まとめ

NLBのターゲットとしてALBが設定可能になったことで、今回検証したようにALBの機能をIPアドレスを固定しながら実現できたり、その他にもPrivateLink経由でのアクセスなども可能になり、より広い用途でALBの機能を利用できるようになったと思います。

2
1
1

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?