目次

23 LVS on CloudStack

(internet)
       |
       | 182.48.51.190
  +----+-----------+
  | Virtual Router |
  +----+-----------+
       | 10.1.0.1/24 GW
       |
  -----+------ 10.1.0.0/24 ------+-------------------+--------
       |                         |                   |
       | eth0   10.1.0.10/24     |                   |
       | eth0:0 10.1.0.100/24    | eth0 10.1.0.150   | eth0 10.1.0.160
  +----+------+           +------+----+         +---+-------+
  | LVS serv  |           | Web serv1 |         | Web Serv2 |
  +----+------+           +------+----+         +-----------+

LVS Server

1.ipvsadm インストール

# yum install ipvsadm

2.VIPを付けておく

# ip addr add 10.1.0.100/24 label eth0:0 dev eth0

3.sysctl編集

sysctl.confに追加
# vi /etc/sysctl.conf

下記を追加
net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter=0

今回はNICが1つなので本来は必要ないが、NICを2つで構成している場合は必ず「net.ipv4.conf.default.rp_filter」を設定する。
参考:net.ipv4.conf.default.rp_filter

反映
# sysctl -p

4.Vritual Routerの設定

ファイアウォールは開けておく
Nat設定(ポート転送)は、80番、443番を VIP:10.1.0.100に対して通しておく。

5.ipvsamで設定を入れる

VIP設定
# ipvsadm -A -t 10.1.0.100:80 -s lc
# ipvsadm -A -t 10.1.0.100:443 -s lc
実サーバ設定
# ipvsadm -a -t 10.1.0.100:80 -r 10.1.0.150 -g
# ipvsadm -a -t 10.1.0.100:80 -r 10.1.0.160 -g
# ipvsadm -a -t 10.1.0.100:443 -r 10.1.0.150 -g
# ipvsadm -a -t 10.1.0.100:443 -r 10.1.0.160 -g
確認
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.0.100:80 lc
  -> 10.1.0.150:80                  Route   1      0          0         
  -> 10.1.0.160:80                  Route   1      0          0         
TCP  10.1.1.85:443 lc
  -> 10.1.0.150:443                 Route   1      0          0         
  -> 10.1.0.160:443                 Route   1      0          0         

Web Serv側

LVSサーバ側の設定が終わっていると、「182.48.51.190 → 10.1.0.100」への通信がそのままWeb Serv1、Web Serv2へ転送されます。
そのままだと、自分宛てと気づけずにパケットを処理する事ができません。
その為、下記どちらかでVIP宛て通信を返す必要があります。

1.PREROUTING してVIP宛て通信を処理

iptables -t nat -I PREROUTING -d 10.1.0.100 -j REDIRECT

2.ループバックアドレスを設定

# ip addr add 10.1.0.100/24 label eth0:0 dev eth0

sysctl修正

ループバックアドレスを設定すると、arp関係で問題が出るので、
下記の設定を入れてあげる。

sysctl.conf修正
# vi /etc/sysctl.conf

下記を追加
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
反映
# sysctl -p