9.1 概念の概要

LVSは、2つの主要コンポーネントで構成されます。

カーネルコード: ip_vs (またはIPVS)

IPVSコードでパッチされたLinuxカーネルを実行するノード は、 ディレクタと呼ばれます。ディレクタで実行されるIPVSコードは、LVSの必須機能です。

クライアントはディレクタに接続し、ディレクタは実際のサーバにパケットを転送します。ディレクタは、レイヤ4ルータとして、LVS用に修正されたルーティングルールのセット(たとえば、接続はディレクタで開始/終了しない、ディレクタは受信確認を送らないなど)を保持します。ディレクタと実際のサーバは、クライアントには1つのマシンであるかのように見える仮想サーバを構成します。

様々な転送方法があり、ディレクタによってクライアントから実際のサーバへパケットが送信される方法を決定します。クライアントから要求された新しい接続に使用する実際のサーバの決定には、各種のアルゴリズムが使用されます。これらのアルゴリズムは、モジュールとして使用できるので、特定のニーズに適合させることができます。ディレクタは、クライアントから接続要求を受信すると、スケジュールに基づいて実際のサーバをクライアントに割り当てます。スケジューラは、IPVSカーネルコードの一部として、次の新しい接続を取得する実際のサーバを決定します。

ユーザスペースコントローラ: ipvsadm

ipvsadmは、ipvsadmパッケージで提供されるユーザインタフェースであり、Linux Virtual Serverの管理に使用できます。たとえば、処理対象のサービスにルールを設定したり、フェールオーバーを処理したり、スケジューラタイプを設定できます。

次の設定には、ipvsadmをコマンドライン(またはrcファイル)から使用します。

  • ディレクタが振り分けるサービスまたはサーバ(たとえば、HTTPは実際のサーバすべてにリダイレクトし、FTPは1つの実際のサーバにだけリダイレクトするなど)。

  • 実際のサーバに与える重み付け(あるサーバが他のサーバより高速な場合に有用)

  • スケジューリングアルゴリズム

ipvsadmは、次のタスクにも使用できます。

  • サービスの追加

  • サービスのシャットダウン

  • サービスの削除