一分鐘了解lvs
今天小編和大家介紹一下LVS,希望能給大家帶來一定的收獲!
一、LVS簡介
LVS(Linux Virtual Server)即Linux虛擬服務器,是由章文嵩博士主導的開源負載均衡項目,目前LVS已經被集成到Linux內核模塊中。該項目在Linux內核中實現了基于IP的數據請求負載均衡調度方案,終端互聯網用戶從外部訪問公司的外部負載均衡服務器,終端用戶的Web請求會發送給LVS調度器,調度器根據自己預設的算法決定將該請求發送給后端的某臺Web服務器,比如,輪詢算法可以將外部的請求平均分發給后端的所有服務器,終端用戶訪問LVS調度器雖然會被轉發到后端真實的服務器,但如果真實服務器連接的是相同的存儲,提供的服務也是相同的服務,最終用戶不管是訪問哪臺真實服務器,得到的服務內容都是一樣的,整個集群對用戶而言都是透明的。最后根據LVS工作模式的不同,真實服務器會選擇不同的方式將用戶需要的數據發送到終端用戶,LVS工作模式分為NAT模式、TUN模式、以及DR模式。
二、LVS的構成
從物理層面上講,LVS的主要組成:
負載調度器(load balancer/ Director),它是整個集群對外面的前端機,負責將客戶的請求發送到一組服務器上執行,而客戶認為服務是來自一個IP地址(我們可稱之為虛擬IP地址)上的。
服務器池(server pool/ Realserver),是一組真正執行客戶請求的服務器,執行的服務一般有WEB、MAIL、FTP和DNS等。
共享存儲(shared storage),它為服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相同的內容,提供相同的服務。
注:一般為了實現高可用會使用兩臺以上的調度服務器,作為備份,提高安全性。
從軟件層面上講,LVS 由2部分程序組成,包括 ipvs 和 ipvsadm。
1、ipvs(ip virtual server) :工作在內核空間的一段代碼,叫ipvs,是真正生效實現調度的代碼。
2、ipvsadm :另外一段是工作在用戶空間,叫ipvsadm,負責為ipvs內核框架編寫規則,定義誰是集群服務,而誰是后端真實的服務器(Real Server),然后由內核代碼實現真正的調度算法及功能。
三、LVS三種工作模式
3.1、基于NAT的LVS模式負載均衡
NAT(Network Address Translation)即網絡地址轉換,其作用是通過數據報頭的修改,使得位于企業內部的私有IP地址可以訪問外網,以及外部用戶可以訪問于公司內部的私有IP主機。
LVS負載調度器可以使用兩塊網卡配置不同的IP地址,eth0設置為私鑰IP與內部網絡通過交換設備相互連接,eth1設備為外網IP與外部網絡聯通。
第一步,用戶通過互聯網DNS服務器解析到公司負載均衡設備上面的外網地址,相對于真實服務器而言,LVS外網IP又稱VIP(Virtual IP Address),用戶通過訪問VIP,即可連接后端的真實服務器(Real Server),而這一切對用戶而言都是透明的,用戶以為自己訪問的就是真實服務器,但他并不知道自己訪問的VIP僅僅是一個調度器,也不清楚后端的真實服務器到底在哪里、有多少真實服務器。
第二步,用戶將請求發送至124.126.147.168,此時LVS將根據預設的算法選擇后端的一臺真實服務器(192.168.0.1~192.168.0.3),將數據請求包轉發給真實服務器,并且在轉發之前LVS會修改數據包中的目標地址以及目標端口,目標地址與目標端口將被修改為選出的真實服務器IP地址以及相應的端口。
第三步,真實的服務器將響應數據包返回給LVS調度器,調度器在得到響應的數據包后會將源地址和源端口修改為VIP及調度器相應的端口,修改完成后,由調度器將響應數據包發送回終端用戶,另外,由于LVS調度器有一個連接Hash表,該表中會記錄連接請求及轉發信息,當同一個連接的下一個數據包發送給調度器時,從該Hash表中可以直接找到之前的連接記錄,并根據記錄信息選出相同的真實服務器及端口信息。
NAT模式詳細說明:
1、client請求資源,當報文到達director時,源和目標IP是CIP-VIP,IPVS會強行修改目標地址為RIP,將報文從INPUT發向POSTROUTING,源和目標IP修改為CIP-RIP,RS驗證目標地址是本地地址,則接受報文并處理請求。
2、RS響應請求,由于請求報文源IP是CIP,所以響應報文的目標IP是CIP;將響應報文發送給網關director后,director會通過SNAT將源IP修改為VIP,這樣client才可以明確是響應它請求報文的數據包。
特點:
director與RS必須在同一個局域網呢
RS的網關必須指向director的私網DIP。
請求和響應報文都需要director轉發,會成為整個系統的瓶頸。
支持端口映射,client訪問80端口,dire。
好啦!今天的分享到這里就結束了,希望大家能夠持續關注馬哥教育官網,每天都會有大量優質內容與大家分享!
聲明:文章轉載于網絡,版權歸原作者所有!