1 LVS 簡介
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器, 是一個由章文嵩博士發(fā)起的自由軟件項目,現(xiàn)在已經(jīng)是 Linux標準內(nèi)核的一部分。LVS是一種叫基于TCP/IP的負載均衡技術,轉(zhuǎn)發(fā)效率極高,具有處理百萬計并發(fā)連接請求的能力。
LVS的IP負載均衡技術是通過IPVS模塊實現(xiàn)的。IPVS模塊是LVS集群的核心軟件模塊,它安裝在LVS集群作為負載均衡的主節(jié)點上,虛擬出一個IP地址和端口對外提供服務。用戶通過訪問這個虛擬服務(VS),然后訪問請求由負載均衡器(LB)調(diào)度到后端真實服務器(RS)中,由RS實際處理用戶的請求給返回響應。
2 LVS轉(zhuǎn)發(fā)模式
根據(jù)負載均衡器轉(zhuǎn)發(fā)客戶端請求以及RS返回響應機制的不同,將IPVS的轉(zhuǎn)發(fā)模式分為三種:VS/NAT,VS/DR,VS/TUN
2.1DR模式(Direct Routing)
DR模式下,客戶端的請求包到達負載均衡器的虛擬服務IP端口后,負載均衡器不會改寫請求包的IP和端口,但是會改寫請求包的MAC地址為后端RS的MAC地址,然后將數(shù)據(jù)包轉(zhuǎn)發(fā);真實服務器處理請求后,響應包直接回給客戶端,不再經(jīng)過負載均衡器。所以DR模式的轉(zhuǎn)發(fā)效率是最高的,特別適合下行流量較大的業(yè)務場景,比如請求視頻等大文件。
DR模式的特點:
- 數(shù)據(jù)包在LB轉(zhuǎn)發(fā)過程中,源/目的IP端口都不會變化
LB只是將數(shù)據(jù)包的MAC地址改寫為RS的MAC地址,然后轉(zhuǎn)發(fā)給相應的RS。
- 每臺RS上都必須在環(huán)回網(wǎng)卡上綁定LB的虛擬服務IP
因為LB轉(zhuǎn)發(fā)時并不會改寫數(shù)據(jù)包的目的IP,所以RS收到的數(shù)據(jù)包的目的IP仍是LB的虛擬服務IP。為了保證RS能夠正確處理該數(shù)據(jù)包,而不是丟棄,必須在RS的環(huán)回網(wǎng)卡上綁定LB的虛擬服務IP。這樣RS會認為這個虛擬服務IP是自己的IP,自己是能夠處理這個數(shù)據(jù)包的。否則RS會直接丟棄該數(shù)據(jù)包!
- RS上的業(yè)務進程必須監(jiān)聽在環(huán)回網(wǎng)卡的虛擬服務IP上,且端口必須和LB上的虛擬服務端口一致
因為LB不會改寫數(shù)據(jù)包的目的端口,所以RS服務的監(jiān)聽端口必須和虛擬服務端口一致,否則RS會直接拒絕該數(shù)據(jù)包。
- RS處理完請求后,響應直接回給客戶端,不再經(jīng)過LB
因為RS收到的請求數(shù)據(jù)包的源IP是客戶端的IP,所以理所當然RS的響應會直接回給客戶端,而不會再經(jīng)過LB。這時候要求RS和客戶端之間的網(wǎng)絡是可達的。
- LB和RS須位于同一個子網(wǎng)
因為LB在轉(zhuǎn)發(fā)過程中需要改寫數(shù)據(jù)包的MAC為RS的MAC地址,所以要能夠查詢到RS的MAC。而要獲取到RS的MAC,則需要保證二者位于一個子網(wǎng),否則LB只能獲取到RS網(wǎng)關的MAC地址。

2.2 NAT模式(Network Address Translation)
NAT模式下,請求包和響應包都需要經(jīng)過LB處理。當客戶端的請求到達虛擬服務后,LB會對請求包做目的地址轉(zhuǎn)換(DNAT),將請求包的目的IP改寫為RS的IP。當收到RS的響應后,LB會對響應包做源地址轉(zhuǎn)換(SNAT),將響應包的源IP改寫為LB的IP。
NAT模式的特點:
- LB會修改數(shù)據(jù)包的地址
對于請求包,會進行DNAT;對于響應包,會進行SNAT。
- LB會透傳客戶端IP到RS(DR模式也會透傳)
雖然LB在轉(zhuǎn)發(fā)過程中做了NAT轉(zhuǎn)換,但是因為只是做了部分地址轉(zhuǎn)發(fā),所以RS收到的請求包里是能看到客戶端IP的。
- 需要將RS的默認網(wǎng)關地址配置為LB的浮動IP地址
因為RS收到的請求包源IP是客戶端的IP,為了保證響應包在返回時能走到LB上面,所以需要將RS的默認網(wǎng)關地址配置為LB的虛擬服務IP地址。當然,如果客戶端的IP是固定的,也可以在RS上添加明細路由指向LB的虛擬服務IP,不用改默認網(wǎng)關。
- LB和RS須位于同一個子網(wǎng),并且客戶端不能和LB/RS位于同一子網(wǎng)
因為需要將RS的默認網(wǎng)關配置為LB的虛擬服務IP地址,所以需要保證LB和RS位于同一子網(wǎng)。
又因為需要保證RS的響應包能走回到LB上,則客戶端不能和RS位于同一子網(wǎng)。否則RS直接就能獲取到客戶端的MAC,響應包就直接回給客戶端了,不會走網(wǎng)關,也就走不到LB上面了。這時候由于沒有LB做SNAT,客戶端收到的響應包源IP是RS的IP,而客戶端的請求包目的IP是LB的虛擬服務IP,這時候客戶端無法識別響應包,會直接丟棄。

2.3 TUNNEL模式
IP隧道(IP tunneling)是將一個IP報文封裝在另一個IP報文的技術,這可以使得目標為一個IP地址的數(shù)據(jù)報文能被封裝和轉(zhuǎn)發(fā)到另一個IP地址。IP隧道技 術亦稱為IP封裝技術(IP encapsulation)。IP隧道主要用于移動主機和虛擬私有網(wǎng)絡(Virtual Private Network),在其中隧道都是靜態(tài)建立的,隧道一端有一個IP地址,另一端也有唯一的IP地址。
利用IP隧道技術將請求報文封裝轉(zhuǎn)發(fā)給后端服務器,響應報文能從后端服務器直接返回給客戶。但在這里,后端服務器有一組而非一個,所以我們不可 能靜態(tài)地建立一一對應的隧道,而是動態(tài)地選擇一臺服務器,將請求報文封裝和轉(zhuǎn)發(fā)給選出的服務器。這樣,可以利用IP隧道的原理將一組服務器上的網(wǎng)絡服 務組成在一個IP地址上的虛擬網(wǎng)絡服務。各個服務器將VIP地址配置在自己的IP隧道設備上。
它的連接調(diào)度和管理與VS/NAT中的一樣,只是它的報文轉(zhuǎn)發(fā)方法不同。調(diào)度器根據(jù)各個服務器的負載情況, 動態(tài)地選擇一臺服務器,將請求報文封裝在另一個IP報文中,再將封裝后的IP報文轉(zhuǎn)發(fā)給選出的服務器;服務器收到報文后,先將報文解封獲得原來目標地址為 VIP的報文,服務器發(fā)現(xiàn)VIP地址被配置在本地的IP隧道設備上,所以就處理這個請求,然后根據(jù)路由表將響應報文直接返回給客戶。

3 IPVS調(diào)度算法
3.1 輪叫調(diào)度(Round-Robin Scheduling)
輪叫調(diào)度(Round Robin Scheduling)算法就是以輪叫的方式依次將請求調(diào)度不同的服務器,即每次調(diào)度執(zhí)行i = (i + 1) mod n,并選出第i臺服務器。算法的優(yōu)點是其簡潔性,它無需記錄當前所有連接的狀態(tài),所以它是一種無狀態(tài)調(diào)度。
3.2 加權輪叫調(diào)度(Weighted Round-Robin Scheduling)
LB會根據(jù)RS上配置的權重,將消息按權重比分發(fā)到不同的RS上。可以給性能更好的RS節(jié)點配置更高的權重,提升集群整體的性能。
3.3 最小連接調(diào)度(Least-Connection Scheduling)
最小連接調(diào)度(Least-Connection Scheduling)算法是把新的連接請求分配到當前連接數(shù)最小的服務器。最小連接調(diào)度是一種動態(tài)調(diào)度算法,它通過服務器當前所活躍的連接數(shù)來估計服務 器的負載情況。調(diào)度器需要記錄各個服務器已建立連接的數(shù)目,當一個請求被調(diào)度到某臺服務器,其連接數(shù)加1;當連接中止或超時,其連接數(shù)減一。
3.4 加權最小連接調(diào)度(Weighted Least-Connection Scheduling)
加權最小連接調(diào)度(Weighted Least-Connection Scheduling)算法是最小連接調(diào)度的超集,各個服務器用相應的權值表示其處理性能。服務器的缺省權值為1,系統(tǒng)管理員可以動態(tài)地設置服務器的權 值。加權最小連接調(diào)度在調(diào)度新連接時盡可能使服務器的已建立連接數(shù)和其權值成比例。
3.5 基于局部性的最少鏈接(Locality-Based Least Connections Scheduling)
基于局部性的最少鏈接調(diào)度(Locality-Based Least Connections Scheduling,以下簡稱為LBLC)算法是針對請求報文的目標IP地址的負載均衡調(diào)度,目前主要用于Cache集群系統(tǒng),因為在Cache集群中 客戶請求報文的目標IP地址是變化的。這里假設任何后端服務器都可以處理任一請求,算法的設計目標是在服務器的負載基本平衡情況下,將相同目標IP地址的 請求調(diào)度到同一臺服務器,來提高各臺服務器的訪問局部性和主存Cache命中率,從而整個集群系統(tǒng)的處理能力。
3.6 帶復制的基于局部性最少鏈接(Locality-Based Least Connections with Replication Scheduling)
帶復制的基于局部性最少鏈接調(diào)度(Locality-Based Least Connections with Replication Scheduling,以下簡稱為LBLCR)算法也是針對目標IP地址的負載均衡,目前主要用于Cache集群系統(tǒng)。它與LBLC算法的不同之處是它要 維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。對于一個“熱門”站點的服務請求,一臺Cache 服務器可能會忙不過來處理這些請求。這時,LBLC調(diào)度算法會從所有的Cache服務器中按“最小連接”原則選出一臺Cache服務器,映射該“熱門”站 點到這臺Cache服務器,很快這臺Cache服務器也會超載,就會重復上述過程選出新的Cache服務器。這樣,可能會導致該“熱門”站點的映像會出現(xiàn) 在所有的Cache服務器上,降低了Cache服務器的使用效率。LBLCR調(diào)度算法將“熱門”站點映射到一組Cache服務器(服務器集合),當該“熱 門”站點的請求負載增加時,會增加集合里的Cache服務器,來處理不斷增長的負載;當該“熱門”站點的請求負載降低時,會減少集合里的Cache服務器 數(shù)目。這樣,該“熱門”站點的映像不太可能出現(xiàn)在所有的Cache服務器上,從而提供Cache集群系統(tǒng)的使用效率。
3.7 目標地址散列調(diào)度(Destination Hashing Scheduling)
目標地址散列調(diào)度(Destination Hashing Scheduling)算法也是針對目標IP地址的負載均衡,但它是一種靜態(tài)映射算法,通過一個散列(Hash)函數(shù)將一個目標IP地址映射到一臺服務器。
目標地址散列調(diào)度算法先根據(jù)請求的目標IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發(fā)送到該服務器,否則返回空。
3.8 源地址散列調(diào)度(Source Hashing Scheduling)
源地址散列調(diào)度(Source Hashing Scheduling)算法正好與目標地址散列調(diào)度算法相反,它根據(jù)請求的源IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發(fā)送到該服務器,否則返回空。它采用的散列函數(shù)與目標地址散列調(diào)度算法 的相同。它的算法流程與目標地址散列調(diào)度算法的基本相似,除了將請求的目標IP地址換成請求的源IP地址。
4 LVS DR實驗
4.1 LVS轉(zhuǎn)發(fā)流程及原理
客戶端發(fā)送對VIP的請求,lvs負載到后端某一臺server,后端server處理后,直接封包回送客戶端,源IP地址一定是lvs上面配的那個公網(wǎng)服務地址,也就后端server要配置這個ip,后端server收到的數(shù)據(jù)包是lvs沒有變動過的(IP:vip),多個server,接入互聯(lián)網(wǎng)的server持有相同的IP,是不允許的,因此,必須將后端server中的vip隱藏起來(對外隱藏,對自己可見)
4.2 名詞解釋
VIP: 虛擬服務器地址
DIP: 轉(zhuǎn)發(fā)的網(wǎng)絡地址
1,和RIP通信:ARP協(xié)議,獲取Real Server的RIP:MAC地址;
2,轉(zhuǎn)發(fā)Client的數(shù)據(jù)包到RIP上,RIP上要求有VIP(對外隱藏VIP);
RIP: 后端真實主機(后端服務器)
CIP: 客戶端IP地址
4.3 隱藏VIP方法
對外隱藏,對內(nèi)可見
kernel parameter:
目標mac地址為全F,交換機觸發(fā)廣播
# 每個網(wǎng)卡對應一個目錄
[root@common conf]# pwd
/proc/sys/net/ipv4/conf
[root@common conf]# ls
all default docker0 ens33 ens37 lo tunl0
arp_ignore: 定義接收到ARP請求時的響應級別;
0:只要本地配置的有相應地址,就給予響應;
1:僅在請求的目標(MAC)地址配置請求
到達的接口上的時候,才給予響應;
arp_announce:定義將自己地址向外通告時的通告級別;
0:將本地任何接口上的任何地址向外通告;
1:試圖僅向目標網(wǎng)絡通告與其網(wǎng)絡匹配的地址;
2:僅向與本地接口上地址匹配的網(wǎng)絡進行通告;
4.4 環(huán)境準備
lvs 主機:192.168.56.118
RIP主機:也就是需要負載的服務器,192.168.56.101-103
LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統(tǒng),后來將lvs嵌入到linux內(nèi)核,叫做ipvs
4.5 LVS命令
ipvs參數(shù)
添加虛擬服務器
語法:ipvsadm -A [-t|u|f] [vip_addr:port] [-s:指定算法]
-A:添加
-t:TCP協(xié)議
-u:UDP協(xié)議
-f:防火墻標記
-D:刪除虛擬服務器記錄
-E:修改虛擬服務器記錄
-C:清空所有記錄
-L:查看
添加后端RealServer
語法:ipvsadm -a [-t|u|f] [vip_addr:port] [-r ip_addr] [-g|i|m] [-w 指定權重]
-a:添加
-t:TCP協(xié)議
-u:UDP協(xié)議
-f:防火墻標記
-r:指定后端realserver的IP
-g:DR模式
-i:TUN模式
-m:NAT模式
-w:指定權重
-d:刪除realserver記錄
-e:修改realserver記錄
-l:查看
通用:
ipvsadm -ln:查看規(guī)則
保存規(guī)則
-S
ipvsadm -S > /path/to/somefile
載入此前的規(guī)則:
-R
ipvsadm -R < /path/form/somefile
4.6 LVS主機操作
配置lvs的VIP
[root@common conf]# ifconfig ens37:0 192.168.56.188/24
ens37:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.188 netmask 255.255.255.0 broadcast 192.168.56.255
ether 00:0c:29:1f:1f:e2 txqueuelen 1000 (Ethernet)
確保/proc/sys/net/ipv4/ip_forward 內(nèi)容是1
echo “1” > /proc/sys/net/ipv4/ip_forward
調(diào)整RS的響應。通告級別(每一臺RS都配):
echo 1 > /proc/sys/net/ipv4/conf/ens37/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/ens37/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
配置RS的VIP(每一臺RS都配)
ifconfig lo:8 192.168.56.188 netmask 255.255.255.255
lo:8: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.56.188 netmask 255.255.255.255
loop txqueuelen 1000 (Local Loopback)
啟動RS上的httpd
yum install httpd -y
編寫測試文件
# vim /var/www/html/index.html
from masterxxx
啟動httpd
[root@k8s-master1 html]# systemctl start httpd
客戶端驗證:
RIP:80 能顯示
VIP:80不能顯示
負載服務器安裝LVS管理工具—ipvsadm
yum install ipvsadm -y
# 配置規(guī)則
ipvsadm -A -t 192.168.56.188:80 -s rr
ipvsadm -a -t 192.168.56.188:80 -r 192.168.56.11 -g
ipvsadm -a -t 192.168.56.188:80 -r 192.168.56.12 -g
ipvsadm -a -t 192.168.56.188:80 -r 192.168.56.13 -g
# 查看規(guī)則
ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.188:80 rr
-> 192.168.56.11:80 Route 1 0 0
-> 192.168.56.12:80 Route 1 0 0
-> 192.168.56.13:80 Route 1 0 0
瀏覽器刷新: 訪問vip:80
[root@common nginx]# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 01:44 FIN_WAIT 192.168.56.1:57636 192.168.56.188:80 192.168.56.13:80
TCP 01:49 FIN_WAIT 192.168.56.1:57698 192.168.56.188:80 192.168.56.12:80
TCP 01:48 FIN_WAIT 192.168.56.1:57687 192.168.56.188:80 192.168.56.11:80
TCP 01:47 FIN_WAIT 192.168.56.1:57677 192.168.56.188:80 192.168.56.13:80
TCP 01:46 FIN_WAIT 192.168.56.1:57668 192.168.56.188:80 192.168.56.11:80
TCP 00:10 FIN_WAIT 192.168.56.1:56189 192.168.56.188:80 192.168.56.13:80
TCP 14:46 ESTABLISHED 192.168.56.1:51771 192.168.56.188:80 192.168.56.11:80
TCP 01:48 FIN_WAIT 192.168.56.1:57697 192.168.56.188:80 192.168.56.13:80
TCP 01:47 FIN_WAIT 192.168.56.1:57686 192.168.56.188:80 192.168.56.12:80
TCP 01:49 FIN_WAIT 192.168.56.1:57703 192.168.56.188:80 192.168.56.11:80
TCP 01:45 FIN_WAIT 192.168.56.1:57653 192.168.56.188:80 192.168.56.12:80
TCP 14:48 ESTABLISHED 192.168.56.1:54055 192.168.56.188:80 192.168.56.12:80
4 LVS TUNNEL實驗
4.1 原理
在DR模式中是所有服務機共享一個VIP,但是在IP隧道模式中,就相當于主代理機將包經(jīng)過自己打包之后,將IP轉(zhuǎn)化成公網(wǎng)可傳遞的IP,并將消息經(jīng)過自己又一次的打包,發(fā)送給真實服務器,真實服務器對這個請求作出響應,這樣就達到一個可以跨地區(qū)的傳輸。并且也避免了DR模式中代理機與真實服務機必須在同一局域網(wǎng)的不便。
說明:
1、當用戶請求到達Director Server,此時請求的數(shù)據(jù)報文會先到內(nèi)核空間的PREROUTING鏈。此時報文的源IP為CIP,目標IP為VIP 。
2、PREROUTING檢查發(fā)現(xiàn)數(shù)據(jù)包的目標IP是本機,將數(shù)據(jù)包送至INPUT鏈
3、IPVS比對數(shù)據(jù)包請求的服務是否為集群服務,若是,在請求報文的首部再次封裝一層IP報文,封裝源IP為為DIP,目標IP為RIP。然后發(fā)至POSTROUTING鏈。此時源IP為DIP,目標IP為RIP
4、POSTROUTING鏈根據(jù)最新封裝的IP報文,將數(shù)據(jù)包發(fā)至RS(因為在外層封裝多了一層IP首部,所以可以理解為此時通過隧道傳輸)。此時源IP為DIP,目標IP為RIP
5、RS接收到報文后發(fā)現(xiàn)是自己的IP地址,就將報文接收下來,拆除掉最外層的IP后,會發(fā)現(xiàn)里面還有一層IP首部,而且目標是自己的lo接口VIP,那么此時RS開始處理此請求,處理完成之后,通過lo接口送給eth0網(wǎng)卡,然后向外傳遞。此時的源IP地址為VIP,目標IP為CIP
4.2 LVS TUNNEL特性
RIP、VIP、DIP全是公網(wǎng)地址
RS的網(wǎng)關不會也不可能指向DIP
所有的請求報文經(jīng)由Director Server,但響應報文必須不能進過Director Server
不支持端口映射
RS的系統(tǒng)必須支持隧道
4.3 實驗環(huán)境
LVS服務器:192.168.56.100
RS服務器:192.168.56.101,192.168.56.102,192.168.56.103
4.4 LVS服務器配置
4.4.1 安裝ipvsadm
[root@hadoop100 ~]# yum install ipvsadm -y
4.4.2 清空ipvs配置,如果之前有的話
[root@hadoop100 ~]# ipvsadm -C
4.4.3 配置tunnel信息
[root@hadoop100 ~]# modprobe ipip # 加入ip隧道命令
[root@hadoop100 ~]# ip addr add 192.168.56.188/24 dev tunl0 # 配置VIP
[root@hadoop100 ~]# ip link set up tunl0 啟動隧道,使這個隧道IP生效
# 查看配置是否生效
[root@hadoop100 ~]# ip addr show
...
4: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
inet 192.168.56.188/24 scope global tunl0
valid_lft forever preferred_lft forever
4.4.4 配置ipvs
[root@hadoop100 ~]# ipvsadm -A -t 192.168.56.188:80 -s rr # 添加vip訪問記錄
[root@hadoop100 ~]# ipvsadm -a -t 192.168.56.188:80 -r 192.168.56.101:80 -i # 添加RS
[root@hadoop100 ~]# ipvsadm -a -t 192.168.56.188:80 -r 192.168.56.102:80 -i # 添加RS
[root@hadoop100 ~]# ipvsadm -a -t 192.168.56.188:80 -r 192.168.56.103:80 -i # 添加RS
[root@hadoop100 ~]# ipvsadm -ln # 查看ipvs配置信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.188:80 rr
-> 192.168.56.101:80 Tunnel 1 0 0
-> 192.168.56.102:80 Tunnel 1 0 0
-> 192.168.56.103:80 Tunnel 1 0 0
4.4.5 ### 系統(tǒng)配置 vim /etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.tunl0.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.ens33.send_redirects=1
net.ipv4.conf.ens34.send_redirects=1
4.4.6 生效配置
[root@hadoop100 ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.tunl0.send_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.ens33.send_redirects = 1
net.ipv4.conf.ens34.send_redirects = 1
4.5 RS服務器配置,所有后臺服務器配置相同
4.5.1 安裝http
yum install httpd -y
4.5.2 配置httpd頁面并啟動httpd服務
[root@hadoop101 conf]# cat /var/www/html/index.html
i am real server1
[root@hadoop102 conf]# cat /var/www/html/index.html
i am real server2
[root@hadoop103 conf]# cat /var/www/html/index.html
i am real server3
systemct start httpd # 啟動httpd
4.5.3 訪問測試
[hadoop@hadoop ~]$ curl 192.168.56.101
i am real server1
[hadoop@hadoop ~]$ curl 192.168.56.102
i am real server2
[hadoop@hadoop ~]$ curl 192.168.56.103
i am real server3
4.5.4 LVS Tunnel配置, 以101服務器為例
[root@hadoop101 ~]# modprobe ipip # 加入ip隧道命令
[root@hadoop101 ~]# ip addr add 192.168.56.188/32 dev tunl0 # 配置VIP
[root@hadoop101 ~]# ip link set up tunl0 啟動隧道,使這個隧道IP生效
[root@hadoop103 conf]# ip addr show # 查看網(wǎng)卡信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:cb:09:2b brd ff:ff:ff:ff:ff:ff
inet 10.4.7.131/24 brd 10.4.7.255 scope global dynamic ens33
valid_lft 1094sec preferred_lft 1094sec
inet6 fe80::20c:29ff:fecb:92b/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:cb:09:35 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.103/24 brd 192.168.56.255 scope global ens34
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fecb:935/64 scope link
valid_lft forever preferred_lft forever
4: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
inet 192.168.56.188/32 scope global tunl0
valid_lft forever preferred_lft forever
4.5.5 ### 系統(tǒng)配置 vim /etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.tunl0.rp_filter=0
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.tunl0.arp_ignore=1
net.ipv4.conf.tunl0.arp_announce=2
net.ipv4.conf.ens33.arp_ignore=1
net.ipv4.conf.ens33.arp_announce=2
net.ipv4.conf.ens34.arp_ignore=1
net.ipv4.conf.ens34.arp_announce=2
4.5.6 生效配置
[root@hadoop101 conf]# sysctl -p
vm.max_map_count = 655360
fs.file-max = 655360
net.ipv4.ip_forward = 0
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.ens34.arp_ignore = 1
net.ipv4.conf.ens34.arp_announce = 2
4.6 測試
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server3
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server2
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server1
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server3
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server2
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server1
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server3
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server2
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server1
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server3
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server2
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server1
[hadoop@hadoop ~]$ curl 192.168.56.188
i am real server3
[hadoop@hadoop ~]$ curl 192.168.56.188