====== 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
* ※参考:削除する場合 \\ # ip addr del 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」を設定する。
[[https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-Server_Security-Reverse_Path_Filtering.html|参考: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