よくある質問・用語集

  • もっと調べる
  • どうやって使う?

LVSとは

LVSとは、Linux上でLayer4負荷分散装置と同様の機能を実現するためのソフトウェアである。Linux Virtual Serverの略称で、負荷分散装置に求められる基本的な機能を提供する。Linux Virtual Server Projectという開発プロジェクトが開発し管理しており、最近ではLinuxカーネルにも正式に取り入られている。

LVSはIPVS(IP Virtual Server)とipvsadmユーティリティから構成されている。IPVSはIPVSNetfilterモジュールというカーネルモジュールとして提供されており、Layer4負荷分散機能を実現する。ipvsadmはユーザがIPVSを管理するためのインタフェースを提供するユーティリティである。LVSの機能のうち、IVPSNetfilterモジュールは、Linuxカーネルに組み込まれているが、ipvsadmを利用するためにはパッケージのインストールが必要となる。

LVSのほとんど全ての設定はipvsadmコマンドで行う。LVSの設定は一部を除いて、システム再起動を行うと消えてしまう。そのため、システム起動時にLVSを起動する必要がある場合、設定ファイルを作成し、システム起動時に設定ファイルの内容を反映させる必要がある。ただし、LVSが使用するIPVSはネットワークインタフェースが有効になった後に設定を行う必要があるため、システム起動時の優先度をnetworkサービスより後に調整する必要がある。

LVSと連携するソフトウェア

LVSでは、実サーバのサービス提供状態を把握することはできない。そのため、オープンソースソフトウェア(OSS)の高可用性クラスタリングソフトHeartbeatに付属しているldirectordや、keepalivedなどと組み合わせて実サーバのサービス監視を行うのが一般的である。

また、LVSサーバ自身に障害が発生した場合には全てのサービスが停止してしまう可能性がある。LVSとkeepalivedやHeartbeatによる冗長化を組み合わせることで、より障害に強いシステムを構築することができる。

keepalived

keepalivedは、オープンソースのサーバ冗長化のためのソフトウェアである。ルータなどで利用されるVRRPを使って、仮想IPアドレスを管理することができる。また、LVSが負荷を分散する実サーバを監視して、正常に動作しているサーバを負荷分散対象に追加したり、障害が発生したサーバを負荷分散対象から切り離したりすることができる。

ldirectord

Heartbeatに付属するldirectordは、実サーバを動的に追加、削除する機能を持っている。サービス監視にも対応しており、さまざまなプロトコルの稼動状況を監視することができる。これにより、実サーバのサービスが提供できなくなった場合、リクエストを割り振らないようにすることができる。

ipvsadmの操作

ipvsadmには大きく分けて以下の3つの種類の操作がある。

  • 負荷分散サービス(仮想サービス)の設定
  • 実サーバの設定
  • 仮想サーバ全体の管理

負荷分散サービス(仮想サービス)の設定

LVSで構成したクラスタサーバ全体は、一つのコンピュータのように見える。LVSでは、これを仮想サーバと呼ぶ。また、仮想サーバには、複数の仮想サービスを登録することができる。

仮想サービスの登録では、IPアドレス、ポート番号、プロトコル(仮想サービス)などを設定する。また、仮想サービスを実際に処理する実サーバに対してどのように割り振るかというスケジュール方法も設定する必要がある。

実サーバの設定

仮想サービスの割り振り先となる個々のサーバ(実サーバ)にも、リクエストを処理するための設定を行う。

仮想サーバ全体の管理

ipvsadmで設定されている値を表示したり、設定を保存したりするなどの管理を行う。

負荷分散を実現する方法

LVSを使用した負荷分散を行うためのサーバ切り替え方法は以下がある。これらの方法は、用途に合わせて選択する必要がある。

  • NATによる切り替え
  • ダイレクトルーティングによる切り替え
  • IPトンネリングによる切り替え

LVSのNATによる負荷分散

LVSをルータ上に配置する構成である。LVSは、仮想IPアドレスでリクエストを受けとると、そのパケットの宛先アドレスを変換して実サーバに転送する。実サーバは、自サーバに送られてきた通常のリクエストとして受け取る。最も一般的な構成方法である。

クライアントからサーバへの通信も、サーバからクライアントへの通信もLVSを搭載した負荷分散サーバを通過することになる。そのため、負荷分散サーバに通信が集中しやすく、負荷分散装置の性能がボトルネックになりやすい。

ダイレクトルーティングによる切り替え

LVSを搭載した負荷分散サーバが、仮想IPアドレスで受け取ったパケットを、そのまま実サーバのMACアドレスへ転送する構成である。Layer2のレベルで動作する。実サーバへのリクエストは、仮想IPアドレスを宛先にして届く。そのため、実サーバには、この仮想IPアドレスでリクエストを受け取り、応答を返すための特別な設定が必要となるのが欠点である。

この構成では、クライアントからサーバへの通信は負荷分散サーバを通過するが、サーバからクライアントへの応答パケットはダイレクトに返送される。そのため、Webサーバや動画配信など、クライアントからサーバへの小さなリクエストパケットに対して、大きなデータを受けとるようなサービスでも、負荷分散サーバはボトルネックになりにくいという長所がある。

IPトンネリングによる切り替え

実サーバが、負荷分散サーバとは別のネットワークにある場合には、NAT型もダイレクトルーティング型も利用できない。そのような場合には、IPトンネルを作り、リクエストを転送する。実サーバが地理的に分散している場合に利用する。

LVSの管理GUI

LVSを利用すれば、専用の負荷分散装置がなくても、負荷分散を行うことができる。しかし、keepalivedやldirectordでは、仮想サーバや実サーバを設定ファイルで管理するため、管理のハードルが高い。また、設定を失敗すると、負荷分散処理を止めてしまうリスクもある。そこで、LVSを導入する場合には、同時に管理GUIを導入するのが望ましい。

オープンソースソフトウェアのILUKAは、keepalivedとLVSを組み合わせて負荷分散サーバを実現するための管理GUIである。仮想サーバや実サーバの管理をWEBから行うことができる。

ILUKAのバーチャルサーバ設定画面

ILUKAのバーチャルサーバ設定画面

デージーネットの取り組み

デージーネットでは、コストや機能的な制約から、クラウドサービスで用意された負荷分散機能を利用できない場合に、LVSを使った負荷分散サーバを提案している。以前は、Heartbeatとldirectordを利用して負荷分散サーバを構築していた。しかし、最近はkeepalivedを利用して負荷分散サーバを冗長構成で構築することが多い。

デージーネットは、冗長構成の負荷分散サーバを利用しやすくするためにILUKAを開発し、オープンソースソフトウェアとして提供している。デージーネットでは、ILUKAの商用サポートも行っている。

【カテゴリ】:クラスタ  オープンソースソフトウェア  

  • もっと調べる
  • どうやって使う?

【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー

日程: 11月22日(金)Webセミナー「BigBlueButton」を使用します。
内容: OSSを導入したいけど、どこから手をつければいいかわからない方必見!
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

LVSに関連するページ(事例など)

LVSとは先頭へ