1. 程式人生 > >LVS原理詳解以及部署

LVS原理詳解以及部署

私有地址 命中率 least 支持 靜態 enc dns查詢 state core

一、LVS簡介

linux virtual server簡稱LVS,是章文嵩博士1998年發起的一個開源項目。官網:http://www.linuxvirtualserver.org。Internet的快速增長使多媒體網絡服務器面對的訪問數量快速增加,服務器需要具備提供大量並發訪問服務的能力,因此對於大負載的服務器來講, CPU、I/O處理能力很快會成為瓶頸。由於單臺服務器的性能總是有限的,簡單的提高硬件性能並不能真正解決這個問題。為此,必須采用多服務器和負載均衡技術才能滿足大量並發訪問的需要。Linux 虛擬服務器(Linux Virtual Servers,LVS) 使用負載均衡技術將多臺服務器組成一個虛擬服務器。它為適應快速增長的網絡訪問需求提供了一個負載能力易於擴展,而價格低廉的解決方案。lvs已經集成到linux 2.6版本以上的內核中。lvs的負載能力特別強,優化空間特別大,lvs的變種DPVS據說是lvs性能的幾倍,由愛奇藝開發,並廣泛用於愛奇藝IDC。其他負載均衡服務器還有nginx,haproxy,F5,Netscale。

二、LVS基本原理

技術分享圖片

1)當用戶向負載均衡調度器(Director Server)發起請求,調度器將請求發往至內核空間。

2)PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數據包發往INPUT鏈。

3)IPVS是工作在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和自己已定義好的集群服務進行比對,如果用戶請求的就是定義的集群服務,那麽此時IPVS會強行修改數據包裏的目標IP地址及端口,並將新的數據包發往POSTROUTING鏈。

4)POSTROUTING鏈接收數據包後發現目標IP地址剛好是自己的後端服務器,那麽此時通過選路,將數據包最終發送給後端的服務器。

三、LVS組成

LVS 由2部分程序組成,包括 ipvs 和 ipvsadm。

1、IPVS(ip virtual server):一段代碼工作在內核空間,叫IPVS,是真正生效實現調度的代碼。IPVS的總體結構主要由IP包處理、負載均衡算法、系統配置與管理三個模塊及虛擬服務器與真實服務器鏈表組成。

2、ipvsadm:另外一段是工作在用戶空間,叫ipvsadm,即IPVS管理器,負責為ipvs內核框架編寫規則,定義誰是集群服務,而誰是後端真實的服務器(Real Server)。

四、LVS技術術語

l DS:Director Server。指的是前端負載均衡器節點。

l RS:Real Server。後端真實的工作服務器。

l VIP:Virtual IP,向外部直接面向用戶請求,作為用戶請求的目標的IP地址。

l DIP:Director Server IP,主要用於和內部主機通訊的IP地址。

l RIP:Real Server IP,後端服務器的IP地址。

l CIP:Client IP,訪問客戶端的IP地址。

五、LVS工作模式和原理

5.1、NAT模式

5.1.1、NAT模式工作原理

技術分享圖片

1) 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP。

2) PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈。

3) IPVS比對數據包請求的服務是否為集群服務,若是,修改數據包的目標IP地址為後端服務器IP,然後將數據包發至POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP。

4)POSTROUTING鏈通過選路,將數據包發送給Real Server

5) Real Server比對發現目標為自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,目標IP為CIP。

6) Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然後響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP。

5.1.2、NAT特性

l RIP最好是內網IP

l RS的網關必須指向DIP。

l DIP和RIP必須在同一個網段內。

l 請求和回應的報文都必須經過director,director容易成為瓶頸。

l nat支持端口轉發。

5.2、DR模式

5.2.1、DR模式工作原理

技術分享圖片

1)首先用戶用CIP請求VIP。

2)根據上圖可以看到,不管是Director Server還是Real Server上都需要配置相同的VIP,那麽當用戶請求到達我們的集群網絡的前端路由器的時候,請求數據包的源地址為CIP目標地址為VIP,此時路由器會發廣播問誰是VIP,那麽我們集群中所有的節點都配置有VIP,此時誰先響應路由器那麽路由器就會將用戶請求發給誰,這樣一來我們的集群系統是不是沒有意義了,那我們可以在網關路由器上配置靜態路由指定VIP就是Director Server,或者使用一種機制不讓Real Server 接收來自網絡中的ARP地址解析請求,這樣一來用戶的請求數據包都會經過Director Servrer。

3)當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP。

4) PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈。

5) IPVS比對數據包請求的服務是否為集群服務,若是,將請求報文中的源MAC地址修改為DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,然後將數據包發至POSTROUTING鏈。 此時的源IP和目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,目標MAC地址為RIP的MAC地址

6) 由於DS和RS在同一個網絡中,所以是通過二層來傳輸。POSTROUTING鏈檢查目標MAC地址為RIP的MAC地址,那麽此時數據包將會發至Real Server。

7) RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之後,將響應報文通過lo接口傳送給eth0網卡然後向外發出。 此時的源IP地址為VIP,目標IP為CIP

8)響應報文最終送達至客戶端。

5.2.2、配置DR有三種方式:

第一種方式:

在路由器上明顯說明vip對應的地址一定是Director上的MAC,只要綁定,以後再跟vip通信也不用再請求了,這個綁定是靜態的,所以它也不會失效,也不會再次發起請求,但是有個前提,我們的路由設備必須有操作權限能夠綁定MAC地址,萬一這個路由器是運行商操作的,我們沒法操作怎麽辦?第一種方式固然很簡便,但未必可行。

第二種方式:

在給別主機上(例如:紅帽)它們引進的有一種程序arptables,它有點類似於iptables,它肯定是基於arp或基於MAC做訪問控制的,很顯然我們只需要在每一個real server上定義arptables規則,如果用戶arp廣播請求的目標地址是本機的vip則不予相應,或者說相應的報文不讓出去,很顯然網關(gateway)是接受不到的,也就是director相應的報文才能到達gateway,這個也行。第二種方式我們可以基於arptables。

第三種方式:

在相對較新的版本中新增了兩個內核參數(kernelparameter),第一個是arp_ignore定義接受到ARP請求時的相應級別;第二個是arp_announce定義將自己地址向外通告時的通告級別。【提示:很顯然我們現在的系統一般在內核中都是支持這些參數的,我們用參數的方式進行調整更具有樸實性,它還不依賴於額外的條件,像arptables,也不依賴外在路由配置的設置,反而通常我們使用的是第三種配置】

arp_ignore:定義接受到ARP請求時的相應級別

0: 只要本地配置的有相應地址,就給予響應。(默認)

1: 僅回應目標IP地址是本地的入網地址的arp請求。

2: 僅回應目標IP地址是本地的入網地址,而且源IP和目標IP在同一個子網的arp請 求。

3: 不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應

4-7:保留未使用

8: 不回應所有的arp請求。

arp_announce:定義將自己地址向外通告是的通告級別;

0: 將本地任何接口上的任何地址向外通告

1: 試圖僅向目標網絡通告與其網絡匹配的地址

2: 僅向與本地接口上地址匹配的網絡進行通告

5.2.3、DR特性

l 特點1:保證前端路由將目標地址為VIP報文統統發給Director Server,而不是RS。

l Director和RS的VIP為同一個VIP。

l RS可以使用私有地址;也可以是公網地址,如果使用公網地址,此時可以通過互聯網對RIP進行直接訪問。

l RS跟Director Server必須在同一個物理網絡中。

l 所有的請求報文經由Director Server,但響應報文必須不能進過Director Server。

l 不支持地址轉換,也不支持端口映射

l RS可以是大多數常見的操作系統

l RS的網關絕不允許指向DIP(因為我們不允許他經過director)

l RS上的lo接口配置VIP的IP地址

l DR模式是市面上用得最廣的。

l 缺陷:RS和DS必須在同一機房中

補充:特點1的解決方法

l 在前端路由器做靜態地址路由綁定,將對於VIP的地址僅路由到Director Server。

l 存在問題:用戶未必有路由操作權限,因為有可能是運營商提供的,所以這個方法未必實用。

l arptables:在arp的層次上實現在ARP解析時做防火墻規則,過濾RS響應ARP請求。這是由iptables提供的。

l 修改RS上內核參數(arp_ignore和arp_announce)將RS上的VIP配置在lo接口的別名上,並限制其不能響應對VIP地址解析請求。

5.3、Tunnel模式

5.3.1、Tunnel模式工作原理

技術分享圖片

1) 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP 。

2) PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈。

3) IPVS比對數據包請求的服務是否為集群服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,目標IP為RIP。然後發至POSTROUTING鏈。 此時源IP為DIP,目標IP為RIP。

4) POSTROUTING鏈根據最新封裝的IP報文,將數據包發至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時通過隧道傳輸)。 此時源IP為DIP,目標IP為RIP。

5) RS接收到報文後發現是自己的IP地址,就將報文接收下來,拆除掉最外層的IP後,會發現裏面還有一層IP首部,而且目標是自己的lo接口VIP,那麽此時RS開始處理此請求,處理完成之後,通過lo接口送給eth0網卡,然後向外傳遞。 此時的源IP地址為VIP,目標IP為CIP

6)響應報文最終送達至客戶端

5.3.2、Tunnel模式特性

l RIP、VIP、DIP全是公網地址。

l RS的網關不會也不可能指向DIP

l 所有的請求報文經由Director Server,但響應報文必須不能進過Director Server

l 不支持端口映射

l RS的系統必須支持隧道

六、LVS的調度算法

固定調度算法:rr,wrr,dh,sh

動態調度算法:wlc,lc,lblc,lblcr

固定調度算法:即調度器不會去判斷後端服務器的繁忙與否,一如既往得將請求派發下去。

動態調度算法:調度器會去判斷後端服務器的繁忙程度,然後依據調度算法動態得派發請求。

6.1、rr:輪詢(round robin)

這種算法是最簡單的,就是按依次循環的方式將請求調度到不同的服務器上,該算法最大的特點就是簡單。輪詢算法假設所有的服務器處理請求的能力都是一樣的,調度器會將所有的請求平均分配給每個真實服務器,不管後端 RS 配置和處理能力,非常均衡地分發下去。這個調度的缺點是,不管後端服務器的繁忙程度是怎樣的,調度器都會講請求依次發下去。如果A服務器上的請求很快請求完了,而B服務器的請求一直持續著,將會導致B服務器一直很忙,而A很閑,這樣便沒起到均衡的左右。

6.2、wrr:加權輪詢(weight round robin)

這種算法比 rr 的算法多了一個權重的概念,可以給 RS 設置權重,權重越高,那麽分發的請求數越多,權重的取值範圍 0 – 100。主要是對rr算法的一種優化和補充, LVS 會考慮每臺服務器的性能,並給每臺服務器添加要給權值,如果服務器A的權值為1,服務器B的權值為2,則調度到服務器B的請求會是服務器A的2倍。權值越高的服務器,處理的請求越多。

6.3、dh:目標地址散列調度算法 (destination hash)

簡單的說,即將同一類型的請求分配給同一個後端服務器,例如將以 .jgp、.png等結尾的請求轉發到同一個節點。這種算法其實不是為了真正意義的負載均衡,而是為了資源的分類管理。這種調度算法主要應用在使用了緩存節點的系統中,提高緩存的命中率。

6.4、sh:源地址散列調度算法(source hash)

即將來自同一個ip的請求發給後端的同一個服務器,如果後端服務器工作正常沒有超負荷的話。這可以解決session共享的問題,但是這裏有個問題,很多企業、社區、學校都是共用的一個IP,這將導致請求分配的不均衡。

6.5、lc:最少連接數(least-connection)

這個算法會根據後端 RS 的連接數來決定把請求分發給誰,比如 RS1 連接數比 RS2 連接數少,那麽請求就優先發給 RS1。這裏問題是無法做到會話保持,即session共享。

6.6、wlc:加權最少連接數(weight least-connection)

這個比最少連接數多了一個加權的概念,即在最少連接數的基礎上加一個權重值,當連接數相近,權重值越大,越優先被分派請求。

6.7、lblc:基於局部性的最少連接調度算法(locality-based least-connection)

將來自同一目的地址的請求分配給同一臺RS如果這臺服務器尚未滿負荷,否則分配給連接數最小的RS,並以它為下一次分配的首先考慮。

6.8、lblcr:基於地址的帶重復最小連接數調度 (Locality-Based Least-Connection with Replication)

這個用得少,可以略過。

七、LVS部署

7.1、ipvsadm命令詳解

ipvsadm是ipvs的管理器,需要yum安裝。

基本用法:

ipvsadm COMMAND [protocol] service-address [scheduling-method] [persistence options]

ipvsadm COMMAND [protocol] service-address server-address [packet-forwarding-method] [weight options]

第一條命令用於向LVS系統中添加一個用於負載均衡的virtual server(VS);第二條命令用來修改已經存在的VS的配置,service address用來指定涉及的虛擬服務即虛擬地址,server-address指定涉及的真實地址。

命令參數:

-A, --add-service: 為ipvs虛擬服務器添加一個虛擬服務,即添加一個需要被負載均衡的虛擬地址。虛擬地址需要是ip地址,端口號,協議的形式。

-E, --edit-service: 修改一個虛擬服務。

-D, --delete-service: 刪除一個虛擬服務。

-C, --clear: 清除所有虛擬服務。

-R, --restore: 從標準輸入獲取ipvsadm命令。一般結合下邊的-S使用。

-S, --save: 從標準輸出輸出虛擬服務器的規則。可以將虛擬服務器的規則保存,在以後通過-R直接讀入,以實現自動化配置。

-a, --add-server: 為虛擬服務添加一個real server(RS)

-e, --edit-server: 修改RS

-d, --delete-server: 刪除

-L, -l, --list: 列出虛擬服務表中的所有虛擬服務。可以指定地址。添加-c顯示連接表。

-Z, --zero: 將所有數據相關的記錄清零。這些記錄一般用於調度策略。

--set tcp tcpfin udp:修改協議的超時時間。

--start-daemon state:設置虛擬服務器的備服務器,用來實現主備服務器冗余。(註:該功能只支持ipv4)

--stop-daemon: 停止備服務器。

-h, --help: 幫助。

參數:

以下參數可以接在上邊的命令後邊。

-t, --tcp-service service-address: 指定虛擬服務為tcp服務。service-address要是host[:port]的形式。端口是0表示任意端口。如果需要將端口設置為0,還需要加上-p選 項(持久連接)。

-u, --udp-service service-address:使用udp服務,其他同上。

-f, --fwmark-service integer: 用firewall mark取代虛擬地址來指定要被負載均衡的數據包,可以通過這個命令實現把不同地址、端口的虛擬地址整合成一個虛擬服 務,可以讓虛擬服務器同時截獲處理去往多個不同地址的數據包。fwmark可以通過iptables命令指定。如果用在ipv6需要加上-6。

-s, --scheduler scheduling-method:指定調度算法。調度算法可以指定以下8種:rr(輪詢),wrr(權重),lc(最後連接),wlc(權重),lblc(本地最後連接), lblcr(帶復制的本地最後連接),dh(目的地址哈希),sh(源地址哈希),sed(最小期望延遲),nq(永不排隊)

-p, --persistent [timeout]: 設置持久連接,這個模式可以使來自客戶的多個請求被送到同一個真實服務器,通常用於ftp或者ssl中。

-M, --netmask netmask: 指定客戶地址的子網掩碼。用於將同屬一個子網的客戶的請求轉發到相同服務器。

-r, --real-server server-address: 為虛擬服務指定數據可以轉發到的真實服務器的地址。可以添加端口號。如果沒有指定端口號,則等效於使用虛擬地址的端口號。

[packet-forwarding-method]: 此選項指定某個真實服務器所使用的數據轉發模式。需要對每個真實服務器分別指定模式。

-g, --gatewaying: 使用網關(即直接路由),此模式是默認模式。

-i, --ipip: 使用ipip隧道模式。

-m, --masquerading: 使用NAT模式。

-w, --weight weight: 設置權重。權重是0~65535的整數。如果將某個真實服務器的權重設置為0,那麽它不會收到新的連接,但是已有連接還會繼續維持 (這點和直接把某個真實服務器刪除時不同的)。

-x, --u-threshold uthreshold: 設置一個服務器可以維持的連接上限。0~65535。設置為0表示沒有上限。

-y, --l-threshold lthreshold: 設置一個服務器的連接下限。當服務器的連接數低於此值的時候服務器才可以重新接收連接。如果此值未設置,則當服務器的連接數 連續三次低於uthreshold時服務器才可以接收到新的連接。(PS:筆者以為此設定可能是為了防止服務器在能否接收連接這兩個狀態 上頻繁變換)

--mcast-interface interface: 指定使用備服務器時候的廣播接口。

--syncid syncid: 指定syncid,同樣用於主備服務器的同步。

以下選項用於list命令:

-c, --connection: 列出當前的IPVS連接。

--timeout: 列出超時

--daemon:

--stats: 狀態信息

--rate: 傳輸速率

--thresholds: 列出閾值

--persistent-conn: 堅持連接

--sor: 把列表排序。

--nosort: 不排序

-n, --numeric: 不對ip地址進行dns查詢

--exact: 單位

-6: 如果fwmark用的是ipv6地址需要指定此選項。

其他註意事項:

1)如果使用IPv6地址,需要在地址兩端加上“[]”。例如:ipvsadm -A -t [2001:db8::80]:80 -s rr

2)可以通過設置以下虛擬文件的值來防禦DoS攻擊:/proc/sys/net/ipv4/vs/drop_entry /proc/sys/net/ipv4/vs/drop_packet /proc/sys/net/ipv4/vs/secure_tcp

對於某一目的地址,對應有一個RS子集。對此地址的請求,為它分配子集中連接數最小的RS;如果子集中所有的服務器均已滿負荷,則從集群中選擇一個連接數較小的 服務器,將它加入到此子集並分配連接;若一定時間內,這個子集未被做任何修改,則將子集中負載最大的節點從子集刪除。

7.2、NAT模式測試

1)測試環境:

Director: centos 6.8 VIP:192.168.1.111

DIP:192.168.229.133

RealServer1: centos6.8 RIP:192.168.229.132

RealServer2: centos6.8 RIP:192.168.229.134

2)Director配置

安裝ipvsadm:

[root@ShiYanLou LVS]# yum install ipvsadm –y

編輯腳本:/LVS/install.sh

# director設置 nat 防火墻

#iptables -t nat -F

#iptables -t nat -X

#iptables -t nat -A POSTROUTING -s 192.168.229.0/24 -j MASQUERADE

#!/bin/bash

VIP=192.168.1.111

DIP=192.168.229.133

RIP1=192.168.229.132

RIP2=192.168.229.134

# director服務器上開啟路由轉發功能:

echo 1 > /proc/sys/net/ipv4/ip_forward

# 關閉 icmp 的重定向

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

# director設置 ipvsadm

IPVSADM=‘/sbin/ipvsadm‘

$IPVSADM -C

$IPVSADM -A -t $VIP:80 -s rr

$IPVSADM -a -t $VIP:80 -r $RIP1:80 -m

$IPVSADM -a -t $VIP:80 -r $RIP2:80 -m

3)RealServer配置

1、配置RealServer1和RealServer2的網關為DIP。如:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=00:0C:29:46:3B:8C

TYPE=Ethernet

UUID=e2fa0e51-7240-4ef9-8572-bf82ef8bb6a8

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.229.132

NETMASK=255.255.255.0

GATEWAY=192.168.229.133 #配置網關為DIP

2、安裝httpd

yum –y install httpd

標記網頁:

RealServer1:echo ”I am RealServer1 192.168.229.132”>/var/www/html/index.html

RealServer2:echo “I am RealServer2 192.168.229.134”>/var/www/html/index.html

4)驗證

多次訪問http://192.168.1.111

會輪詢得到“I am RealServer1 192.168.229.132”“I am RealServer2 192.168.229.134”

註意:關閉Director的防火墻iptables,不然訪問不成功。

7.3、DR模式測試

1)測試環境

Director: centos 6.8 VIP:eth0:0:192.168.299.111

DIP:eth0:192.168.229.133

RealServer1: centos6.8 RIP:eth0:192.168.229.132

VIP:lo:0:192.168.229.111

RealServer2: centos6.8 RIP:eth0:192.168.229.134

VIP:lo:0:192.168.229.111

2)Director配置

腳本如下:

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/sbin/ipvsadm

vip=192.168.229.111

rs1=192.168.229.132

rs2=192.168.229.134

ifconfig eth0:0 down

ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.0 up

route add -host $vip dev eth0:0

$ipv -C

$ipv -A -t $vip:80 -s rr

$ipv -a -t $vip:80 -r $rs1:80 -g

$ipv -a -t $vip:80 -r $rs2:80 –g

3)RealServer配置

腳本如下:

#!/bin/bash

vip=192.168.229.111

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

4)驗證

多次訪問http://192.168.1.111

會輪詢得到“I am RealServer1 192.168.229.132”“I am RealServer2 192.168.229.134”

註意:關閉Director的防火墻iptables,不然訪問不成功。

7.4、Tun模式測試

1)測試環境

Director: centos 6.8 VIP:eth0:0:192.168.299.111

DIP:eth0:192.168.229.133

RealServer1: centos6.8 RIP:eth0:192.168.229.132

VIP:tunl0:192.168.229.111

RealServer2: centos6.8 RIP:eth0:192.168.229.134

VIP:tunl0:192.168.229.111

2)Director配置

腳本如下:

#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

ipv=/sbin/ipvsadm

vip=192.168.229.111

rs1=192.168.229.132

rs2=192.168.229.134

ifconfig eth0:0 down

ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.0 up

route add -host $vip dev eth0:0

iptables -t nat -F

setenforce 0

$ipv -C

$ipv -A -t $vip:80 -s rr

$ipv -a -t $vip:80 -r $rs1:80 -i

$ipv -a -t $vip:80 -r $rs2:80 -i

3)RealServer配置

a、加載ipip模塊

[root@ulife3test LVS]# modprobe ipip

b、配置VIP:

[root@ulife3test LVS]# cd /etc/sysconfig/network-scripts/

[root@ulife3test network-scripts]# cp ifcfg-lo ifcfg-tunl0

[root@ulife3test network-scripts]# vi ifcfg-tunl0

DEVICE=tunl0

IPADDR=192.168.229.111

NETMASK=255.255.255.0

ONBOOT=yes

NAME=tunl0

[root@ulife3test network-scripts]# service network restart

c、關閉arp轉發:

[root@ulife3test network-scripts]# echo ‘0‘>/proc/sys/net/ipv4/ip_forward

[root@ulife3test network-scripts]# vi /etc/sysctl.conf #加入以下行

net.ipv4.conf.tunl0.arp_ignore = 1

net.ipv4.conf.tunl0.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.tunl0.rp_filter = 0

net.ipv4.conf.all.rp_filter = 0

[root@ulife3test network-scripts]# sysctl -p #永久生效

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key

error: "net.bridge.bridge-nf-call-iptables" is an unknown key

error: "net.bridge.bridge-nf-call-arptables" is an unknown key

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

net.ipv4.conf.tunl0.arp_ignore = 1

net.ipv4.conf.tunl0.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.tunl0.rp_filter = 0

net.ipv4.conf.all.rp_filter = 0

d、關閉selinux

setenforce 0或者修改/etc/selinux/config 配置文件中SELINUX=disabled然後重啟系統。

4)驗證

多次訪問http://192.168.1.111

會輪詢得到“I am RealServer1 192.168.229.132”“I am RealServer2 192.168.229.134”

註意:關閉Director的防火墻iptables,不然訪問不成功。

註:大部分內容摘自網絡,補充了我個人的實驗和理解。

LVS原理詳解以及部署