ALBとELB
ALB(ApplicationLoadBalancer)
機能
Application Load Balancer の詳細
- パスベースルーティング
- AkamaiのProxyPathみたいにパスでルーティングできる
- コンテナ化されたアプリケーションのサポート
- ECS(EC2 ContainerService)と連携する?
- HTTP/2サポート
- WebSocketサポート
- StickySessionの強化
- ヘルスチェックの強化
- インスタンスのヘルスチェックは従来通りHTTP/HTTPSでping
- 期待するレスポンスコードが指定できるようになった(200〜299複数)
- CloudWatchのメトリクスが細かくわかるようになった(ターゲットグループ単位とか)
- 高可用性
- レイヤー 7 の負荷分散
- ウェブアプリケーションファイアウォール
ELBとの大きな違い
- パスベースルーティング機能
- ELBは直接インスタンスをぶら下げる形だが、ALBはターゲットグループというグループでインスタンスを束ねてそれを紐つける。そのターゲットグループに対してルーティングを決定する。ターゲットグループがインスタンスの死活監視をする役目
価格
- ELBとは料金の発生に変更がある
- 1時間あたりの料金(ELBに較べて10%引き)
- LCU(ロードバランサーキャパシティーユニット)時間あたりの料金
- LCU詳細
- トラフィックを処理する下記の3つの要素の1時間あたりの平均のうち最も高いもので決定する
* 1LCUに含まれる要素
1 秒あたり最大 25 個の新規接続
1 分あたり最大 3000 個のアクティブ接続
最大 2.22 Mbps(1時間で約1GBの転送量)
- ELBに比べて金額のシミュレーションが難しくなった
- ELBは転送量が課金対象だったが、帯域に課金が変わったので使用量が増加する可能性
- ただ、時間辺りの料金が下がったのでELBに比べて大きく変動はないかも?
- HTTP/2やWebSocketは接続しっぱなしになるため料金体系がかわったのでは?とのこと
雑感
- 特別な用途(Websocket、HTTP/2)でなければELBで問題ないと思われる
- パスパターンでAPIのバージョンやロケールで向き先を変更するみたいな運用があるかもしれないが、構成が複雑になるのでおすすめできないと思うが、スパイクするURLと時間がわかっていれば、スポット的にターゲットグループを割り当ててそちらに向かせるなどもありかも。イベントとか
- ELBと比べてどの程度、料金が変わるのか難しい
- 機能が足りてるなら、費用によってはELBのほうが安価になるケースも有るのかも?