20150513のAWS Black Belt Techシリーズ(Elastic Load Balancing)

aws.amazon.com

www.slideshare.net

何点かピックアップします。

ELBの対応範囲

Multi AZ

※Multi Regionで、ヘルスチェックして冗長化したい場合はRoute53の設定でやります
※ELBは配置するサブネットの指定が必要です

ELB自体

負荷に応じて、キャパシティを自動増減

※スケーリングする際にIPアドレスが変わります
※このため、ELBはIPではなく、Public DNSしか、割り振られていないのですね。なるほど。
※内部的には負荷ゾーンによって、切り替えているのではと想定しています。
※瞬間的なアクセスの急増時には503(Service Unavailable)が返ってくることがあるようです
※事前に予測できる場合はPre-Warmingの設定を申請する

ELBの連携サービス

Auto Scaling
Route53
Cloud Formation

2段階で負荷分散

Route53でDNSラウンドロビンを使用

※1.総アクセスの何%はAZ-1aのELBへ、残りはAZ-1bへ振り分ける
※2.さらに各AZ内でEC2インスタンスへ負荷分散

料金の注意点

Multi AZ,SSL設定は時間あたりの料金に影響しない

※ELBの料金が高いので、Multi AZやめたりしましたが、料金は変わらないという。。
※HTTP2的にはhttpsの方がマルチパイプライン化で高速化するので、SSLの方がいいような

独自ドメイン使いたい

Route53のエイリアスレコードセットを使用する

※AレコードのAliasを使用します

クライアントIPの取得

X-Forwarded-Forヘッダー使う

AZ間のEC2インスタンス対称性

インスタンスタイプ、インスタンスの数を揃える

ELBのコネクションタイムアウト

デフォルト60秒

※60秒以上見られるページはないと思うので、そのままでいいような
※逆にこれを大きくするとELB側ではコネクションを保持する負荷が上がる

VPCとELB

各AZにひとつELB用のサブネットを作成する

SSL関連

サーバー証明書はELBに配置する
ELBとEC2はHTTP

※ELB⇔EC2の負荷をオフロードできる
※EC2にサーバー証明書を置かなくて済む

スティッキーセッション

デフォルトOFF
セッション有効期限はアプリケーション制御 or ELB制御

※セッション情報はDBかキャッシュサーバーに持つ(Auto Scalingのため)
※セッション情報をEC2に持っているとONしないいけなくなってしまうので、要注意です

ELBへのアクセスログをS3に自動保管

http://docs.aws.amazon.com/ja_jp/ElasticLoadBalancing/latest/DeveloperGuide/access- log-collection.html

EC2 Container Serviceによる負荷分散

コンテナA:EC2の80番ポート
コンテナB:EC2の9000番ポート

※EC2インスタンス内の各コンテナに振り分ける

AWS Trusted Advisor

LBのチェック項目追加
セキュリティとフォールトトレランスを チェックする項目追加

ELBの理解に必要な要素

・ELBはどこに置かれるか
・ヘルスチェック
・SSL証明書はどこにおくか
・ユーザー⇔ELB⇔EC2間それぞれのプロトコルは何にするか
・セッションに関してはどのように処理するか
・負荷分散の方法(DNSラウンドロビン、EC2 Container Service)