====== 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