本記事について
この記事では3回目のANS-C01を受けるにあたって勉強した内容を整理するための記事です。
詳しくはこちらをご覧ください。
今回はELBの記事となります。
主にALBとNLBについて触れます。GLBについては別記事を作成予定です。
ロードバランサ―とは
サーバーの処理を分散させるための装置。
ロードバランサーの英字は「Load Balancer」だが、
Loadは負荷、
Balancerはバランス、を意味する。
リクエスト(ソース)とサーバー(ターゲット)の通信の間にロードバランサを噛ませることでサーバーの負荷分散(ルーティング)を行う役割がある。
AWSマネージドのロードバランサの総称をELB(Elastic Load Balancer)と呼び、具体的には以下4つがある。
- CLB(Classic LoadBalancer)
- ALB(Application LoadBalancer)
- NLB(Network LoadBalancer)
- GLB(Gateway LoadBalancer)
ANS-C01ではあまりCLBについて触れられないのでALB、NLB、GLBについて記載する。(GLBは別記事で記載予定)
ALBについて
ALBは OSI7層モデル における、第7層(アプリケーション層)に当たるトラフィックを制御するためのサービス。
ターゲットについて
ALBのターゲットとして利用できるのは以下サービス
- EC2, Auto Scaling
- Lambda
- Fargate
- EKS
- ECS
- IP Address
ルーティング方法について
HTTP等のアプリで使用する情報を元に使用したルーティングルールの設定が可能。
HTTP情報に基づいたルーティングルールは以下のようなものがある。
- ホストベースルーティング
- パスベースルーティング
- クエリ文字列ルーティング
- HTTPヘッダー
- HTTPメソッド
- IPアドレス
各ターゲット事の重み付けも可能
ヘルスチェックについて
ターゲット対象の正常性をおこなうためにHTTP / HTTPSプロトコルを使用してヘルスチェックを行うことが出来る。
ヘルスチェックとしてのリクエストを送信し、HTTPステータスが200となれば正常とみなす。
(ヘルスチェックのリクエスト送信先も指定可能)
ALB独自機能
- ALBの前にWAF設置可能
- 認証機能をALBに設定可能。Cognitoはもちろんフェデレーションなどの外部認証も利用可能
- ALB自体のIPアドレスは動的に変化するため注意
- セキュリティグループ設定可能
NLBについて
ALBは OSI7層モデル における、第4層(トランスポート層)に当たるトラフィックを制御するためのサービス。
ターゲットについて
NLBのターゲットとして利用できるのは以下サービス
- EC2, Auto Scaling
- Fargate
- EKS
- ECS
- IP Address
- ALB
ALBと比べると、Lambdaが未対応
しかし、ターゲットとしてALBを指定できるためNLBでALB指定、ALBでLambda指定等でできなくはない。
NLBでALBを指定するケースは ALB使いたい、でもALBのIPアドレスを固定させる必要がある時 等
詳しくはこちらを参照
ルーティングについて
ALBのような細かなルーティング設定はできない。
その代わり高可用性、高スループット、低レイテンシなルーティングが可能。
ヘルスチェックについて
HTTP / HTTPSプロトコルに加えて、TCPによるヘルスチェックが可能
※ヘルスチェックは自動回復機能なし、送信をやめるだけ。
NLB独自機能
- NLB自体のIPアドレスを静的に指定可能
- セキュリティグループ設定不可
- 送信IPアドレスの保持が可能
- ターゲットグループまで送信元クライアントのIPアドレス、ポート情報を保持することが出来る。
NLB,ALB共通機能
-
証明書インストールが可能
- 対象のリージョンでインストールを行う。(CloudFrontの場合はus-east-1で登録する)
-
ステッキーセッションの設定が可能
- 詳細はこちら
-
設定するサブネットのIPアドレスの空きが8個以上ないと作成不可
- 最低限/27以上のサブネットでないとALB、NLBを作成できない。
-
NLBに登録されていないが、ターゲットグループには登録されているAZにEC2には、ELBからの通信は行われない。
- NLBにもアベイラビリティゾーンを追加する必要がある。