LVS(Linux Virtual Server)は、Linuxカーネルを基盤とした仮想サーバークラスタ技術です。1998年に章文嵩氏によって開発され、中国で最初に登場したオープンソースプロジェクトの一つです。
本プロジェクトの目的は、クラスタ技術とLinux OSを用いて、高パフォーマンスかつ高信頼性のあるサーバーを実現することです。拡張性、信頼性、管理性の3つの特性が強調されています。
LVSでは、IP負荷分散技術を用いた3つの主要な構成法があります。VS/NAT(Network Address Translation)は、複数のサーバーを1つの仮想サーバーとして扱う方法で、VS/TUN(IPトンネリング)はネットワークトラフィックをトンネル経由で分散し、VS/DR(Direct Routing)は直接ルーティングにより効率的な負荷分散を実現します。
特徴:
1. オープンソースで無料
2. オンライン上に技術資料が豊富
3. ソフトウェア負荷分散の利点を有する
欠点:
1. 公式サポートが不十分で、結果に対する責任が明確でない
2. 複雑なアプリケーションへの対応が弱く、アルゴリズムの選択肢が限られている
3. トンネルモードを使用するにはカーネルの再コンパイルが必要
4. 設定が複雑
5. Windows環境への対応は限定的だが、WindowsサーバーをReal Serverとして利用可能
構成環境:
Webサーバー1:CentOS 6.8 192.168.126.135
Webサーバー2:CentOS 6.8 192.168.126.134
Webサーバー設定:
web1:
### 1. Webシステムのインストール
テスト環境用に簡易インストールを実施
yum -y install httpd### 2. サービスの自動起動設定
chkconfig httpd on### 3. サービス起動とファイアウォール停止
service httpd start<br>service iptables stop### 4. 虚拟IP管理ツールのインストール
yum -y install ipvsadm### 5. 設定スクリプトの作成
#!/bin/bash<br>VIRTUAL_IP=192.168.126.100<br>REAL_SERVER1=192.168.126.135<br>REAL_SERVER2=192.168.126.134<br><br>case "$1" in<br> start)<br> echo "LVS Director Serverの設定を開始します"<br> ifconfig eth0:0 $VIRTUAL_IP broadcast $VIRTUAL_IP netmask 255.255.255.255 up<br> route add -host $VIRTUAL_IP dev eth0:0<br> echo "1" >/proc/sys/net/ipv4/ip_forward<br> ipvsadm -C<br> ipvsadm -A -t $VIRTUAL_IP:80 -s rr<br> ipvsadm -a -t $VIRTUAL_IP:80 -r $REAL_SERVER1:80 -g<br> ipvsadm -a -t $VIRTUAL_IP:80 -r $REAL_SERVER2:80 -g<br> ipvsadm<br> echo "設定が完了しました"<br> ;;<br> stop)<br> echo "LVS Director Serverの停止を開始します"<br> echo "0" >/proc/sys/net/ipv4/ip_forward<br> ipvsadm -C<br> ifconfig eth0:0 down<br> echo "停止が完了しました"<br> ;;<br> *)<br> echo "使用法:$0 {start|stop}"<br> exit 1<br>esac### 6. スクリプトの実行
sh lvs.sh startweb2:
### 1. Webシステムのインストール
yum -y install httpd### 2. サービスの自動起動設定
chkconfig httpd on### 3. サービス起動とファイアウォール停止
service httpd start<br>service iptables stop### 4. 虚拟IP管理ツールのインストール
yum -y install ipvsadm### 5. 設定スクリプトの作成
#!/bin/bash<br>VIRTUAL_IP=192.168.126.100<br><br>case "$1" in<br> start)<br> echo "Real ServerのLVS設定を開始します"<br> ifconfig lo:0 $VIRTUAL_IP broadcast $VIRTUAL_IP netmask 255.255.255.255 up<br> route add -host $VIRTUAL_IP dev lo:0<br> echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore<br> echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore<br> echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce<br> echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce<br> ;;<br> stop)<br> echo "Real ServerのLVS停止を開始します"<br> ifconfig lo:0 down<br> echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore<br> echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore<br> echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce<br> echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce<br> ;;<br> *)<br> echo "使用法:$0 {start|stop}"<br> exit 1<br>esac設定完了後、ブラウザでVIPアドレス(http://192.168.126.100)にアクセスし、ページを繰り返して表示されるWebサーバーの違いを確認してください。