Help us understand the problem. What is going on with this article?

AWSのALBがリリースされたので触ってnginxの機能の代わりになるか試してみた

More than 3 years have passed since last update.

AWSのALBがリリースされたので触ってnginxの機能の代わりになるか試してみた

by t_kawamura
1 / 30

概要

AWSでALB(Application Load Balancer)が
2016/8/11にリリースされたので試してみた

AWS Application Load Balancer


設定方法・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の以下の機能が
代替できるか試してみる

  • サブドメイン分ける
  • パラメータによる振り分け
  • ステージング
  • メンテナンス

また、うまいこと運用できないか考えてみた


ざっくり設定図

001.png


ALBのいいとこ

  • パスパターンで、ターゲットグループを変えられる
  • 優先順位を付けれる
  • defaultの設定は削除出来ない
  • セキュリティグループの設定は、ALBではなく、EC2に紐づく

(あんま使わないかな・・・)

  • ターゲットグループごとにポートを変えられる
  • ターゲットグループ内のインスタンス毎にポートを変えれる

パスパターンで、ターゲットグループを変えられる

【使えるであろう想定場面】

  • 時間別の高負荷等には、高スペックなインスタンスのターゲットグループを配置し、終わったら削除
  • パスでバージョン管理している場合(/ver200/ or /ver210/ etc)、バージョン毎にターゲットグループ作ってユーザーをアクセスさせる

こんな感じ(/event/ の場合)

002_1.png


あと、こんな感じ(version管理の場合)

003.png


優先順位を付けられる

【使えるであろう想定場面】

  • deployした最新のアプリは、優先順位高くすれば反映・削除すればロールバックできる

こんな感じから切替えすると
011.png


入れ替え後!!

012.png

エラーになったロールバックだ!!!


ロールバックしたら

013.png


defaultの設定は削除出来ない

【使えるであろう想定場面】

  • defaultにメンテナンス設定しておけば、ターゲットグループ削除すればメンテにいれられる

メンテ入れる前

014.png

メンテ入れまーす!


メンテ中

015.png


セキュリティグループの設定は、ALBではなく、EC2に紐づく

【使えるであろう想定場面】

  • 1つのALBの設定配下に、アプリ(全ユーザーアクセスOK)・管理ツール(社内のみアクセスOK)をおいてもEC2のセキュリティグループに紐づくので管理が楽

ALBが(現時点で)いけてないところ

  • ホスト名でのルール分けには対応していない
  • ルールにパラメータが設定出来ない
  • 優先順位の入替え・変更が出来ない
  • 優先順位が「1~999」の間しか設定できない

ホスト名でのルール分けには対応していない

【これが使えない】

  • サブドメイン毎に、ターゲットグループを分けれない
    • FP・SP(fp.***.jpとsp.***.jp)や、 iOS・Android(app-ios.***.jpとapp-ard.***.jp)など

ルールにパラメータが設定出来ない

【これが使えない】
uid=***
などで、ルールの振り分けが出来ない


エラー画面><

004.png


優先順位の入替え・変更が出来ない

【これが使えない】
ステージングからプロダクションに上げるぞって時に
優先順位の操作ができない
(新規で作成する必要および、現設定の削除が必要になる)


変えられない画面

006.png


優先順位が「1~999」の間しか設定できない

【これが使えない】
YYYYMMDD+番号
などで、優先順位の管理・バージョン管理ができない


005.png


ALBが(現時点で)いけてないところ

に関しては、現時点でと、
GUIでしか試していないので
CLI(awscli)では操作出来るかもです

別途検証します


考察

・サブドメイン分ける
→できない
・パラメータによる振り分け
→パラメータ・アクセス元IPでは出来ない
・ステージング
→パス操作だったらできるが現実的ではない
・メンテナンス
→出来る

今のgloopsのシステムにあてはめると、まだ、nginxが必要にはなりますね

t_kawamura
I'm Infrastracure Engineer!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした