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

SAA試験ELBの基本機能

SAA-C02の模試を受け55%ほどしか点数が取れませんでした。
勉強に使用していた資料はSAA-C01用のものだったので、不足分を補うためにBlack Beltを試聴しました。

参考にした資料

AWS Black Beltの資料をまとめました
YouTubeでBlack Beltをみると資料の一部訂正なども入っていたので、pdfのみではなく動画で一度視聴していただいた方がいいかもしれません
https://d1.awsstatic.com/webinars/jp/pdf/services/20191029_AWS-Blackbelt_ELB.pdf

ELB概要

ELBを導入するメリット 

負荷分散してスケーラブルなシステム構築が可能
ELB自体も負荷の増減に応じて自動的にスケールする

ELBの種類

Aoolication Load Balancer(ALB)
Network Load Balancer(NLB)
Classic Load Balancer(CLB)
※この記事ではカッコ内の略称で記述します

ELBの基本性能

ELBの種類によって使用できない設定もあるので注意
使用できるELBの種類をタイトルの横に記述してあります

複数のアバイラビリティーゾーン(AZ)に分散【ALB/NLB/CLB】

ELBは正確には二段階で負荷分散を行っています
1.DNSラウンドロビンで各AZ内のELBに振り分ける
2.負荷が均等になるようにEC2に振り分けを行う(ELBの種類により振り分けを行うアルゴリズむが異なる)

アルゴリズムの種類

ALB NLB CLB
ラウンドロビンルーティング フローハッシュアルゴリズム TCP:ラウンドロビン,HTTP/HTTPS:hte least outstanding requests routing algorithm

クロスゾーン負荷分散【ALB/NLB/CLB】

リージョン内の複数AZ内に負荷分散可能
複数リージョンへの分散にはRoute53を併用
AZごとのEC2インスタンス数が異なってもクロスゾーン負荷分散によりすべての負荷分散を均等にできる

クロスゾーン負荷分散のデフォルト設定

ALB NLB CLB
デフォルトで有効 デフォルトで無効 デフォルトで有効

同一インスタンスへの複数ポートに負荷分散【ALB/NLB】

・EC2インスタンスをターゲットに割り当てる際に複数のポートを個別のターゲットとして登録することが可能
・一つのインスタンスに対して複数ポートで負荷分散することが可能
・コンテナ用いる際には、同一インスタンス上で複数のコンテナをを運用する必要があるので有効
・ECSを利用の場合には動的ポートマッピング機能を利用できる

IPアドレスをターゲットに指定【ALB/NLB】

オンプレミス のサーバーにも負荷分散を行う場合、Direct Connectなどでオンプレサーバーと接続を行いIP指定で負荷を分散することが可能。

ELBのモニタリング・ログ

ヘルスチェック【ALB/NLB/CLB】

ELBは正常なターゲットのみにトラフィックをルーティングする
ELBは設定値に基づき、ターゲットに対してヘルスチェックを定期的に行い正常なターゲットかを判定する
正常判定が厳しすぎるとインスタンスが使えるまでに時間がかかり、逆に異常との判定が厳しすぎても、過負荷時に処理できるインスタンスを減らしてしまうことにもなる

設定 説明 設定例
プロトコル(HealthCheckProtocol) ターゲットにヘルステェックをジックするときにロードバランサーが使用するプロトコル HTTPで200が返るのを確認
ポート(HealthCheckPort) ターゲットでヘルスチェックを実行するときにロードバランサーが実行するポート。デフォルトは各ターゲットがロードバランサーからトラフィックを受信するポート トラフィックポート
パス(HealthCheckPath) ヘルチェックのターゲット送信先であるpingパス。デフォルトは/ /index.html
タイムアウト時間 ヘルスチェックを失敗とみなす、ターゲットからレスポンスのない時間範囲は2~120秒 5秒
正常のしきい値(HealthyThresholdCount) 異常なターゲットが正常とみなされるまでに必要なヘルスチェックの回数 5
非正常なしきい値(UnhealthyThresholdConut) ターゲットが異常とみなされるまでに必要なヘルスチェックの回数 2
間隔 個々のターゲットのヘルスチェックの概算期間 30秒
成功コード ターゲットから正常なレスポンスを確認するために使用するHTTPコード 200

運用のモニタリング【ALB/NLB/CLB】

cloudWatchによりELBのメトリクスを60秒間隔で監視可能
統計情報として平均(average)、合計(sum)、最大値(max)、最小値(min)などを表示できるが各メトリクスによってどの統計で監視するかが適切かはことなるので注意

設定 説明 設定例
HealthHostCount 正常なバックエンドホスト数
UnHealthHostCount 異常なバックエンドホスト数
RequestCount リクエスト数
Latency 遅延時間
HTTPCode_ELB4XX、HTTPCode_ELB5XX ELBが返した4XX,5XXのレスポンス数
HTTPCode_Backend_2XX,HTTPCode_Backed_3XX,HTTPCode_Backed_4XX,HTTPCode_5XX バックエンドが返した2XX,3XX4XX,5XXレスポンス数
BackendConnectionErrors バックエンドへの接続エラーの回数
SurgeQueueLength バックエンドへの保留中の件数
SpilloverCount キュー溢れのため拒否した件数

アクセスログの記録【ALB/NLB/CLB】

最短5分間隔でELBのアクセスログを取得可能
指定したS3バケットに簡単にログを自動保管
ELBの種類によってアクセスログの出力フィールドも異なる

コネクション

コネクションタイムアウト【ALB/NLB/CLB】

無通信状態が続くとコネクションが自動で切断する

ALB NLB CLB
デフォルト:60秒 350秒固定 デフォルト:60秒

ALB/CLBのコネクションタイムアウト値は変更が可能
1~4000秒の間で自由に設定可能

Connection Draining(登録解除の遅延)【ALB/NLB/CLB】

バックエンドからEC2インスタンスをELBから登録解除したり、ヘルスチェックが失敗した際に新規リクエストの割り振りは中止して、処理中のリクエストは終わるまで一定期間待つ
・全てのELBでデフォルトで有効、タイムアウト300秒
・タイムアウト最大3600秒

スティッキーセッション【ALB/CLB】

同じユーザーからきたリクエストをすべて同じEC2インスタンスに送信

・アプロケーションでのsession情報、一時ファイルなどをEC2インスタンスに保持する構成の場合に必要
・デフォルトでは無効、利用するためには有効にする
・HTTP/HTTPSでのみ利用可能

スティッキーセッションを使わない設計が理想
EC2インスタンスの増減を柔軟に対応できるように、session情報などは別のDBサーバーやキャッシュサーバーに持たせる設計が望ましいため。
この場合スティッキーセッションは不要。

ロードバランサーによって生成されるクッキーを使用したスティッキーセッション【ALB/CLB】

・session開始からの有効期間を指定してELBで制御
・無制限にすることも可能(無制限でもブラウザを閉じれば終了)

アプリケーション生成のクッキーを使用したスティッキーセッション【CLB】

・アプリケーションが作成したcookieに合わせる
・アプリケーションが作成するcookie名を指定

セキュリティ関連

SSL/TLS Termination

ELB側でSSL/TLS認証ができる

通信パターン
1.ELBでSSL Terminationし、バックエンドとはSSLなし
2.ELBでSSL Terminationし、バックエンドとは別SSL
3.SSLをバイパスしてバックエンドTCPで送信

ユーザー→ELB ELB→バックエンド
HTTPS HTTP
HTTP/SSL HTTPS/SSL
TCP TCP

HTTPS/SSL利用時のTLSサーバー証明書【ALB/NLB/CLB】

AWS Certificate Manager(ACM)を使用すれば証明書のリクエスト、管理更新、プロビジョニングが容易に実行可能
・無料で証明書を利用可能(ACMと統合されているELB、Amazon cloud front,Amazon API Gateway)に対してのみ
・証明書は自動更新されるので失効の心配がない
・ACMで発行される証明書はドメイン認証タイプの証明書なのでより上位の証明書(OV,EV)を利用する場合にはサードパーティ製の証明書を取得してインポートして利用

SNIでの複数TLS証明書のスマートセクション【ALB/NLB】

複数の証明書を一つのALB/NLBのListenerに設定可能
・SNIをサポートするクライアントには、適正な証明書を選択してTLSで通信をできる

ALB毎に最大25 証明書まで(デフォルトを除く)
・ACMまたはIAMの全ての証明書が利用可能

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