😺

L4とL7ロードバランサーの違い

2023/02/24に公開

はじめに

L4 と L7 ロードバランサーの違いを聞かれることがあるようなので調べてみました。
https://twitter.com/sakamoto_582/status/1628588469034553344

正直ネットワーク怪しいのでおかしいところがあったら指摘してほしいです。

調べた内容

AWS

サービスを名称は下記になる。

  • ALB
    • Application Load Balancer
  • NLB
    • Network Load Balancer

同じロードバランサーでも違うものだとわかる。

ロードバンサーとは

  • 負荷分散装置。
  • 通信を複数のサーバーに振り分けてサーバーダウンを防ぐ。
  • 死活監視の機能もあり、ダウンしたサーバーに通信をしない機能がある。

L4 とか L7 ってなに

ツイートにある L4 と L7 というのは OSI 参照モデルの第 4 層(トランスポート層)と第 7 層(アプリケーション層)を指す。

トランスポート層は

この階層の主な役割としては、エラー検出・訂正と再送制御、コネクション(仮想的な専用通信路)の確立、データの並び順の整列、フロー制御、輻輳制御、アプリケーションの識別(OSI ではセッション層)などである。

アプリケーション層

アプリケーション層は最上位の階層で、利用者が操作するソフトウェアが提供する具体的な機能についての仕様や通信手順、データ形式などを定めている。OSI モデルでは利用者から入力されたデータを相手方へ送信したり、受信したデータを利用者に提示するといった役割が強調される。

結局なにで振り分けているのか

各ロードバランサーが動いてる箇所はわかった!じゃあ具体的に何をみて振り分けているか

ロードバランサー(L4)の特徴
・レイヤー 4 の負荷分散が可能です。(IP アドレスとポート番号による負荷分散が可能)

ロードバランサー(L7)の特徴
・レイヤー 7 で負荷分散が可能です。 (URL や HTTP ヘッダーで負荷分散が可能)

もっと具体的に

なんとなくわかるがきちんと言語化するために調べると...

トランスポート層には TCP/UDP プロトコルが使われており、クライアントとサーバ間での通信チャネルの提供、通信管理をしている。
通信チャンネルとはポートのこと。
だから L4 ロードバランサーではポートによって割り振ることができる。
じゃあ IP アドレスの振り分けはどうやっているかというと第 3 層のネットワーク層の IP プロトコルから取得して実現しているらしい。

アプリケーション層には HTTP プロトコルが使われ、URL、Cookie、HTTP ヘッダー、 user-agent を取得できる。
具体的な機能として

  • URL のパラメーターに付与されたパラメーターによる振り分け先の固定化
  • user-agent による PC, 携帯サイトの表示切り替えも実現

最後に

以下の表は、L4 ロードバランサーと L7 ロードバランサーの違いを簡単にまとめたものです。

項目 L4 ロードバランサー L7 ロードバランサー
処理する階層 トランスポート層 (ネットワーク層?) アプリケーション層
振り分け方法 ポートと IP アドレス URL、Cookie、HTTP ヘッダー
処理内容 単純な負荷分散 高度な負荷分散やセキュリティ機能
コスト 低い 高い
対応プロトコル TCP/UDP など HTTP, HTTPS
古の呼び名 L4 スイッチ L7 スイッチ

引用

Discussion