lvs注意點

參考:
http://www.cnblogs.com/liwei0526vip/p/6370103.htmlhtml

http://www.javashuo.com/article/p-sxgzfcbd-bc.htmlweb

TCP四層轉發協議,其中內核是經過 PREROUTING INPUT FORWARD OUTPUT POSTROUTING 這個幾個數據轉發控制來完成的。bash

模式1、
NAT(DNAT)網絡

注意:
一、目的地址修改,內核的prerouting和postrouting鏈
二、RS的網關地址必定要指向DIP(LVS的內網IP,由於第一點,IP報文的轉發過程都是隻更改DIP)
三、由於第二點的緣由,RS的出外網是受限制的,因此不多使用。
四、回包必定要通過DR去修改IP頭部的SIP(源ip地址)地址(由於TCP回話必定要保證出去的包和收回的包 IP地址不變)負載均衡

須要內核支持
modprobe ip_vscurl

網上看到的常常說的DNAT的一個缺點:
上面說了NAT模型的實現方式,那麼NAT模型有個缺陷,由於進出的每一個數據包都要通過Director Server,當集羣系統負載過大的時候Director Server將會成爲整個集羣系統的瓶頸(但我以爲這個不是瓶頸,不用NAT是由於網絡結構不適合多數公司)ide

那麼DR模型就避免了這樣的狀況發生,DR模型在只有請求的時候纔會通過Director Server, 迴應的數據包由Real Server 直接響應用戶不須要通過Director Server,其實三種模型中最經常使用的也就是DR模型了。oop

模式2、DR模式post

注意:
一、源末地址都未修改,lvs更改的是源和目標mac地址。CIP VIP -> DIP RIP的mac地址。
二、RS上添加lo:0地址爲 VIP的地址,由於從客戶端發起的請求到結束,源末地址都未修改,RS要接收包,必須目標地址是本機地址。
三、RS上要修改mac的接收和響應方式(詳解參考:http://www.javashuo.com/article/p-sxgzfcbd-bc.html
四、RS和VIP的端口必定要同樣都是80(不支持地址轉換,也不支持端口映射)
由於上原理,因此要配置DR模式 VIP DIP RIP 都必須在同一個網段(由於須要是經過二層來傳輸)(多數是公網若是是提供web服務)測試

實驗採用私有IP地址的腳本配置如:

LVS機器上配置
cat lvs_dr.sh

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip="21.32.19.200"
rs1="21.32.19.21:80"
rs2="21.32.19.22:80"
ifconfig eth0:0 down
ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.
route add -host $vip dev eth0:0
$ipv -C
$ipv -A -t $vip:80 -s wrr 
$ipv -a -t $vip:80 -r ${rs1} -g -w 3
$ipv -a -t $vip:80 -r ${rs2} -g -w 1

RS上的配置
cat lvs_dr_rs.s

#! /bin/bash
vip=21.32.19.200
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

測試:
curl http://21.32.19.200
注意測試的時候,不要在DR(lvs機器上)和RS機器上,由於這幾個機器都有這個VIP地址。

企業經常使用
DR + keepalived
keepalived的出現就是爲了LVS(keepalived中不少參數是直接影響lvs的,和你用命令 ipvsadm 管理lvs是同樣的效果)

其中keepavlied難理解的參數:
一、lvs_sync_daemon_inteface eth0 #負載均衡器之間的監控接口(DR模式中同interface)

二、vrrp_sync_group (多個入口的時候,CTC CNC CMCC的時候這個三個VS組能夠作同步切換)

三、delay_loop 探測的時間

相關文章
相關標籤/搜索