LVSロードバランサ(LVSの概要、3つの動作モード、10種類のスケジューリングアルゴリズム)
Linux Virtual Server(LVS)は、ネットワークトラフィックを複数のサーバーに分散して、システムの可用性、信頼性、パフォーマンスを向上させる、高性能で拡張性の高いロードバランサーです。
LVS には、NAT モード、DR モード、TUN モードの 3 つの動作モードがあります。
- NATモード:クライアントからのリクエストパケットの送信元IPアドレスをLVSロードバランサが改ざんして、バックエンドのリアルサーバに転送した後、バックエンドからのレスポンスパケットをLVSロードバランサがクライアントに転送します。
- DRモード: このモードでは、LVSロードバランサーはパケットの転送ノードとしてのみ機能し、パケットの送信元IPアドレスを変更しない。クライアントから要求されたパケットは、バックエンド側のリアルサーバーに直送され、バックエンド側のサーバーは応答パケットをクライアントに直送する。
- TUNモード:このモードでは、LVSロードバランサがカーネル内に仮想IPアドレスを作成してクライアントからのリクエストを受け付け、バックエンドの実サーバーに転送します。バックエンドサーバーはレスポンスパケットをLVSロードバランサに返し、ロードバランサはクライアントに転送します。
LVSでは、クライアントリクエストをどのバックエンドサーバに転送するかを決める、さまざまなスケジューリングアルゴリズムを提供します:
- リクエストを順番に各サーバーに転送するラウンドロビン(Round Robin)。
- 接続数が少ないサーバーへリクエストを転送する
- 重み付きラウンドロビン:サーバの重み付けに応じて処理するリクエストの割合が決まる。
- 加重最小接続(Weighted Least Connection):サーバの重みと現在の接続数に基づき、接続数が最も少なく、重みが高いサーバへリクエストを振り分ける。
- クライアントのIPアドレスをハッシュ計算することで、同一サーバにリクエストを送信するソースIPハッシュ。
- クライアントのIPアドレスとポートからハッシュ計算を行い、同一のサーバーへリクエストを振り分ける。
- 宛先IPハッシュ:宛先サーバのIPアドレスを基にハッシュ計算を行い、リクエストを同一サーバに送信する。
- 宛先IPとポートのハッシュ(Destination IP and Port Hash):宛先サーバーのIPアドレスとポートに基づいてハッシュ計算を行い、同一サーバーにリクエストを送信する。
- サーバーの応答時間をもとに、期待遅延時間の最も短いサーバーを選択してリクエストを転送します。
- 静的(Static):リクエストをどのサーバに送信するかを手動で指定します。