29
Application Load Balancer 2016 年 9 年 21 年 年年年年 年年年 年年年年 年年年年年年年年 年年年年年年年年年年年年年 年 年年

Application Load Balancer

Embed Size (px)

Citation preview

Page 1: Application Load Balancer

Application Load Balancer

2016 年 9 月 21 日

アマゾン ウェブ サービス ジャパン株式会社ソリューションアーキテクト 辻 正史

Page 2: Application Load Balancer

本資料では 2016 年 9 月 21 日時点のサービス内容および価格についてご説明しています。最新の情報は AWS 公式ウェブサイト (http://aws.amazon.com) にてご確認ください。

資料作成には十分注意しておりますが、資料内の価格と AWS 公式ウェブサイト記載の価格に相違があった場合、 AWS 公式ウェブサイトの価格を優先とさせていただきます。

内容についての注意点

AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and June vary from the estimates provided.

価格は税抜表記となっています。日本居住者のお客様がサービスを使用する場合、別途消費税をご請求させていただきます。

Page 3: Application Load Balancer

アジェンダ

• Application Load Balancer 概要• コンテントベースルーティング• 複数ポート対応と動的ポートマッピング• その他のアップデート

Page 4: Application Load Balancer

Application Load Balancer 概要

Page 5: Application Load Balancer

AWS Summit New York 2016 - KeynoteWerner Vogels が “ Application Load Balancer” を発表 !!

https://www.youtube.com/watch?v=b7yqd7z1RBQ

Page 6: Application Load Balancer

Application Load Balancer (ALB)

• 特徴 (https://aws.amazon.com/elasticloadbalancing/applicationloadbalancer/)

– レイヤー 7 のコンテントベースで、ターゲットグループに対してルーティング

– コンテナベースのアプリケーションのサポート– WebSocket と HTTP/2 のサポート– 複数のアベイラビリティゾーンに跨って、高レベルの

耐障害性を実現– ALB 自体が自動的にキャパシティを増減

• 価格体系 (https://aws.amazon.com/jp/elasticloadbalancing/applicationloadbalancer/pricing/)– ALB の起動時間– Load Balancer Capacity Units (LCU) の使用量

レイヤー7のコンテントベースのロードバランサー

アベイラビリティ ゾーン a

ユーザー

アベイラビリティ ゾーン b

ALB

EC2

myLB-xxx.elb.amazonaws.com

EC2 EC2ターゲットグループ ターゲットグループ

Page 7: Application Load Balancer

従来の ELB の位置づけ

Elastic Load Balancing ( ELB )

L4 および一部 L7 機能を提供するロードバランサ―Elastic Load Balancing ( ELB )意味として ALB/CLB を含んだ総称

Classic Load Balancer ( CLB )標準ロードバランサ―

L4 および一部 L7 機能を提供するロードバランサ―

Application Load Balancer ( ALB )アプリケーションロードバランサ―

L7 のコンテントベースのロードバランサ―

New

名称変更

Page 8: Application Load Balancer

コンテントベースルーティング

Page 9: Application Load Balancer

従来の ELB (現在の CLB )

http://www.example.com/products一つの Endpoit に対して、同一アプリケーション機能を持つ複数の EC2に負荷分散を行う

www.example.com

products 機能order 機能products 機能order 機能products 機能order 機能products 機能order 機能

Page 10: Application Load Balancer

CLB によるコンテントベースルーティング

従来の ELB のみによるコンテントベースルーティングは出来ないため、次の方式を検討

• サブドメインによるセグメンテーション• Nginx によるセグメンテーション

Page 11: Application Load Balancer

サブドメインによるセグメンテーション方式

アプリケーションを複数のサブ機能(サービス)に分割する場合、従来は複数の ELB を利用しサブドメインで Endpoint の分割を行う等が必要

order.example.com

products.example.com

products 機能

products 機能

order 機能

order 機能

CLB

CLB

Page 12: Application Load Balancer

Nginx によるセグメンテーション方式

www.example.com

products 機能

products 機能

order 機能

order 機能

NginxProxy

NginxProxy

CLBInternal

CLBInternal

パスによるルーティング

CLB

Page 13: Application Load Balancer

ALB によるコンテントベースルーティング

• 単一のロードバランサーで異なるアプリケーションへリクエストをルーティング可能

• EC2 インスタンスはターゲットグループに登録され、ルールに従いリクエストをターゲットグループにルーティング

• ターゲットグループ内で負荷分散

Page 14: Application Load Balancer

ALB によるコンテントベースルーティング

ALB を利用することで、一つの ALB の背後に複数の機能(サービス)を提供することが可能

products 機能

products 機能

order 機能

order 機能

http://www.example.com/products

パス部分のパターンでターゲットグループに振り分ける /products

/order

www.example.com

ターゲットグループ

Page 15: Application Load Balancer

複数ポート対応と動的ポートマッピング

Page 16: Application Load Balancer

CLB :コンテナ化されたアプリでの制限

• コンテナ化されたアプリケーションは、 1 つのサーバー上で、アプリごとに特定のポートを使ってサービスを提供

• ポートを分けることで、 1 つの EC2 インスタンス上で、同じアプリを複数実行することができる

• これまでの ELB では、コンテナ化されたアプリの利用に制限があった– リスナーポートとアプリケーションが 1 対 1 でマッピング– 個々のアプリケーションが使うポートを管理する必要性– EC2 インスタンス毎に 1 タスクにしか負荷分散できず、クラスタの効

率性が低い

Page 17: Application Load Balancer

CLB :コンテナ化されたアプリでの制限

タスク A

タスク A

Port 80

Port 100

タスク A

タスク A

Port 80

Port 80

インスタンス A

インスタンス A

インスタンス BCLB CLB

Page 18: Application Load Balancer

ALB の対応 : 複数ポートと動的ポートマッピング

• EC2 インスタンスをターゲットグループに割り当てる際、複数ポートを個別のターゲットとして登録することが可能

• 1 つの EC2 インスタンスに対して、複数ポートでの負荷分散が可能

• ECS の Service は、タスクが EC2 上でスケジュールされる時点で未使用のポートを選択

• ECS の Service は、自動的にそのポートでタスクをロードバランサに登録

Page 19: Application Load Balancer

ALB の対応 : 複数ポートと動的ポートマッピング

タスク A

タスク A

Port 80

Port 100インスタンス A

タスク Aタスク A

Port 80Port 100

インスタンス A

インスタンス A個別のターゲットとして、ターゲットグループに登録

ターゲットグループ

タスク APort 120

異なるポートにバランス可能

動的に追加可能

ALB

Page 20: Application Load Balancer

ALB のコンテナベースアプリケーション対応

ターゲットグループはECS コンテナをサポート。ロードバランサーのバックエンドで、 EC2 とECS コンテナの混在も可能

ターゲットグループ

TaskTask

TaskTask

EC2

EC2

ECSContainer

ECSContainer

Page 21: Application Load Balancer

その他のアップデート

Page 22: Application Load Balancer

プロトコルの追加サポートとメトリクスの改善

• WebsocketWebSocket は株価やスポーツの得点などページ内の動的なデータを配信するのに利用可能

• HTTP/2HTTP 1.1 プロトコルから多数の改善が行われ、 1 つのコネクションで上で複数のリクエストをサポート

• メトリクスの改善ヘルスチェックをポートベースで実施し、許容する HTTP のレスポンスのレンジを指定でき、詳細なエラーコードも含まれる

Page 23: Application Load Balancer

ALB のリソース( 1/2 )

• ロードバランサー – ロードバランサーを表す最上位のリソース (CLB では唯一のリソース )

• リスナー – LB側の他の接続設定と同様に、ロードバランサで Listen するポートとプロトコルを含む

• ターゲットグループ – EC2 インスタンスなどのターゲットの集合。インスタンス側の設定として、インスタンスで公開するポート、プロトコル、設定を含む

• ターゲット – ロードバランサーがトラフィックを転送するリソースやエンドポイント

• ルール – リクエストがどのように転送されるかを条件とアクションで定義。パスベースの条件で、リクエストを転送するアクションがサポートされる

Page 24: Application Load Balancer

ALB のリソース( 2/2 )

products 機能

products 機能

order 機能

order 機能

/products

/order

HTTP:80

HTTPS:443

リスナールール

ターゲット

ターゲットグループ

Page 25: Application Load Balancer

CLB と ALB の機能比較Feature Classic Load Balancer Application Load BalancerProtocols HTTP, HTTPS, TCP, SSL HTTP, HTTPSPlatforms EC2-Classic, EC2-VPC EC2-VPCSticky sessions (cookies) ✔ load balancer generatedBack-end server authentication ✔Back-end server encryption ✔ ✔Idle connection timeout ✔ ✔Connection draining ✔ ✔Cross-zone load balancing † ✔ Always enabledHealth checks † † ✔ ImprovedCloudWatch metrics ✔ ImprovedAccess logs ✔ ImprovedPath-based routing ✔Route to multiple ports on a single instance

HTTP/2 support ✔Websockets support ✔Load balancer deletion protection ✔

† ALB ではクロスゾーン負荷分散は常に有効。† † ALB では、ヘルスチェックで Healthy とみなす HTTP レスポンスコードを設定可能。 ALB ではヘルスチェック失敗の情報提供を改善。

Page 26: Application Load Balancer

料金

ALB の使用時間と、 Load Balancer Capacity Units ( LCU )の使用量で課金

• $0.0225/ 時間• $0.008/LCU/ 時間

時間単価は CLB より 10% 安価

Page 27: Application Load Balancer

Load Balancer Capacity Units ( LCU )

以下の 3 つのディメンションを測定し、使用量が最も高いディメンションのみ請求

• 新規接続数 : 1 秒あたりの新しく確立された接続数• アクティブ接続数 : 1 分あたりのアクティブ接続数• 帯域幅 : ロードバランサーで処理されたトラフィック量( Mbps )

1 LCU には次のものが含まれる

• 2 KB の証明書の場合: 1 秒あたり最大 25 個の新規接続4 KB の証明書の場合: 1 秒あたり最大 5 個の新規接続

• 1 分あたり最大 3000 個のアクティブ接続• 最大 2.22 Mbps の帯域幅

Page 28: Application Load Balancer

移行ツール

Classic load balancer to Application load balancer copy utility

https://github.com/aws/elastic-load-balancing-tools

既存のクラシックロードバランサと同じ設定で、新しいアプリケーションロードバランサを作成可能

Page 29: Application Load Balancer