系統版本:ubuntu14.04
LVS伺服器:14.17.64.3
真實伺服器:14.17.64.4-12
VIP:14.17.64.13
部署目的:使用者請求14.17.64.13的封包轉發至14.17.64.4-12上進行負載均衡。
由于LVS像iptables一樣是工作在核心層,是以隻需要安裝子產品ip_vs就可以了,并沒有背景程序在跑
#aptitude install ipvsadm
# ipvsadm -v
ipvsadm v1.26
# lsmod |grep ip_vs #檢視核心子產品,有代表ipvsadm加載進核心當中,此時LVS安裝完畢
ip_vs 136701 0
nf_conntrack 96976 1 ip_vs
libcrc32c 12644 3 xfs,btrfs,ip_vs
# ipvsadm -L -n #檢視lvs規則
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
root@ubun
# ipvsadm -L -c #檢視連接配接情況
-A是添加一條虛拟伺服器記錄,即VIP。此處配置要選擇算法。
#ipvsadm -A-t 14.17.64.13 -s wrr -p 300 #代理轉發所有去往該IP TCP的封包,-s指定算法wrr為權重輪詢算法,-p會話保持時間(預設值是300s)
#ipvsadm -A-t 14.17.64.13:80 -s wrr -p 20 #代理轉發去往該IP TCP80端口的封包
VIP維護:
使用-E修改VIP設定
例:ipvsadm -E -t 14.17.64.13 -s wrr -p 40 #可修改會話保持時間與算法。
使用-D删除VIP設定
例:ipvsadm -D -t 14.17.64.13 #删除該條VIP
-a是添加VIP要對哪些真實伺服器IP(即RIP)進行負載(預設是DR模式即-g)。
ipvsadm -a -t 14.17.64.13 -r 14.17.64.4 -g -w 1 #-r指定真實伺服器IP,-g為選擇DR模式(-m為NAT模式,-t為tunnel模式),-w選擇權重。
ipvsadm -a -t 14.17.64.13 -r 14.17.64.5 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.6 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.7 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.8 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.9 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.10 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.11 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.12 -g -w 1
#如果隻對tcp 80端口進行負載,可使用如下指令
#ipvsadm -a-t14.17.64.13:80 -r 14.17.64.4:80 -g -w 1
RIP維護:
使用-e修改RIP配置
例:ipvsadm -e -t14.17.64.13 -r 14.17.64.6 -g -w 4 #修改這條RIP規則的權重。
使用-d删除RIP配置
例:ipvsadm -d -t14.17.64.13 -r 14.17.64.6 -g -w 1 #删除該條RIP配置
在真實伺服器上都配置上VIP,即14.17.64.13位址。
#ifconfig lo:1314.17.64.13 netmask 255.255.255.255
關閉真實伺服器上loop口的arp回應,其它口的無須關閉。
預設arp_ignore和arp_announce的參數都是0,即回應所有目的IP是本機的arp請求。
在所有真實伺服器上進行如下操作:
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce #對查詢目标使用最适當的本地位址。
#此處可以進行測試,在測抑制arp前,能ping通VIP位址。在抑制arp後,在前端交換機上清掉arp緩存,再ping VIP就不通了。但實體eth0網卡IP還是能通的。
接下來在lvs上配置VIP:
ifconfig lo:13 14.17.64.13 netmask255.255.255.255
在lvs上開啟核心轉發功能。
#echo 'net.ipv4.ip_forward=1' >>/etc/sysctl.conf
#sysctl -p
由于真實伺服器上未搭建http服務,但我設定的lvs是轉發所有tcp連接配接,是以我通過ssh到VIP上進行測試。
#iptables -L -c #檢視lvs轉發記錄,确定請求轉發成功。
TCP 14:59 ESTABLISHED 242.103.143.219.broad.bj.bj.dynamic.163data.com.cn:5197714.17.64.13:22 14.17.64.10:22
至此lvs搭建成功。
1、 自身無法對真實伺服器保活,如果出現伺服器down情況,還會向down的伺服器轉發請求。
解決方法是keepalived或自已寫腳本來監測連通性再清除相應規則。
2、一台LVS伺服器會出現單點故障,需要有備份LVS伺服器
解決方法是keepalived來進行LVS故障接管。