batchiです。
前回の続きからです。
http://www.simpline.co.jp/tech/?p=1739
パスベースのルーティングが必要となるのはどんな場合?というところからです。
ケース1:同じFQDNで別サーバで稼働している場合
HPと技術ブログを、同じFQDNで異なるサーバ上で動かしていた場合。
ALBであればパスで判断してサーバの振分けが可能ですが、CLBだとそれができません。
上記の構成でCLBを採用した場合、CLBのルーティングアルゴリズムによって
いずれかのサーバにルーティングされ、
運が良ければ然るべきサーバにたどり着くかもね、という状態になります。
ケース2:同一サーバの別ポートで稼働している場合
HPと技術ブログが、同一のサーバ上で、異なるポートで動いていた場合。
CLBの場合、下記のような縛りがあるので、基本的に対応できません。
- ロードバランサーのポート1つあたり設定できるインスタンスのポートは1つ
- ロードバランサーのポートを重複して指定できない
(80で待ち受けてインスタンスの80に渡す、443で待ち受けて8080に渡す、という無理くりならできる?)
ALBであれば「単一のインスタンスで複数のポートにルーティング」ができます。
CLBを使わざるを得ないのであれば、
FQDNの異なる2つのCLBを用意する、といった対策が必要になります。
余談
「ALBでパスベースのルーティングできると何が嬉しいのか」に対する答えは、
「上記のケースにも対応できるから」で終了なのですが、
自分がこんがらがっていた部分があるので、
FQDNがらみでの「こんな時どうする?」のケースを書きます。
異なるドメインで同一サーバにルーティングしたい
例えば、https://infilic.co.jpでも、
https://simpline.co.jpでも、同じサーバを向かせたい。
こうしましょう。これはCLBでもALBでも変わりません。
…と書いていて思ったのですが、
異なるDomeinNameのHostedZoneが、
同一のELBに対してAレコードのエイリアス設定をすれば、
ELBは1つで済んだりするのでしょうか。
HTTPSで待ち受けたい時どうするの、
(どっちか片方の証明書しかELBにインストールできないでしょ、)と思いましたが、
ACMであれば複数ドメインに対する証明書を用意できると聞いたような聞いてないような。
宿題としてとっておきます。
同じドメインで複数のホスト名を持たせて同じサーバにルーティングしたい
例えばhttps://simpline.co.jpでも、
https://www.simpline.co.jpでも、
https://hoge.simpline.co.jpでも、同じサーバを向かせたい。
Route53でがんばりましょう。CLBでもALBでも変わりません。
レコードセットではワイルドカードが使えるので、
最少で、zoneapexである「simpline.co.jp」と、
「*.simpline.co.jp」の2つを作ってあげれば事が足りそうです。
証明書が対応している前提で。
同じドメインで複数のホスト名を持たせて違うサーバにルーティングしたい
上に同じです。
レコードセットごとに、エイリアス設定するELBを分ければ実現可能です。
続く
実際にパスベースのルーティングをどう実現するかの設定を書くつもりでしたが、
構成図を書くのに疲れたので次回にします。
以上です。