CentOS 7
Sponsored Link

LVS (Linux Virtual Server) 設定
2015/06/10
 
LVS (Linux Virtual Server) によるロードバランサの構築です。
ここでは以下のような環境を例に設定します。
                          |
                          |
                      eth0|192.168.0.30
                    +----------+
--------------------|    LVS   |----------------------
                    +-----+----+
                      eth1|10.0.0.30
                          |
+------------+            |             +------------+
|  Backend01 |10.0.0.51   |    10.0.0.52|  Backend02 |
| Web Server +------------+-------------+ Web Server |
|            |eth0                  eth0|            |
+------------+                          +------------+

 
LVSサーバーの eth0 へ来た HTTP パケットを Backend01, Backend02 の Webサーバーへ NAT 方式で負荷分散します。
事前にバックエンド Webサーバーのデフォルトゲートウェイを LVSサーバーの内側アドレス (例では「10.0.0.30」) に設定しておきます。
[1] ipvsadm をインストールします。
[root@dlp ~]#
yum -y install ipvsadm
# IP フォワードを有効にする

[root@dlp ~]#
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

[root@dlp ~]#
sysctl -p
[root@dlp ~]#
touch /etc/sysconfig/ipvsadm

[root@dlp ~]#
systemctl start ipvsadm

[root@dlp ~]#
systemctl enable ipvsadm

[2] 負荷分散の設定です。
# テーブルをクリア

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

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

[root@dlp ~]#
ipvsadm -A -t 192.168.0.30:80 -s wlc

# バックエンドサーバーを登録

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

[root@dlp ~]#
ipvsadm -a -t 192.168.0.30:80 -r 10.0.0.51:80 -m

[root@dlp ~]#
ipvsadm -a -t 192.168.0.30:80 -r 10.0.0.52:80 -m

# テーブル確認

[root@dlp ~]#
ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  dlp.srv.world:http wlc
  -> 10.0.0.51:http               Masq    1      0          0
  -> 10.0.0.52:http               Masq    1      0          0
[3] 以上で設定完了です。任意のクライアントPC から 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