L4ロードバランサーとL7ロードバランサーの違いについてです。
■L4ロードバランサーの特徴
・送信元IP、送信元ポート、宛先IP、宛先ポート、プロトコルの5つ(5タプルハッシュ)の条件を利用して振り分け先を決めます。
※ IPとかポートの世界の話なので、L4ロードバランサーと呼ばれます。
・TCPコネクションが続く限りは同じ振り分け先に通信が届きます。
TCPコネクションが切れると、振り分け先が変更される可能性もあります。
※UDPはコネクションレス
・SSL終端はできません。(L4なので)
・L4ロードバランサーではTCPコネクションは終端せず、接続元クライアントと接続先バックエンドサーバ間で一つのコネクションが利用されます。
※L7ロードバランサーの場合には、二つのコネクションが張られます。
・接続元クライアントから見たとき、接続先IPはL4ロードバランサーのIPです。(ここまではL7ロードバランサーと一緒です。)
L4ロードバランサーに届いた通信はバックエンドサーバに届きますが、
その際の接続元IPは
①「接続元クライアントになる場合(宛先NAT。ロードバランサーが宛先アドレスを変換する)」
②「L4ロードバランサーになる場合(送信元NAT。ロードバランサーが送信元アドレスを変換する)」
の2つがあります。
※どちらを使うかは設定次第です。
・L4ロードバランサーで宛先NATを利用する場合、バックエンドサーバのデフォルトゲートウェイはL4ロードバランサーに向ける必要があります。(非対称ルーティングを避ける必要があります。)
・AWSだとNLB、AzureだとLoadBalancerです。
■L7ロードバランサーの特徴
・URLのドメイン名(ホストベース)やパス名(パスベース)により振り分け先の決定を行います。
※アプリケーション層の話なので、L7ロードバランサーと呼ばれます。
・ホストベース、パスベースで振り分け先が決定されるため、基本的には同じ振り分け先が使われ続けます。
※振り分け先がサーバA,サーバBのように2つ以上設定されている場合には、ロードバランサーに設定した振り分けルール(ラウンドロビンやURLルーティング、等)に基づいて通信が届きます。
・SSL終端できます。(L7なので)
・接続元クライアントから見たとき、接続先IPはL7ロードバランサーのIPです。(ここまでは、L4ロードバランサーと一緒です。)
L7ロードバランサーに届いた通信はバックエンドサーバに届きますが、バックエンドサーバが認識する接続元IPはL7ロードバランサーです。
※バックエンドサーバで接続元クライアントのIPを知りたい場合には、X-Forwarded-Forヘッダーをバックエンドサーバで利用するように設定する必要があります。
・TCPコネクションは以下の通り2つ張られます。
①「接続元クライアント ⇔ L7ロードバランサー」
②「L7ロードバランサー ⇔ バックエンドサーバ」
※L4ロードバランサーは「接続元クライアント ⇔ バックエンドサーバ」となり一気通貫になっています。
・AWSだとALB、AzureだとApplicationGatewayです。
■注意
一般的なL4ロードバランサー、L7ロードバランサーについて記載しております。
そのため、AWSのELB、AzureのLoadBalancer/ApplicationGatewayの内容と異なる内容のものもあります。
各クラウドの各サービスの詳細は公式ページ等をご確認ください。
以上です。