LVS 基礎(chǔ)

LVS (Linux Virtual Server)

什么是LVS?它是一種集群(Cluster)技術(shù),采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個高性能的、高可用的虛擬服務(wù)器。整個服務(wù)器集群的結(jié)構(gòu)對客戶是透明的,而且無需修改客戶端和服務(wù)器端的程序。(另外,LVS 項目是章文嵩博士的成名作[1]

LVS 主要組成部分

  • 負(fù)載調(diào)度器(load balancer / Director),它是整個集群對外面的前端機(jī),負(fù)責(zé)將客戶的請求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶認(rèn)為服務(wù)是來自一個IP地址(我們可稱之為虛擬IP地址)上的。
  • 服務(wù)器池(server pool / Realserver),是一組真正執(zhí)行客戶請求的服務(wù)器,執(zhí)行的服務(wù)一般有 WEB, MAIL, FTP 和 DNS 等。
  • 共享存儲(shared storage),它為服務(wù)器池提供一個共享的存儲區(qū),這樣很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。

LVS 負(fù)載均衡方式[2]

LVS 有三種負(fù)載均衡方式:

  1. Virtual Server via Network Address Translation NAT (VS/NAT)
  2. Virtual Server via IP Tunneling (VS/TUN)
  3. Virtual Server via Direct Routing (VS/DR)

VS/DR 方式是目前大型網(wǎng)站使用最廣泛的一種負(fù)載均衡手段。對這三種方式,我談下自己的理解:
1 中的 LB 工作在 http 層,可看做一個 http 服務(wù)器,它接收到客戶端請求后向 real server 發(fā)出請求,接收到返回后再返回給客戶端。為什么 real server 不能直接返回給客戶端呢?因為根據(jù) TCP/IP 協(xié)議,real server 返回的包的目標(biāo) IP 地址是請求包的源 IP,即 LB 的 IP。

2 中的 LB 用到了 IP 封裝協(xié)議,大概可以這樣理解(是我揣測的,沒有求證)。LB 向 real server 發(fā)送請求時,源 IP 還是 LB 的 IP,但是包體里面包含了客戶端的 IP,根據(jù)協(xié)議 real server 返回的時候會把包的目標(biāo) IP 設(shè)為包體里的客戶端 IP。如果真是這樣的話,協(xié)議數(shù)據(jù)走在應(yīng)用層,但是又對傳輸層的數(shù)據(jù)做了修改,比較 hack,沒有遵守分層的設(shè)計規(guī)范。

3 中的 LB 工作在數(shù)據(jù)鏈路層,LB 直接把 frame 的 mac 地址修改為 某臺 real server 的 mac 地址,轉(zhuǎn)發(fā)給 real server。real server 拿到包里的源 IP 是客戶端的 IP,返回包的目標(biāo) IP 自然為客戶端的 IP。

基于它們工作的網(wǎng)絡(luò)協(xié)議,有下面的特點。(注:子網(wǎng)的出口的路由器叫做網(wǎng)關(guān))

指標(biāo) VS/NAT VS/TUN VS/DR
服務(wù)器操作系統(tǒng) 任意 支持隧道 多數(shù)(支持Non-arp)
服務(wù)器網(wǎng)絡(luò) 私有網(wǎng)絡(luò) 局域網(wǎng)/廣域網(wǎng) 局域網(wǎng)
服務(wù)器數(shù)目(100M網(wǎng)絡(luò)) 10~20 100 大于100
服務(wù)器網(wǎng)關(guān) 負(fù)載均衡器 自己的路由 自己的路由
效率 一般 最高

其他負(fù)載均衡方法

HTTP 重定向負(fù)載均衡

當(dāng)用戶發(fā)來請求的時候,Web 服務(wù)器通過修改 HTTP 響應(yīng)頭中的 Location 標(biāo)記來返回一個新的 url,然后瀏覽器再繼續(xù)請求這個新 url,實際上就是頁面重定向。通過重定向,來達(dá)到“負(fù)載均衡”的目標(biāo)。例如,我們在下載 PHP 源碼包的時候,點擊下載鏈接時,為了解決不同國家和地域下載速度的問題,它會返回一個離我們近的下載地址。重定向的 HTTP 返回碼是 302。

優(yōu)點:比較簡單。
缺點:瀏覽器需要兩次請求服務(wù)器才能完成一次訪問,性能較差。重定向服務(wù)自身的處理能力有可能成為瓶頸,整個集群的伸縮性國模有限;使用 HTTP 302 響應(yīng)碼重定向,有可能使搜索引擎判斷為 SEO 作弊,降低搜索排名。

DNS 域名解析負(fù)載均衡

DNS(Domain Name System)負(fù)責(zé)域名解析的服務(wù),域名url實際上是服務(wù)器的別名,實際映射是一個IP地址,解析過程,就是DNS完成域名到IP的映射。而一個域名是可以配置成對應(yīng)多個 IP的。因此,DNS也就可以作為負(fù)載均衡服務(wù)。

事實上,大型網(wǎng)站總是部分使用DNS域名解析,利用域名解析作為第一級負(fù)載均衡手段,即域名解析得到的一組服務(wù)器并不是實際提供Web服務(wù)的物理服務(wù)器,而是同樣提供負(fù)載均衡服務(wù)的內(nèi)部服務(wù)器,這組內(nèi)部負(fù)載均衡服務(wù)器再進(jìn)行負(fù)載均衡,將請求分發(fā)到真是的 Web 服務(wù)器上。

優(yōu)點:將負(fù)載均衡的工作轉(zhuǎn)交給 DNS,省掉了網(wǎng)站管理維護(hù)負(fù)載均衡服務(wù)器的麻煩,同時許多 DNS 還支持基于地理位置的域名解析,即會將域名解析成舉例用戶地理最近的一個服務(wù)器地址,這樣可以加快用戶訪問速度,改善性能。
缺點:不能自由定義規(guī)則,而且變更被映射的IP或者機(jī)器故障時很麻煩,還存在 DNS 生效延遲的問題。而且DNS負(fù)載均衡的控制權(quán)在域名服務(wù)商那里,網(wǎng)站無法對其做更多改善和更強(qiáng)大的管理。

反向代理負(fù)載均衡

反向代理服務(wù)可以緩存資源以改善網(wǎng)站性能。實際上,在部署位置上,反向代理服務(wù)器處于Web服務(wù)器前面(這樣才可能緩存 Web 相應(yīng),加速訪問),這個位置也正好是負(fù)載均衡服務(wù)器的位置,所以大多數(shù)反向代理服務(wù)器同時提供負(fù)載均衡的功能,管理一組 Web 服務(wù)器,將請求根據(jù)負(fù)載均衡算法轉(zhuǎn)發(fā)到不同的 Web 服務(wù)器上。Web服務(wù)器處理完成的響應(yīng)也需要通過反向代理服務(wù)器返回給用戶。由于 Web 服務(wù)器不直接對外提供訪問,因此 Web 服務(wù)器不需要使用外部ip地址,而反向代理服務(wù)器則需要配置雙網(wǎng)卡和內(nèi)部外部兩套 IP 地址。

優(yōu)點:和反向代理服務(wù)器功能集成在一起,部署簡單。
缺點:反向代理服務(wù)器是所有請求和響應(yīng)的中轉(zhuǎn)站,其性能可能會成為瓶頸。

反向代理負(fù)載均衡跟 VS/NAT 的原理一樣。


參考資料

  1. http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

  1. http://www.linuxvirtualserver.org/zh/lvs1.html ?

  2. http://blog.jobbole.com/103871/ ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • 【摘要】 面對大量用戶訪問、高并發(fā)請求,海量數(shù)據(jù),可以使用高性能的服務(wù)器、大型數(shù)據(jù)庫,存儲設(shè)備,高性能Web服務(wù)器...
    靜修佛緣閱讀 4,839評論 0 24
  • 一、什么是負(fù)載均衡 首先我們先介紹一下什么是負(fù)載均衡:負(fù)載平衡(Load balancing)是一種計算機(jī)網(wǎng)絡(luò)技術(shù)...
    小流江海閱讀 1,089評論 0 2
  • Linux服務(wù)器集群系統(tǒng)各概念辨析 計算機(jī)集群 WEB的負(fù)載均衡、集群、高可用解決方案 計算機(jī)集群 計算機(jī)集群簡稱...
    Zhang21閱讀 3,437評論 0 18
  • 上一篇《WEB請求處理一:瀏覽器請求發(fā)起處理》,我們講述了瀏覽器端請求發(fā)起過程,通過DNS域名解析服務(wù)器IP,并建...
    七寸知架構(gòu)閱讀 81,808評論 21 356

友情鏈接更多精彩內(nèi)容