Ubuntu LVS DR模式生產環境部署

weixin_34377065發表於2014-11-10

1、環境說明

系統版本:ubuntu14.04

LVS伺服器:14.17.64.3

真實伺服器:14.17.64.4-12

VIP14.17.64.13

部署目的:使用者請求14.17.64.13的報文轉發至14.17.64.4-12上進行負載均衡。

 

2、安裝LVS

由於LVSiptables一樣是工作在核心層,所以只需要安裝模組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   #檢視連線情況

 

3、配置LVS VIP服務

-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

 

4、配置LVS RIP規則

-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模式(-mNAT模式,-ttunnel模式),-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配置

 

5、在真實伺服器上配置VIP

在真實伺服器上都配置上VIP,即14.17.64.13地址。

#ifconfig lo:1314.17.64.13 netmask 255.255.255.255

 

6、在真實伺服器上關閉ARP響應

關閉真實伺服器上loop口的arp迴應,其它口的無須關閉。

預設arp_ignorearp_announce的引數都是0,即迴應所有目的IP是本機的arp請求。

在所有真實伺服器上進行如下操作:

 

echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore         #只回答目標IP地址是來訪網路介面本地地址的ARP查詢請求。

echo "2">/proc/sys/net/ipv4/conf/all/arp_announce      #對查詢目標使用最適當的本地地址

 

#此處可以進行測試,在測抑制arp前,能pingVIP地址。在抑制arp後,在前端交換機上清掉arp快取,再ping VIP就不通了。但物理eth0網路卡IP還是能通的。

arp含義參考地址:http://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html

 

接下來在lvs上配置VIP

ifconfig lo:13 14.17.64.13 netmask255.255.255.255

 

7、開啟核心轉發功能

lvs上開啟核心轉發功能。

#echo  'net.ipv4.ip_forward=1'  >>/etc/sysctl.conf

#sysctl -p

 

8、LVS測試

由於真實伺服器上未搭建http服務,但我設定的lvs是轉發所有tcp連線,所以我通過sshVIP上進行測試。

 

#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搭建成功。

 

9、lvs補充思考

1、  自身無法對真實伺服器保活,如果出現伺服器down情況,還會向down的伺服器轉發請求。

         解決方法是keepalived或自已寫指令碼來監測連通性再清除相應規則。

2、一臺LVS伺服器會出現單點故障,需要有備份LVS伺服器

         解決方法是keepalived來進行LVS故障接管。

 

 


相關文章