CentOS 6
Sponsored Link

LVS (Linux Virtual Server) 設定
2013/08/20
 
LVS (Linux Virtual Server) によるロードバランサの構築です。
ここでは以下のような環境を例に設定してみます。
                          |
                          |
                      eth0|192.168.0.100
                    +----------+
--------------------|    LVS   |----------------------
                    +----------+
                      eth1|10.0.0.100
                          |
+----------+              |               +----------+
|          |10.0.0.30     |      10.0.0.31|          |
| Backend1 |------------------------------| Backend2 |
|   Web    | eth0                     eth0|    Web   |
+----------+                              +----------+

 
LVSサーバーの eth0 へ来た HTTP パケットを Backend1, Backend2 の WebサーバーへNAT転送してみます。
なお、バックエンドWebサーバーの両方で、デフォルトゲートウェイを LVS の内側アドレスに設定しておく必要があります。 (例では「10.0.0.100」)
[1] ipvsadm インストール
[root@gw ~]#
yum -y install ipvsadm
[root@gw ~]#
vi /etc/sysctl.conf
# 7行目:変更

net.ipv4.ip_forward =
1
[root@gw ~]#
sysctl -p
   
# 再読み込み

[root@gw ~]#
/etc/rc.d/init.d/ipvsadm start

ipvsadm: Clearing the current IPVS table: IPVS: Registered protocols (TCP, UDP, SCTP, AH, ESP)
IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
IPVS: ipvs loaded.
[ OK ]
ipvsadm: Applying IPVS configuration: IPVS: [wlc] scheduler registered.
[ OK ]
[root@gw ~]#
chkconfig ipvsadm on

[2] ipvsadm 設定
# テーブルをクリア

[root@gw ~]#
ipvsadm -C
# 仮想サービスを登録する

# [ipvsadm -A -t (サービス用IP:ポート) -s (分散方式)]

[root@gw ~]#
ipvsadm -A -t 192.168.0.100:80 -s wlc

# 実サーバーを登録する

# [ipvsadm -a -t (サービス用IP:ポート) -r (実サーバのIP:ポート) -m] (m で masquerading (NAT))

[root@gw ~]#
ipvsadm -a -t 192.168.0.100:80 -r 10.0.0.30:80 -m

[root@gw ~]#
ipvsadm -a -t 192.168.0.100:80 -r 10.0.0.31:80 -m

# テーブル確認

[root@gw ~]#
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.100:http wlc
  -> 10.0.0.30:http               Masq    1      0          0
  -> 10.0.0.31:http               Masq    1      0          0
# 設定保存

[root@gw ~]#
/etc/rc.d/init.d/ipvsadm save

ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
[3]
以上で設定完了です。クライアントからWebブラウザで設定したサービス用IPにアクセスして動作確認してください。
ちなみに、分散方式の種類には以下のようなものがあります。
分散方式 説明
rr
Robin Robin
コネクションを等しく順番に各ノードへ負荷分散する。
wrr
Weighted Round Robin
「-w weight」によって設定された weight に応じて負荷分散する。
lc
Least-Connection
コネクション数が最も低いノードへ負荷分散する。
wlc
Weighted Least-Connection
コネクション数と weight に応じて負荷分散する。
「-s (分散方式)」を指定しない場合のデフォルト分散方式。
lblc
Locality-Based Least-Connection
同じIPからのコネクションは同じノードへ振り分ける。
ノードが過負荷状態の場合は、コネクション数の低いノードへ負荷分散する。
lblcr
Locality-Based Least-Connection with Replication
同じIPからのコネクションは最も負荷の低いノードへ振り分ける。
全ノードが過負荷状態の場は、クラスタ内でコネクション数の低いノードを追加して負荷分散する。
dh
Destination Hashing
ターゲットIPから静的に割り当てられたハッシュテーブルを検索して負荷分散する。
sh
Source Hashing
ソースIPから静的に割り当てられたハッシュテーブルを検索して負荷分散する。
sed
Shortest Expected Delay
応答速度が最も早いサーバーへ振り分ける。
nq
Never Queue
アイドル状態のサーバーがあればそこへ振り分ける。
全サーバーがビジーであれば、最も応答速度が早いサーバーへ振り分ける。
 
Tweet