使用LVS的dr模型負載均衡兩台web伺服器。
條件:
隻有一個公網位址。172.10.0.9
RIP使用私有位址
如下圖所示:
路由器處理資料封包的流程:
使用者通路叢集服務的資料封包到達路由器後,通過路由決策發現從路由器的 eth1 網卡可以到達:172.10.0.0/16網絡,(eth1 網卡配置有位址:172.10.0.1)路由器發現是本地網絡的通訊(基于MAC位址通信的),于是路由器向172.10.0.0/16網絡發送ARP位址解析廣播請求:請求172.10.0.9對應的MAC位址,在172.10.0.0/16網絡的所有主機都可以收到ARP位址解析請求。如果該網絡的某台主機配置有路由器請求解析的IP位址,就把MAC位址告訴,路由器。路由器就會使用該MAC位址把資料封包發送給該主機。
LVS負載均衡原理:
通路叢集服務的請求都要先到達Director,由Director根據排程算法。把通路叢集服務的請求均衡到後端的RealServer.
根據上述分析,要做下述一些配置:
1、請求封包流入
因為,我們的 Directory、Realserver1、Realserver2 都配置有VIP位址,是以基于本地通訊的原理
和LVS負載均衡的工作原理考慮:
目的:要控制路由器把使用者請求通路叢集服務的資料封包隻送到Director,
不會把資料封包送到 RealServer.
手段:通過控制無論任何時候路由器的ARP緩存中:VIP對應的MAC位址都是Director的VIP位址所在的
網卡的MAC位址。這樣保證路由器一定會把資料封包送到Director
方法:
LVS的dr模型,Director通過修改請求通路叢集服務的封包的MAC位址實作把資料封包分發到後端的RealServer.
是以,要保證Director能夠基于MAC位址與後端的RealServer進行通信。
方法:Director與RealServer在同一個實體網絡。
2、響應封包流出
當RealServer 建構完響應封包之後,直接把封包送給用戶端。
因為,用戶端請求的是VIP,是以,RealServer 建構的響應的資料封包的源IP是CIP(10.10.0.1)目标IP是VIP(172.10.0.9),用戶端才會接收。
是以,在RealServer中通過主機路由指定使用配置在lo:0的VIP對響應的資料封包進行封裝。再通過eth0把響應的資料封包送達用戶端。
由于RealServer的RIP是私有網絡,不能把資料封包送達用戶端。是以給RealServer指定一個預設網關,RealServer把不屬于本網絡的資料封包發給預設網關由預設網關把資料封包送達用戶端。
LVS工作流程如下圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauYjM1UUW3kUUrhzXNFUQGZ3dZFUenhXYRFDTvl2S39CXEN0LclDNvwFMw00LcJDMzZWe39CXt92Yu8GdjFTNuMzcvw1LcpDc0RHaiojIsJye.jpg)
一、配置路由:
1、配置通往 172.10.0.0/16 網絡路由
在路由器配置到達172.10.0.0/16網終的出口
添加一條網絡路由
到達 172.10.0.0/16 網絡從路由器的 eth1 接口172.10.0.1 出去。
也就是說,172.10.0.1 是與該網絡直接相連的(基于MAC位址通訊)。
檢視配置網絡路由後
2、再添加一條 RIP能夠到達10.10.0.1 的路由(Reral Server 通夠把響應的資料封包送達用戶端的路由)
在路由器配置到達192.168.60.0/24網絡的出口
配置前
增加到達192.168.60.0/24網絡的路由
配置後
說明:
Gateway 網關是0.0.0.0 這是本地網絡,
Destination 為: 0.0.0.0 說明這是預設網關。
路由器的位址配置如下:
3、打開linux主機的轉發功能
二、配置Director
1、配置DIR位址
2、配置VIP位址
檢視Director地IP位址配置情況
由于後端RealServer建構響應的資料封包沒有經過Director,是以,Director無需配置任何路由條目。
檢視在路由器的arp 表
當一台主機加入一個網絡時,它會向該網絡發出ARP通告。是以在路由器使用【arp -e】指令會檢視到剛才配置的位址對應的MAC位址。
三、配置 RealServer
通過在後端的每個RealServer配置核心參數的方式,保證路由器的ARP緩沖中隻有Director的VIP的MAC對應條目。
ARP有兩種工作方式:
這樣就實作了,RealServer不能向外通告配置在lo:0的VIP位址,也不會響應對VIP的ARP位址解析請求。
1、配置 real2 server
(1)、配置RIP位址
(2)、配置核心參數,限制網卡對ARP協定的行為。
(3)、配置VIP
(4)、檢視resl2的VIP是否向外通告了?
從上面結果可以看出,沒有向外通告。
(5)、配置主機路由,使得RealServer建構響應封包使用配置在lo:0 的VIP位址作為源位址封裝資料封包。在linux中,資料封包從那塊網卡出去,資料封包的源位址就是該網卡的IP位址
配置主機路由
(6)、添置預設路由,讓RealServer能夠把資料包送到路由器,再由路由器送給用戶端。
(7)、測試是不能夠PING通網關
(8)、在RealServer的配置
(9)、檢視路由器的arp緩存,是否有RealServer的VIP---MAC條目
2、配置 real1 server
從上面看出,real1沒有把VIP向通告
添加主機路由,封裝響應封包
(6)、添置預設路由,讓RealServer能夠把資料包送到路由器,再由路由器送給用戶端CIP
(7)、測試能夠PING通網關
四、啟動RealServer的httpd服務
1、啟動real2
2、啟動real1
五、配置lvs
1、定義叢集服務
2、向叢集服務添加RealServer
3、檢視ipvs規則
六、通路測試
從上面通路結果可以看出,LVS已經做通路叢集排程了
一直重新整理,檢視LVS的狀态如下圖:
從lvs的排程狀态可以看出,LVS的dr模型已經可以完成排程了。
OK!!!