AWS

ALBを用いてバーチャルホスト毎にルーティングする方法

1つのALBで対象バーチャルホストをホストしているEC2に向けてルーティングするよう設定します。
2つのターゲットグループを作成しホストヘッダーの内容によってルーティングするターゲットを決定します。

検証構成

検証構成としてEC2二台で
HOST1にtest-a.test,test-b.test
HOST2にtest-c.test,test-d.test
のバーチャルホストが設定されています。

EC2の設定

バーチャルホストを設定したEC2を二台用意しました。
hostsを書いてアクセステストをしておきます。

ALBの設定

ALB作成

ロードバランサーの作成からALB(test-abcd-alb)を作成します。

ターゲットグループを作成しますがここではまだ一つしか登録できません。
HOST1にルーティングするためターゲットグループ(test-ab-target)を作成します。

ターゲットグループにインスタンスを登録します。今回はHOST1(test-a.test,test-b.test)を登録します。


上記設定でALBを作成します。

ターゲットグループ追加

ALB作成後にHOST2へルーティングするターゲットグループ付け足します。
test-ab-targetと同様にターゲットグループ(test-cd-target)を作成します。

リスナー設定

ALBのルーティングの設定を追加します。
ALBリスナータブの[ルールの表示/編集]から設定します。

ホストヘッダーを条件にしてバーチャルホスト名を指定し
転送用のターゲットグループを指定します。

これで指定したドメイン名でアクセスした場合
対象のターゲットグループに転送するという設定が完了しました。

確認

本来ならドメインをRoute53に登録し...と手順を踏みますが
今回は検証目的のためALBのIPをhostsに登録し確認を行います。

nslookup {ALBのドメイン名}
で出力されたIPをhostsに登録します。
登録後ブラウザからのアクセスでバーチャルホストをホストしているサーバにルーティングされます。

まとめ

今回はバーチャルホストに合わせて転送先を決めるALBについて紹介しました。
複数ALBで処理されていたものを一台にまとめることでコストを少し抑えられます。紹介したもの以外にもALBのリスナーには様々な設定があるので試してみてください。