概要
AWSでALB(Application Load Balancer)が
2016/8/11にリリースされたので試してみた
設定方法・ELBとの違い
設定方法・ELB(Elastic Load Balancer)との違いは以下のblogなどで紹介されているので割愛します
【新機能】新しいロードバランサー Application Load Balancer(ALB)が発表されました
AWS Application Load Balancer がきたので試しに作ってみた
概要
出来るようになったこと
- パスベースルーティング:URLのパスに基いてルーティングが可能です。
- 複数ポートの登録:1つのインスタンスに複数ポートを登録することが可能です。
- コンテナアプリケーションのサポート:ECSはタスクスケジュールので未使用のポートを使用してターゲットグループに登録する事ができます。
- ターゲットグループでのヘルスチェック:CloudWatchで多くのメトリクスをサポートしています。
- アクセスログの情報追加:アクセスログに情報が追加され、圧縮形式で保存されます。
- パフォーマンス改善:パフォーマンスが向上しています。
- HTTP/2サポート:HTTP/2のリクエストを受けられるようになりました。
- WebSocketサポート:WebSocketのリクエストを受けられるようになりました。
- 削除保護:EC2と同様に削除保護ができるようになりました。
今回は、上3つに関してみてます
設定の概念
一般のLoadBalancerの設定であるように
- サーバ(EC2)作って
- サーバのグループ作って
- バーチャルサービスでLBに紐つける
って設定です
設定上グループを「ターゲットグループ」っていいます
目的
現サービスで用いているnginxの以下の機能が
代替できるか試してみる
- サブドメイン分ける
- パラメータによる振り分け
- ステージング
- メンテナンス
また、うまいこと運用できないか考えてみた
ざっくり設定図
ALBのいいとこ
- パスパターンで、ターゲットグループを変えられる
- 優先順位を付けれる
- defaultの設定は削除出来ない
- セキュリティグループの設定は、ALBではなく、EC2に紐づく
(あんま使わないかな・・・)
- ターゲットグループごとにポートを変えられる
- ターゲットグループ内のインスタンス毎にポートを変えれる
パスパターンで、ターゲットグループを変えられる
【使えるであろう想定場面】
- 時間別の高負荷等には、高スペックなインスタンスのターゲットグループを配置し、終わったら削除
- パスでバージョン管理している場合(/ver200/ or /ver210/ etc)、バージョン毎にターゲットグループ作ってユーザーをアクセスさせる
こんな感じ(/event/ の場合)
あと、こんな感じ(version管理の場合)
優先順位を付けられる
【使えるであろう想定場面】
- deployした最新のアプリは、優先順位高くすれば反映・削除すればロールバックできる
入れ替え後!!
エラーになったロールバックだ!!!
ロールバックしたら
defaultの設定は削除出来ない
【使えるであろう想定場面】
- defaultにメンテナンス設定しておけば、ターゲットグループ削除すればメンテにいれられる
メンテ入れる前
メンテ入れまーす!
メンテ中
セキュリティグループの設定は、ALBではなく、EC2に紐づく
【使えるであろう想定場面】
- 1つのALBの設定配下に、アプリ(全ユーザーアクセスOK)・管理ツール(社内のみアクセスOK)をおいてもEC2のセキュリティグループに紐づくので管理が楽
ALBが(現時点で)いけてないところ
- ホスト名でのルール分けには対応していない
- ルールにパラメータが設定出来ない
- 優先順位の入替え・変更が出来ない
- 優先順位が「1~999」の間しか設定できない
ホスト名でのルール分けには対応していない
【これが使えない】
- サブドメイン毎に、ターゲットグループを分けれない
- FP・SP(fp.***.jpとsp.***.jp)や、
iOS・Android(app-ios.***.jpとapp-ard.***.jp)など
- FP・SP(fp.***.jpとsp.***.jp)や、
ルールにパラメータが設定出来ない
【これが使えない】
uid=***
などで、ルールの振り分けが出来ない
エラー画面><
優先順位の入替え・変更が出来ない
【これが使えない】
ステージングからプロダクションに上げるぞって時に
優先順位の操作ができない
(新規で作成する必要および、現設定の削除が必要になる)
変えられない画面
優先順位が「1~999」の間しか設定できない
【これが使えない】
YYYYMMDD+番号
などで、優先順位の管理・バージョン管理ができない
ALBが(現時点で)いけてないところ
に関しては、現時点でと、
GUIでしか試していないので
CLI(awscli)では操作出来るかもです
別途検証します
考察
・サブドメイン分ける
→できない
・パラメータによる振り分け
→パラメータ・アクセス元IPでは出来ない
・ステージング
→パス操作だったらできるが現実的ではない
・メンテナンス
→出来る
今のgloopsのシステムにあてはめると、まだ、nginxが必要にはなりますね