LVS(Linux Virtual Server)による負荷分散環境の構築

■ LVS(Linux Virtual Server)とは?

 LVS(Linux Virtual Server)はLinuxを負荷分散装置(ロードバランサとも言う)として利用することができる優れもののソフトウェア機能だ。ソフトウェア機能と言ったのは最近のディストリビューションではすでにカーネルにそれが組み込まれているからだ。

 今回はFedora Core 5でこの機能を確認してみたい。LVSにはいくつかの構成方法があるが、最も設定が簡単なNAT(Network Address Translation)で負荷分散環境を構成してみたいと思う。このためにはマシンが3台必要となるが、Virtual PCを利用すれば物理的なマシンを用意する必要がないのでちょっと試してみる場合には重宝する。さらに負荷分散の確認用に後述の外部アドレスに接続されたマシンが別途必要となる。

 LVSを利用するための設定は、Virtual PCを利用する場合と普通にPCなりサーバなりを利用する場合とで異ならないのでどちらで構築していただいても問題ない。

■ 負荷分散環境の概要

 NAT構成にはまず負荷分散装置として1台、分散先のサーバとして2台、計3台のマシンを用意する必要がある。負荷分散装置として利用するマシンにはネットワークカードが2枚必要になる。Virtual PCを利用する場合はこれらすべてを仮想的に用意することができる。

外部アドレス内部アドレス
負荷分散装置192.168.0.5192.168.100.100
AP1号機192.168.100.1
AP2号機192.168.100.2

 Virtual PCを利用する場合は、負荷分散装置のバーチャルマシンにはネットーワークアダプタを2つ用意する。外部向けには"Microsoft Loopback Adapter"(ホストOSとゲストOSの間で通信ができる)、内部向けには"ローカルのみ"(ゲストOS同士でのみ通信ができる)とする。

 IPアドレス等の設定はFedora Core 5のデスクトップで[デスクトップ]-[管理]-[ネットワーク]メニューを選択することで設定が可能である。上記の表のようにIPアドレスを設定する。Fedora Coreからはバーチャルマシンのアダプタ1がeth0、アダプタ2がeth1として認識されているはずである。サブネットマスクはすべて255.255.255.0に設定する。

■ 負荷分散装置マシンへのipvsadmのインストール

 Fedora Core 5のカーネルは初期状態でLVSが利用できるようになっている。しかし、LVSの設定を行うためにはipvsadmというツールを負荷分散装置マシンに別途インストールする必要がある。Fedora Core 5の4枚目のCD-ROMにipvsadm-1.24-7.2.1.i386.rpmがあるので適当なディレクトリにコピーし、以下のコマンドを実行する。

# rpm -ivh ipvsadm-1.24-7.2.1.i386.rpm

 特に変更しなければipvsadmは/sbinディレクトリにインストールされるはずである。適宜パスを通すか、または通さない場合はipvsadmの前に/sbin/を付けてコマンドを実行することになる。

■ 負荷分散の設定

 ipvsadmをインストールしたら早速これを使用して以下の設定を行う。

# ipvsadm -A -t 192.168.0.5:8080 -s rr
 上記によって192.168.0.5の8080ポートへのアクセスを負荷分散することを宣言する。-s rrは負荷分散アルゴリズムがラウンドロビンであることを示す。

 次に負荷分散先としてAP1号機のアドレスを追加する。

# ipvsadm -a -t 192.168.0.5:8080 -r 192.168.100.1 -m

 さらにもう1つの負荷分散先としてAP2号機のアドレスを追加する。

# ipvsadm -a -t 192.168.0.5:8080 -r 192.168.100.2 -m

 設定内容は-Lオプションを指定してipvsadmを実行すると確認できる。

# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.5:webcache rr
  -> 192.168.100.2:webcache       Masq    1      0          0
  -> 192.168.100.1:webcache       Masq    1      0          0

■ パケット転送の許可

 負荷分散装置マシンでもう1つ忘れてはならないのがパケット転送の許可である。外部用のネットワークと内部用のネットワークとの間でパケット転送を許可するために以下のコマンドを実行する。

# echo 1 > /proc/sys/net/ipv4/ip_forward

 設定が正しく行われたかどうか確認するには/proc/sys/net/ipv4/ip_forwardの内容をcat等で表示させて見ると良い。値が1になっていればOKである。

# cat /proc/sys/net/ipv4/ip_forward
1

 尚、負荷分散の設定及びパケット転送の許可はマシンをシャットダウンするとすべて消えてしまうので、永続的に設定したい場合は考慮が必要である。

■ 負荷分散先マシンのデフォルトゲートウェイ設定

 AP1号機とAP2号機のそれぞれで、デフォルトゲートウェイを負荷分散装置の内部ネットワークのアドレスである192.168.100.100に設定する。Fedora Core 5ではそれぞれのマシンのデスクトップで[デスクトップ]-[管理]-[ネットワーク]メニューを選択することで設定が可能である。これで負荷分散の構成は終了である。

■ 設定の確認

 AP1号機とAP2号機には予め任意のアプリケーションをデプロイしておき、ブラウザで192.168.0.5:8080にアクセスする。Virtual PCを利用しているのであればホストのWindowsから負荷分散装置のバーチャルマシンにアクセスすることになる。このときブラウザのキャッシュは必ず切っておく。それぞれのAPサーバのログを参照すれば負荷分散されていることが確認できるであろう。

<The Linux Virtual Server Project>
http://www.linuxvirtualserver.org/

(2008/01/10)

新着情報
【iOS Objective-C, Swift Tips】画像の向きを指定して保存する(Swift)
【iOS Objective-C, Swift Tips】UIImagePickerControllerの表示を日本語にする(Swift)
【iOS Objective-C, Swift Tips】ウィンドウの階層構造を3D表示する(Swift)

Copyright(C) 2004-2012 モバイル開発系(K) All rights reserved.
[Home]