LVSロードバランサ(LVSの概要、3つの動作モード、10種類のスケジューリングアルゴリズム)

Linux Virtual Server(LVS)は、ネットワークトラフィックを複数のサーバーに分散して、システムの可用性、信頼性、パフォーマンスを向上させる、高性能で拡張性の高いロードバランサーです。

LVS には、NAT モード、DR モード、TUN モードの 3 つの動作モードがあります。

  1. NATモード:クライアントからのリクエストパケットの送信元IPアドレスをLVSロードバランサが改ざんして、バックエンドのリアルサーバに転送した後、バックエンドからのレスポンスパケットをLVSロードバランサがクライアントに転送します。
  2. DRモード: このモードでは、LVSロードバランサーはパケットの転送ノードとしてのみ機能し、パケットの送信元IPアドレスを変更しない。クライアントから要求されたパケットは、バックエンド側のリアルサーバーに直送され、バックエンド側のサーバーは応答パケットをクライアントに直送する。
  3. TUNモード:このモードでは、LVSロードバランサがカーネル内に仮想IPアドレスを作成してクライアントからのリクエストを受け付け、バックエンドの実サーバーに転送します。バックエンドサーバーはレスポンスパケットをLVSロードバランサに返し、ロードバランサはクライアントに転送します。

LVSでは、クライアントリクエストをどのバックエンドサーバに転送するかを決める、さまざまなスケジューリングアルゴリズムを提供します:

  1. リクエストを順番に各サーバーに転送するラウンドロビン(Round Robin)。
  2. 接続数が少ないサーバーへリクエストを転送する
  3. 重み付きラウンドロビン:サーバの重み付けに応じて処理するリクエストの割合が決まる。
  4. 加重最小接続(Weighted Least Connection):サーバの重みと現在の接続数に基づき、接続数が最も少なく、重みが高いサーバへリクエストを振り分ける。
  5. クライアントのIPアドレスをハッシュ計算することで、同一サーバにリクエストを送信するソースIPハッシュ。
  6. クライアントのIPアドレスとポートからハッシュ計算を行い、同一のサーバーへリクエストを振り分ける。
  7. 宛先IPハッシュ:宛先サーバのIPアドレスを基にハッシュ計算を行い、リクエストを同一サーバに送信する。
  8. 宛先IPとポートのハッシュ(Destination IP and Port Hash):宛先サーバーのIPアドレスとポートに基づいてハッシュ計算を行い、同一サーバーにリクエストを送信する。
  9. サーバーの応答時間をもとに、期待遅延時間の最も短いサーバーを選択してリクエストを転送します。
  10. 静的(Static):リクエストをどのサーバに送信するかを手動で指定します。
bannerAds