ALB(Application Load Balancer)を使用してパスでインスタンスを振り分ける

2016/8/11リリースALB(Application Load Balancer)を使用してみました。

ALBにはパスなどによって、振り別けるサーバを制御する機能が付いていますので、さっそく試してみます。ワイルドカードでの指定も可能です。
※ ドメインで振り別けることはできません。

やりたいこと

前提として、Movable Typeをインストールした以下2台のEC2があることを想定してます。
DBはRDS。

  • mt-web01(master)
  • mt-web02(slave)

管理画面操作のアクセスはmt-web01へのみ割り振りたい。
こうすることで、Movable Typeの管理画面から新規作成されたファイルは必ず、mt-web01へ作成させるようにする。

  • /mt/*のアクセスはmt-web01のみへアクセスさせる。(管理画面アクセス)
  • /mt/mt-static/*のアクセスはmt-web01のみへアクセスさせる。(管理画面アクセス)

通常のアクセス(上記以外)は両方のインスタンス(mt-web01,mt-web02)へ負荷分散させたい。

ALBの作成

[マネージメントコンソールサインイン]⇒[EC2]⇒[ロードバランサー]⇒[ロードバランサーの作成]を押下します。

以下の画面が表示されるので、アプリケーションロードバランサーを選択し、[次へ]を押下します。

1.ロードバランサーの設定
名前:test-albを入力します。
VPCを選択します。

2.セキュリティ設定の構成
特に無し。

3.セキュリティグループの設定
セキュリティーグループを指定します。

4.ルーティングの設定
名前:target01
ヘルスチェックのパス:/healthcheck.txt

5.ターゲットの登録
mt-web01を選択します。

[作成]を押下します。

ロードバランサーが作成されていることを確認します。

ターゲットグループにtarget01が作成されていることを確認します。


続いて、[ターゲットグループ]の作成ボタンを押下し、target02を作成します。

基本作成の内容はtarget01と同じで、5.ターゲットの登録についてのみ、
mt-web01とmt-web02の2つのインスタンスを選択します。

ターゲットグループが作成されたことを確認します。

[ロードバランサー]⇒[リスナー]⇒[ルールを追加する]を押下します。

以下のように設定します。
優先順位は後からでも変更できます。

動作確認

アクセスログを確認し、mt-web01のみしかアクセスログが吐かれないことを確認。
新規ファイルを作成し、mt-web01へファイルが生成されることを確認。

あとは、rsync等でコンテンツの同期を取れば、冗長構成になるかと思います。

また、以下のルールでも、正常に動くことを確認済みです。
/aaa/*/ccc/*.jpg
*.jpg

EFS(Elastic File System)東京リージョンが待ち遠しい・・・。