Elastic Load Balancingって何?
- アプリケーションへのトラフィックを複数のターゲット(Amazon EC2インスタンス、コンテナ、IPアドレス等)に自動的に分散するロードバランサー
- 負荷分散や耐障害性を高めるために使用する。
- ALB(Application Load Balancer)、NLB(Network Load Balancer)、Classic Load Balancer(CLB)の3種類がある。
参考・リンクまとめ
出題傾向
論点はそんなに多くないと思います。主に下記3点です。
- 3種類のELBの内容・特徴・差異
- 2種類あるヘルスチェックの内容・特徴・差異
- Auto Scalingとの組み合わせ
3点目にもあるとおりELBはAutoScalingと組み合わせて出題されるケースが極めて多いです。
「ELBの背後にあるEC2インスタンスのAuto Scalingグループ」という表現、前提条件は何度も模試や試験の中にも出てきますので、必ず抑えるようにしましょう。
上記さえ抑えれば、いくつも論点のあるサービスではありませんので、覚える事は少ないかとは思います。ただ、3点目のような問題は問題文にも慣れて置く必要があるかと思います。
出題ポイント
ELBの種類
- ELBは3種類(CLB,ALB,NLB)がある
- ユースケースや機能はそれぞれ異なる。
参考・リンクまとめ
このあたりが問われます!!
ELBはCLB,ALB,NLBの3種類がありますが、それぞれについてユースケースと共に愚直に暗記しましょう。
なお、リリースの順番はCLB→ALB→NLBとなっているため、CLBは他に比べ機能が乏しくなっています。
絶対暗記!!
種類 | 特徴 | IPアドレス | ユースケース |
CLB (Classic Load Balancer) | L4/L7リバースプロキシ TCP、SSL、HTTP、HTTPSに対応 | IPアドレスが可変のため、DNSの利用が必要 | EC2-Classicネットワーク(VPCよりも前のネットワーク)を利用している場合 |
ALB (Application Load Balancer) | L7リバースプロキシ ※1 HTTP、HTTPSに対応 | IPアドレスが可変のため、DNSの利用が必要 | 後続のEC2がHTTP/HTTPSを利用する場合。 |
NLB (Network Load Balancer) | L4 NATロードバランサ TCPに対応 | 固定IPのため、DNSとIPを利用できる | ・IPを固定したい場合 ・非常に高負荷なリクエストが予想されるサービス※2 |
- ※1:SAAの問題文の中で「負荷分散をアプリケーション層(L7)で・・・」というような言い回しが出てきますが、この場合、基本的にALBの事を指しています。
- ※2:ALB/CLBはクライアントからのリクエストとレスポンスのトラフィックが通過しますが、NLBは、宛先IPを置き換えるだけなのでクライアントからのリクエストトラフィックのみが通過します。したがって、NLBは1秒に数万~数百万のリクエストを処理することができます。
ALB vs CLB
- ALBはCLBに比べて、コスト面や負荷分散機能に優れる
- パスベース、ホストベースのルーティングをベースに、ALBとCLBの違いを理解する
このあたりが問われます!!
ALBとCLBは似ているようですが、格段に改良がなされています。たとえば、ここで紹介する『パスベースのルーティング』、『ホストベースのルーティング』において、ALBはCLBと比較してもあっとうてきに利用しやすく、コストも抑えられるようになっています。
『パスベースのルーティング』、『ホストベースのルーティング』の特徴を抑えながら、ALBの便利さを学習してください。
- パスベースのルーティング
URLに基づいてリクエストを転送するルーティング形式を、パスベースのルーティングといいます。たとえば、
https://example.com/aaa
https://example.com/bbb
https://example.com/ccc
という3つのURLで公開されているWebアプリケーションがあるとします。このURLに対して、CLB/ALBを用いて振り分けを行う場合、複数のURLに対応していないCLBは、3台必要です。一方で、ALBであれば1台でルーティングが可能です。
- ホストベースのルーティング
httpヘッダ内のホストフィールドに基づいてリクエストを転送するルーティング形式を、ホストベースのルーティングといいます。たとえば、
https://www_A.example.com/
https://www_B.example.com/
https://www_C.example.com/
という3つのサーバで公開されているWebアプリケーションがあるとします。このURLに対して、CLB/ALBを用いて振り分けを行う場合、パスベースのルーティングと同様に複数のURLに対応していないCLBは、3台必要です。一方で、ALBであれば1台でルーティングが可能です。
暖機運転/暖機申請
- 急激な負荷上昇にあわせて、ELBのスケーリングまでのタイムラグを最小化する手段として暖機運転がある
- 暖機運転は予め、申請が必要になる
- NLBだけは暖機運転なしでも、数百万リクエスト/秒にも対応可能なので暖機運転の必要なし
このあたりが問われます!!
ELBは、その負荷に応じて自動でスケーリングします。ただし、例えばキャンペーンの開始時など、リクエスト数が急増し、急激に負荷がかかるときなどは、ELBのスケーリングが間に合わないときがあります。そういったケースに備え、暖機運転(Pre-Warming)を行うことができます。暖機運転は、ELBのコンソールから設定できません。AWSサポートに申請を行うことで暖機運転が可能です。
また、AWSのサポートプランは、ビジネス以上である必要があります。
※サポートプランについては以下をご参照ください
- AWS公式:サポートプラン
EC2 Auto Scalingのヘルスチェック
- ELBの背後にあるEC2の状態確認が可能
- 主にデフォルト設定の「EC2のヘルスチェック」と、設定次第で有効となる「ELBのヘルスチェック」がある
参考・リンクまとめ
- Auto Scaling グループへの Elastic Load Balancing ヘルスチェックの追加
- Auto Scaling インスタンスのヘルスチェック(見出し「インスタンスのヘルスの確認」部分を参照)
このあたりが問われます!!
Auto Scaling グループのヘルスチェックは以下の3つです。ただし、出題は、ほとんど「EC2のヘルスチェック」と「ELBのヘルスチェック」からです。
- EC2のヘルスチェック(「EC2ステータスチェック」と表現される場合あり)
- ELBのヘルスチェック(「ELB健全性チェック」と表現される場合あり)
- カスタムチェック
Auto Scaling グループのデフォルトのヘルスチェックは、EC2のステータスチェックのみですが、ELBのヘルスチェックをAuto Scalingグループに設定すると、EC2のステータスチェックとELBのヘルスチェックいずれかに合格しない場合に異常とみなされます。(つまり両方合格して、正常とみなされます。)
EC2のAuto Scalingの状況が正常か異常かを判断する為に、EC2のヘルスチェック、カスタムヘルスチェックと合わせて、ELBのヘルスチェック結果を活用することができますが、このトピックも度々、出題されます。
絶対暗記!!
- Auto Scaling グループのデフォルトのヘルスチェックは、EC2のステータスチェックのみですが、ELBのヘルスチェックをAuto Scalingグループに設定すると、EC2のステータスチェック、とELBのヘルスチェックいずれかに合格しない場合に異常とみなされます。
- EC2ヘルス(ステータス)チェックの判断基準:
pingを定期的にインスタンスに送って、正常の場合はInService
、不健全のインスタンスはOutOfService
とする - ELBヘルス(健全性)チェックの判断基準:
インスタンスステータスがrunning以外
(つまり、stopping
、stopped
、terminating
、terminated
)の場合、または、システムステータスがimpaired
である場合は異常とみなす。
Connection Draining(コネクションドレイニング)
- バックエンドのサーバがELBから離脱してもセッションを持ち続ける機能
このあたりが問われます!!
コネクションドレイニングの意味とユースケースさえ覚えておけば、試験対策としては十分です。
絶対暗記!!
バックエンドのEC2などを、ELBからいきなり登録解除すると、コネクションを利用しているアプリケーションは突然503等のエラーになってしまい、ユーザーが利用中であれば影響が出てしまいます。そのため、バックエンドのEC2を登録解除しても、処理中のリクエストが終わるまで一定期間待つのが、コネクションドレイニング機能です。
Sticky Session(スティッキーセッション)
参考・リンクまとめ
※上記、リンクの「スティッキーセッションとは何か」が非常にわかりやすいです。
このあたりが問われます!!
Sticky Session(スティッキーセッション)とは、簡潔にまとめればセッションの維持を行う機能です。実現方法(有効期限ベースで実現する方法と、Cookieで実現する方法)やユースケースについて抑えておきましょう。
絶対暗記!!
- ELBによって、クライアントからのリクエストを毎回同じインスタンスに転送する機能をスティッキーセッションといいます。
- 設定方法は、任意の有効期限を指定する方法と、アプリケーションのCookieに従う方法の2種類があります。
- 有効期限を指定する場合、指定した時間のあいだ、同一インスタンスとのセッションを維持し続けます。有効期限の値を設定しないこともできます。その場合、クライアント側でCookieを削除しない限り永続的にスティッキーセッションが維持されます。
SSL終端機能
- SSLとはインターネット通信において広範に利用されている、暗号化プロトコルのこと
- ALB、CLBはSSLの終端になる機能を持つ
参考・リンクまとめ
このあたりが問われます!!
SSL終端機能のユースケースを覚えておきましょう。また、NLBはSSL終端機能を持ちません。
SSL終端とは、ネットワークの構成要素において、SSLサーバ証明書を格納し、通信の暗号化や復号を行う部分のことを言います。
絶対暗記!!
- クライアントからELBまでをSSLとし、ELBからバックエンドのEC2などへの通信を平文の通信(HTTP)とすることができます。
- ELBに対してサーバ証明書をアップロードすることで、SSL通信が可能です。
- ただし、証明書の期限等を管理する必要があるため、ACM(AWS Certificate Manager)というサービスで発行した証明書をELBにインストールすことができます。この場合、証明書の期限はAWS側で自動更新されます。
※参考 AWS公式:AWS Certificate Manager