AWSのロードバランサー(ALB)は、バックエンドのサーバーに転送が可能です。
ただ、一つのALBで、一つの種類のサーバー(例えばweb)のみしか転送できないのでしょうか?
レジュメ
環境・前提条件
AWSのロードバランサーALBを利用。
バックエンドには、EC2のwebサーバーとapiサーバーを用意する予定とする。
結論、1つのALBで複数種類のサーバーをロードバランスできます!
結論としましては、1つのALBを利用して複数種類のサーバー(例えば、webサーバとAPIサーバー)をロードバランス出来ます。
ALBの転送・リダイレクト・固定レスポンスルールの条件
ALBの条件に、
- ホストヘッダー(httpリクエスト時のhostヘッダー。Virtual Hostと同じ意味)
- パス
でルールを分けることが出来、ルールを複数作ることにより、複数種類のサーバーに転送することが出来ます。
条件は、ホストヘッダーかつパスすべてに一致した場合のルールも作成できます。
ルール条件のアクションとしては、
- 転送先
- リダイレクト先
- 固定レスポンスを返す
ことが出来ます。
例えば、
webサーバーとapiサーバーをホストヘッダーで別の
Virtual Host として一つのALBで動作させることも出来ますし、
apiサーバーは/api/*のパスのURLだけリバースプロキシ的に転送することも出来ます。
apacheでの Virtual Hostやリバースプロキシの設定はALBで代用でき不要になりますね。
httpアクセスが来たらhttpsへリダイレクトすることもALBで可能
元のホストへリダイレクトすることも出来ますし、
カスタムホスト(別のホスト) にリダイレクトする ことも、パスやクエリも多少のカスタムは可能そうです。
残念ながら転送先をS3にしたりリバースプロキシは出来ない
S3への転送先の設定やS3へのリバースプロキシ設定が出来たら良かったのですが、残念ながら現状では転送先はターゲットグループ(EC2)しか出来なかったです。
画像等のS3へのリバースプロキシを使用するためには、ALBでは足りずCloudfrontが必要なんですね。
参考までにhttpsではアクションに認証もある
これは例えば、googleのアカウントでユーザー認証したユーザーのみサイトにアクセスさせたい場合等に使用できます。
- Amazon Cognito
- OIDC(OpenID Connect)
が使用です来ます。OpenID連携ですね!
AWSのロードバランサーALBは そこまで進化していたんですね。
意外といろいろ出来ますね!AWSのロードバランサーALB