送信元IPアドレスに応じてALB配下のTargetGroupの振り分けを行う

2020.05.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。大阪オフィスの林です。

ALBのリスナールールでは、送信元のIPアドレスを条件に様々な制御が出来ます。今回は送信元のIPアドレスに応じて、転送先のTargetGroupを振り分けるということをやっていきたいと思います。
公式参考はこちら

やりたいこと

送信元(接続元)のIPアドレスに応じて、転送先のTargetGroupを振り分けたい。

やってみた

TargetGroupの準備

はじめに、TargetGroupを準備しておきます。今回、test-tg-1test-tg-2の2つのTargetGroupを使って振り分けの確認をしていきます。

今回は検証のため、それぞれのTargetGroupに1台ずつEC2のインスタンスをを所属させています。

以上でTargetGroupの準備は完了です。

ロードバランサの準備

次にロードバランサーの設定をしていきます。ALBを作成し、リスナーの設定をしていきます。ルールの表示/編集を選択し、リスナールールの編集をしてきます。

特定の送信元IPアドレスを条件に、転送先のTargetGroupを分けます。ルールの1つ目として、106.x.x.x/32のIPアドレスからALB宛てにアクセスがあった場合はtest-tg-1のTargetGroupにトラフィックを転送し、13.x.x.x/32のIPアドレスからALB宛てにアクセスがあった場合はtest-tg-2のTargetGroupにトラフィックを転送するように設定しています。なお、この検証では/32でIPアドレス固定していますが、ネットワークアドレスを指定してももちろん大丈夫です。

接続確認

ルールの最上位に記載した106.x.x.xのアドレスを持つ端末からALBのDNS名にブラウザでアクセスすると、test-tg-1に所属しているインスタンスのトップページが表示されました。

2つ目のルールで指定した13.x.x.xのアドレスを持つ端末からALBのDNS名にブラウザでアクセスすると、test-tg-2に所属しているインスタンスのトップページが表示されました。

注意

上記設定を行うことで、1つのALBで、接続元に応じてTargetGroupの振り分けを行うことが出来ました。このような設定によって、例えば、顧客毎のネットワークをそれぞれのTargetGroupにアサインしてトラフィックをルーティングするといったようなことが出来ます。しかし1つ、注意・考慮しなけばならない点として、ALBのリスナールールは、設定した上から下の順に適用・評価していくという優先度があるため、あまりにも大量のルーティングをこのリスナールールで制御するというのは、性能といった面でも考えなければいけないポイントかもしれません。

まとめ

今回は送信元のIPアドレスに応じて、転送先のTargetGroupを振り分けるということをやっていきました。ALBはコストが掛かるサービスであるため、1つのALBで様々な制御が出来るのはありがたいのですが、実際にアーキテクチャを検討する場合は、コストは勿論、性能の要件なども考慮しながら検討を行って頂ければと思います!

以上、大阪オフィスの林がお送りしました!

参考