ちょっと話題の記事

【新機能】ALBのHost-based routingを試してみた

2017.04.06

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

ご機嫌いかがでしょうか、豊崎です。

ELB(ALB)にアップデートがありましたので、ご紹介させていただきます。

ホストベースルーティング

ALB(アプリケーションロードバランサー)にホストベースルーティングの機能が追加されました。 このアップデートにより、HTTPヘッダのホストフィールドに基づいたリクエストのルーティングが可能になりました。

これまで利用可能だったパスベースのルーティングと組み合わせて使うことも可能です。 また、アプリケーションロードバランサで作成できるルールの数も75に拡大されています。

できるようになること

ホストベースのルーティングを使用することでELB(ALB)に複数のドメインを紐付けてドメインごとにバックエンドの異なるEC2またはコンテナにルーティングすることが可能になります。

試してみる

準備

webサーバを2台用意します。

  • hostA
  • hostB

上記EC2をターゲットとしたターゲットグループを2つ用意します。

  • taegetA ターゲット>hostA
  • taegetB ターゲット>hostB

接続はhttpを利用します。

ALBを作成する

AWSマネジメントコンソールからALBを作成します。

任意で設定を行わなければいけない箇所以外はデフォルトで作成します。 名前、サブネット、セキュリティグループは適宜設定してください。

現時点では作成時にホストベースのルーティング設定は行えないため、ターゲットグループには上記で作成したtargetAを指定しておきます。

EC2_Management_Console_7

ALBが作成できたら、リスナータブからルールの表示/編集をクリックします。

EC2_Management_Console_13

それではルールを追加していきましょう。 プラスアイコン>ルールの挿入の順に押します。

EC2_Management_Console_4

すると以下のようにルールを追加することができます。

EC2_Management_Console_1

今回は以下のようなルールを設定してみました。

  • www1.XXXXXX.comでアクセスがあった場合、targetA(hostA)へ
  • www2.XXXXXX.comでアクセスがあった場合、targetB(hostB)へ
  • 上記以外でアクセスがあった場合、targetA(hostA)へ

ルールは上から順に評価されます。

EC2_Management_Console_3_1

DNSについてはRoute53で以下のように設定しています。

  • www1.XXXXXX.com CNAME ALBのエンドポイント
  • www2.XXXXXX.com CNAME ALBのエンドポイント

接続テスト

まずは www1.XXXXXX.comでアクセス

www1_omuraizu_com

つぎに www2.XXXXXX.comでアクセス

www2_omuraizu_com

それ以外(ALBのエンドポイント)でアクセス

cm-test-819013708_ap-northeast-1_elb_amazonaws_com

ホストベースでのルーティングが行えていることが確認できました。

さいごに

今回のアップデートにより、サブドメインごとにELBを用意していた場合、ELBをまとめることができるようになり、シンプルな構成が可能になりました。また、コストの面でも有利になるかとおもいます。是非活用していきたいですね。

HTTPS/SSLの場合はSSL/TLS証明書の要件を満たす必要がありますのでご注意ください。

参考

Elastic Load Balancing Adds Support for Host-based Routing and Increased Rules on its Application Load Balancer