一、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基本原理
- 當用戶向負載均衡調度器(Director Server)發起請求,調度器將請求發往至內核空間。
- PREROUTING鏈首先會接收到用戶請求,判斷目標IP確定是本機IP,將數據包發往INPUT鏈。
- IPVS是工作在INPUT鏈上的,當用戶請求到達INPUT時,IPVS會將用戶請求和自己已定義好的集群服務進行比對,如果用戶請求的就是定義的集群服務,那么此時IPVS會強行修改數據包里的目標IP地址及端口,並將新的數據包發往POSTROUTING鏈。
- POSTROUTING鏈接收數據包后發現目標IP地址剛好是自己的后端服務器,那么此時通過選路,將數據包最終發送給后端的服務器。
三、LVS組成
LVS 由2部分程序組成,包括 ipvs 和 ipvsadm。
- IPVS(ip virtual server):一段代碼工作在內核空間,叫IPVS,是真正生效實現調度的代碼。IPVS的總體結構主要由IP包處理、負載均衡算法、系統配置與管理三個模塊及虛擬服務器與真實服務器鏈表組成。
- ipvsadm:另外一段是工作在用戶空間,叫ipvsadm,即IPVS管理器,負責為ipvs內核框架編寫規則,定義誰是集群服務,而誰是后端真實的服務器(Real Server)。
四、LVS技術術語
- DS:Director Server。指的是前端負載均衡器節點。
- RS:Real Server。后端真實的工作服務器。
- VIP:Virtual IP,向外部直接面向用戶請求,作為用戶請求的目標的IP地址。
- DIP:Director Server IP,主要用於和內部主機通訊的IP地址。
- RIP:Real Server IP,后端服務器的IP地址。
- CIP:Client IP,訪問客戶端的IP地址。
五、LVS工作模式和原理
5.1、NAT模式
5.1.1、NAT模式工作原理
- 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP。
- PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈。
- IPVS比對數據包請求的服務是否為集群服務,若是,修改數據包的目標IP地址為后端服務器IP,然后將數據包發至POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP。
- POSTROUTING鏈通過選路,將數據包發送給Real Server
- Real Server比對發現目標為自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,目標IP為CIP。
- Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然后響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP。
5.1.2、NAT特性
- RIP最好是內網IP
- RS的網關必須指向DIP。
- DIP和RIP必須在同一個網段內。
- 請求和回應的報文都必須經過director,director容易成為瓶頸。
- nat支持端口轉發。
5.2、DR模式
5.2.1、DR模式工作原理
- 首先用戶用CIP請求VIP。
- 根據上圖可以看到,不管是Director Server還是Real Server上都需要配置相同的VIP,那么當用戶請求到達我們的集群網絡的前端路由器的時候,請求數據包的源地址為CIP目標地址為VIP,此時路由器會發廣播問誰是VIP,那么我們集群中所有的節點都配置有VIP,此時誰先響應路由器那么路由器就會將用戶請求發給誰,這樣一來我們的集群系統是不是沒有意義了,那我們可以在網關路由器上配置靜態路由指定VIP就是Director Server,或者使用一種機制不讓Real Server 接收來自網絡中的ARP地址解析請求,這樣一來用戶的請求數據包都會經過Director Servrer。
- 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP。
- PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈。
- IPVS比對數據包請求的服務是否為集群服務,若是,將請求報文中的源MAC地址修改為DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,然后將數據包發至POSTROUTING鏈。 此時的源IP和目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,目標MAC地址為RIP的MAC地址
- 由於DS和RS在同一個網絡中,所以是通過二層來傳輸。POSTROUTING鏈檢查目標MAC地址為RIP的MAC地址,那么此時數據包將會發至Real Server。
- RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之后,將響應報文通過lo接口傳送給eth0網卡然后向外發出。 此時的源IP地址為VIP,目標IP為CIP
- 響應報文最終送達至客戶端。
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特性
- 特點1:保證前端路由將目標地址為VIP報文統統發給Director Server,而不是RS。
- Director和RS的VIP為同一個VIP。
- RS可以使用私有地址;也可以是公網地址,如果使用公網地址,此時可以通過互聯網對RIP進行直接訪問。
- RS跟Director Server必須在同一個物理網絡中。
- 所有的請求報文經由Director Server,但響應報文必須不能進過Director Server。
- 不支持地址轉換,也不支持端口映射
- RS可以是大多數常見的操作系統
- RS的網關絕不允許指向DIP(因為我們不允許他經過director)
- RS上的lo接口配置VIP的IP地址
- DR模式是市面上用得最廣的。
- 缺陷:RS和DS必須在同一機房中
補充:特點1的解決方法
- 在前端路由器做靜態地址路由綁定,將對於VIP的地址僅路由到Director Server。存在問題:用戶未必有路由操作權限,因為有可能是運營商提供的,所以這個方法未必實用。
- arptables:在arp的層次上實現在ARP解析時做防火牆規則,過濾RS響應ARP請求。這是由iptables提供的。
- 修改RS上內核參數(arp_ignore和arp_announce)將RS上的VIP配置在lo接口的別名上,並限制其不能響應對VIP地址解析請求。
5.3、Tunnel模式
5.3.1、Tunnel模式工作原理
- 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP 。
- PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈。
- IPVS比對數據包請求的服務是否為集群服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,目標IP為RIP。然后發至POSTROUTING鏈。 此時源IP為DIP,目標IP為RIP。
- POSTROUTING鏈根據最新封裝的IP報文,將數據包發至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時通過隧道傳輸)。 此時源IP為DIP,目標IP為RIP。
- RS接收到報文后發現是自己的IP地址,就將報文接收下來,拆除掉最外層的IP后,會發現里面還有一層IP首部,而且目標是自己的lo接口VIP,那么此時RS開始處理此請求,處理完成之后,通過lo接口送給eth0網卡,然后向外傳遞。 此時的源IP地址為VIP,目標IP為CIP
- 響應報文最終送達至客戶端
5.3.2、Tunnel模式特性
- RIP、VIP、DIP全是公網地址。
- RS的網關不會也不可能指向DIP
- 所有的請求報文經由Director Server,但響應報文必須不能進過Director Server
- 不支持端口映射
- 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地址需要指定此選項。
其他注意事項:
- 如果使用IPv6地址,需要在地址兩端加上“[]”。例如:ipvsadm -A -t [2001:db8::80]:80 -s rr
- 可以通過設置以下虛擬文件的值來防御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 #!/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配置
- 配置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
- 安裝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)驗證
會輪詢得到“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.229.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)驗證
會輪詢得到“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 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)驗證
會輪詢得到“I am RealServer1 192.168.229.132”“I am RealServer2 192.168.229.134”
注意:關閉Director的防火牆iptables,不然訪問不成功。
注:大部分內容摘自網絡,補充了我個人的實驗和理解。