#ELB まとめ
ELBは登録されているターゲットの状態を監視し、トラフィックが正常なターゲットのみルーティングする。不具合ターゲットを検出したら自動で停止する負荷分散サービス。
リスナーを複数設定しておくことでルーティング可能な部分に分散できる。
ELBのセキュリティグループ
ALBやCLBにはロードバランサー自身のセキュリティグループ設定がある。これには2つの働きがあり
1、クライアント→ロードバランサーのアクセス制限
2、ロードバランサ→ターゲットのアクセス制限 がある。
NLBの場合、セキュリティグループに対応しないため、ロードバランサーへのアクセス制限が出来ません。さらに、クライアントからターゲットへの直接のアクセスを抑制する手段がない。よって、クライアントから直接ターゲットへアクセスしているのか、NLBを経由して接続しているのかが区別がつかない。
NLBはIPアドレスが固定。一度アサインされたIPアドレスは固定されるので、独自ドメインを向ける先はDNS名とIPアドレスの両方が指定できる。Aレコード使用可。
ALBおよびCLBはIPアドレスが可変のためクライアントからのアクセスはDNS名を利用する必要があり、DNSで独自ドメインを向ける場合はCNAMEレコードないしALIASレコード(Route53)を設定。
通信経路...ALBとCLBはリバースプロキシと書いた通り、行き帰りともにロードバランサ
ーを介しクライアントと通信する。
NLBは、トラフィックの宛先IPをターゲットのIPに書き換えて転送する。
よって直接クライアントと通信する形となる。
AutoScaling...CPU使用率や時間を基準にサーバ数を一時的に増強して負荷に耐える。
クロスゾーン負荷分散…有効なすべてのAZの登録済みターゲットにトラフィックを分散。
「2つのAZがあり、両方にELBを設置。片側に2つのターゲット。もう片側に8つのターゲットがあるとする。クロスゾーン負荷分散が有効な場合、10個すべてに10%の負荷を与える。もしクロスゾーン負荷分散が無効であれば2つのLBに25%ずつ、8個側に6.25%を付与する。」
Route53により、リクエストが送信できる。
ELBは有効にした各AZにネットワークインターフェイスを作成し、それを使用して静的IPアドレスを取得する。必要に応じてEIPも使用可能。
HTTP接続…クラシックとALBは接続の多重化が使用される。接続の多重化を避ける場合は、HTTPレスポンスのconnection:close ヘッダーを設定してHTTPキープアライブを無効にする。
CLB…HTTP/0.9、HTTP/1.0、HTTP/1.1 のプロトコルをフロントエンド接続時使用する。
ALB…HTTP/1.0、HTTP/1.1、HTTP/2を使用。こちらもフロントエンド接続時
HTTP/2はHTTPSリスナーのみ使用。
CLB,ALB共にバックエンド接続でHTTP/1.1を使用する。
##ロードバランサー配置注意点↓
・内部向けかインターネット向けか選択する。
・インターネット向けであればパブリックIPアドレスが必要。
・インターネット向けロードバランサーのDNS名はノードのパブリックIPアドレスにパブリックに解決可能である。
・インターネット向けロードバランサーはクライアントからインターネット経由でリクエストをルーティングできる。
・内部ロードバランサーノードはプライベートIPアドレスのみを持つ。
・内部ロードバランサーのDNS名は、ノードのプライベートipアドレスにパブリックに解決
・インターネット向けも内部向けもプライベートIPアドレスを使用してリクエストをターゲットにルーティングする。よってターゲットは内部またはインターネット向けロードバランサーからリクエストを受信するためのパブリックIPアドレスを必要としない。
・AWS privateLinkを用いることでAWSサービス間のプライベート通信が行える。
※インタネット向け=VPC外と接続する場合
内部向け =VPC内で完結する通信を分散させたいとき。