LVS集群概述
1、集群概念
1.1、介紹
集群是指多臺服務器集中在一起,實現同一業務,可以視為一臺計算機。多臺服務器組成的一組計算機,作為一個整體存在,向用戶提供一組網絡資源,這些單個的服務器就是集群的節點。
特點:
1.高性價比
通常一套系統集群架構,只需要幾臺或數十臺服務器主機即可,與動則上百萬的專用超級計算機相比具有更高的性價比
2.可擴展性
集群的性能不限于單一的服務實體,新的服務實體可以動態的加入到集群,從而增強集群的性能
3.高可用性
如果集群某個節點發生故障,這臺節點上面運行的服務,可以被其他服務節點接管,從而增強集群的高可用性。
4.負載均衡
負載均衡能把任務比較均勻的分布到集群環境下的計算和網絡資源,以便提高數據吞吐量
5.透明性
多個獨立計算機組成的松耦合集群系統構成一個虛擬服務器。用戶或客戶端程序訪問集群系統時,就像訪問一臺高性能,高可用的服務器一樣,集群中一部分服務器的上線,下線不會中斷整個系統服務,這對用戶也是透明的
6.可管理性
整個系統可能在物理上很大,但是集群系統易管理,就像管理一個單一映像系統一樣。在理想狀況下,軟硬件模塊的插入能做到即插即用
1.2、類型
負載均衡集群(Load Balance Cluster)?
負載均衡系統:集群中所有的節點都處于活動狀態,它們分攤系統的工作負載。一般Web服務器集群、數據庫集群和應用服務器集群都屬于這種類型。
負載均衡集群一般用于相應網絡請求的網頁服務器,數據庫服務器。這種集群可以在接到請求時,檢查接受請求較少,不繁忙的服務器,并把請求轉到這些服務器上。從檢查其他服務器狀態這一點上看,負載均衡和容錯集群很接近,不同之處是數量上更多。
Load Balancing負載均衡(LB),不同節點之間相互獨立,不共享任何資源;通過一定算法將客戶端的訪問請求平分到群集的各個節點上,充分利用每個節點的資源。負載均衡擴展了網絡設備和服務器帶寬,增加吞吐量,加強網絡數據處理能。
高可用集群(High Availability Cluster)
常見的就是2個節點做成的HA集群,有很多通俗的不科學的名稱,比如”雙機熱備”, “雙機互備”, “雙機”。
高可用集群解決的是保障用戶的應用程序持續對外提供服務的能力。
High availability Cluster高可用群集(HAC) ;主要用于高可用解決方案的實現,節點間以主備形式,實現容災;在大型故障(宕機,服務器故障)的情況下實現快速恢復,快速提供服務。
高可用群集可實現以下三種方式:
主從方式:主機工作,備機監控。此方式不能有效的利用服務器資源。
互為主從:兩服務器同時在線,一臺服務器故障可切換到另一臺上。此 方式有效的利用服務器資源,但當服務器故障時候,將導致一臺服務器上運行多個業務。
多臺服務器主從:大部分服務器在線使用,小部分監控;若有部分服務器故障,可切換到指定的小部分服務器上。此方式為前兩種方式的綜合。然后多臺服務器群集,也增加了管理的復雜度。
科學計算集群(High Performance Computing Cluster)
簡稱HPC集群。這類集群致力于提供單個計算機所不能提供的強大的計算能力。
并行計算或稱平行計算是相對于串行計算來說的。并行計算的能力的目的是提高計算速度。
并行計算分為時間計算和空間計算:
時間計算既是流水線技術,一個處理器分為多個單元,每個單元負責不同任務,這些單元可并行計算。
空間計算利用多個處理器并發的執行計算。目前PC機的計算能力越來越強,將大量低廉的PC機互聯起來,組成一個"大型計算機"以解決復雜的計算任務。
高性能計算集群采用將計算任務分配到集群的不同計算節點兒提高計算能力,因而主要應用在科學計算領域。
HPC集群特別適合于在計算中各計算節點之間發生大量數據通訊的計算作業,比如一個節點的中間結果會影響到其它節點計算結果的情況。
2、LVS介紹
LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統LVS簡單工作原理為用戶請求LVS VIP,LVS根據轉發方式和算法,將請求轉發給后端服務器,后端服務器接收到請求,返回給用戶。對于用戶來說,看不到Web后端具體的應用。
LVS(Linux Virtual Server)是基于Linux內核的四層負載均衡解決方案,通過將多臺服務器組成虛擬服務集群,實現高性能、高可用的網絡服務。其核心組件包括:
- Director:負載均衡調度器,接收客戶端請求并分發到后端 Real Server(調度器)
- RS (Real Server):實際處理請求的后端服務器(真實服務器)
- VS (Virtual Server): 虛擬服務器,負責調度
- VIP (Virtual IP):對外服務的虛擬IP地址
- RIP (Real IP):后端服務器的真實IP地址
- DIP (Director IP):VS內網的IP 代理服務器的 內網ip
- CIP (Client IP):客戶端源IP地址
3、LVS和nginx區別
- LVS比nginx具有更強的抗負載能力,性能更高,對內存和cpu資源消耗低。?
- LVS工作在網絡層,具體流量由操作系統內核進行處理,nginx工作在應用層,可針對http應用實施一些分流策略。
- LVS安裝配置比較復雜點,網絡依賴性較大,穩定性高,lvs不支持正則表達式,不能實現動靜分離操作。
- LVS使用的協議范圍廣, Nginx 僅支持 HTTP、HTTPS、Email 協議,適用范圍小。
(五)、LVS調度算法
ipvs scheduler:根據其調度時是否考慮各RS當前的負載狀態分為兩種:
1. 靜態算法(不考慮RS負載)
RR(round robin,輪詢):將收到的訪問請求按照順序輪流分配給群集中的各節點,均等地對待每臺服務器,而不管服務器實際的連接數和系統負載。
WRR(weight round robin,加權輪詢):根據調度器設置的權重值來分發請求,權重值高的節點優先獲得任務并且分配的請求越多,這樣可以保證性能高的節點承擔更多請求。
SH(source hashing,源地址散列算法(HASH)):根據請求來源的IP地址進行Hash計算,得到后端服務器,這樣來自同一個IP的請求總是會落到同一臺服務器上處理,以致于可以將請求上下文信息存儲在這個服務器上。
2. 動態算法(基于RS負載狀態)
LC(leash-connection,最少連接):根據真實服務器已建立的連接數進行分配,將收到的訪問請求優先分配給連接數最少的節點。如果所有的服務器節點性能相近,采用這種方式可以更好地均衡負載。簡單算法:active * 256 + inactive (誰的小選誰)
WLC(加權最少連接):在服務器節點的性能差異較大的情況下,調度器可以根據節點服務器負載自動調整權重,權重較高的節點將承擔更大比例的活動連接負載。 ?簡單算法:(active * 256 + inactive) / weight(誰的小選誰)
SED(最少期望延遲):優化高權重節點的初始連接分配。Shortest Expection Delay,初始連接高權重優先,只檢查活動連接,而不考慮非活動連接 ;NQ(never queue,永不排隊):Never Queue,第一輪均勻分配,后續SED。
LBLC(基于局部性的最少連接 )
不僅考慮全局的服務器負載,還考慮服務器所在局部的負載情況,從而實現更細致的負載均衡。
LBLCR(基于局部性的帶復制功能的最少連接)
在LBLC的基礎上,當某個服務器過載時,可以選擇復制流量到其他服務器,以平衡負載。
?LVS工作模式
lvs軟件相關信息
程序包:ipvsadmUnit File: ipvsadm.service主程序:/usr/sbin/ipvsadm規則保存工具:/usr/sbin/ipvsadm-save規則重載工具:/usr/sbin/ipvsadm-restore配置文件:/etc/sysconfig/ipvsadm-configipvs調度規則文件:/etc/sysconfig/ipvsadm
lvs集群中的增刪改
1.管理集群服務中的增刪改ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]-A ????????#添加-E ????????#修改-t ????????#tcp服務-u???????? #udp服務-s ????????#指定調度算法,默認為WLC-p ????????#設置持久連接超時,持久連接可以理解為在同一個時間段同一個來源的請求調度到同一Realserver-f ????????#firewall mask 火墻標記,是一個數字2.管理集群中RealServer的曾增刪改ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]-a ????????#添加realserver-e ????????#更改realserver-t ????????#tcp協議-u ????????#udp協議-f ????????#火墻 標簽-r ????????#realserver地址-g???????? #直連路由模式-i ????????#ipip隧道模式-m ????????#nat模式-w ????????#設定權重-Z ????????#清空計數器-C???????? #清空lvs策略-L???????? #查看lvs策略-n ????????#不做解析--rate :輸出速率信息
1、基于NAT的LVS模式負載均衡
NAT(network address translation) 網絡地址轉換,其主要原理是修改數據報頭,使得位于企業內部的私有ip地址可以訪問外網,以及外部用戶可以訪問位于公司內部的私有的ip主機。?
LVS調度器中有一個連接Hash表,該表會記錄連接請求及其轉發信息,當同一個連接下一個數據包發送給調度器時,該Hash表可以直接找到之前連接的記錄,并根據記錄信息選出相同真實服務器及其端口信息。
1.1、工作原理
- 當用戶的請求到達調度器時,請求報文會先到內核空間的PREROUTING鏈上。此時報文的源IP為CIP,目標IP為VIP
- PREROUTING檢查發現數據包的目標IP是本機,就將數據包送至INPUT鏈。
- IPVS工作在INPUT鏈上,當數據包抵達INPUT鏈后,IPVS會檢查數據包所請求的服務是否為集群服務,若是,修改數據包的目標IP地址為后端服務器RIP,然后將數據包送往 POSTROUTING鏈。此時報文的源IP為CIP,目標IP為RIP。
- POSTROUTING鏈通過選路,將數據包轉發給Real Server
- Real Server對比發現目標IP是自己,就會接受這個請求報文,開始構建響應報文發回給調度器。源IP為RIP,目標IP為CIP
- 調度器在響應客戶端前,會將報文的源IP地址修改為自己的VIP,然后響應給客戶端。此時報文的源IP為VIP,目標IP為CIP
1.2、NAT模式特性
本質是多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和PORT實現轉發
- RIP和DIP應在同一個IP網絡,且應使用私網地址;RS的網關要指向DIP
- 請求報文和響應報文都必須經由Director轉發,Director易于成為系統瓶頸
- 支持端口映射,可修改請求報文的目標PORT
- VS必須是Linux系統,RS可以是任意OS系統
1.3、NAT的優缺點
優點:集群中的物理服務器可以使用任何支持TCP/IP操作系統它只需要一個 IP 地址配置在調度器上,服務器組可以用私有的 IP 地址。
缺點:伸縮能力有限,當服務器節點(普通PC服務器)增長過多時,負載均衡器將成為整個系統的瓶頸,因為所有的請求包和應答包的流向都經過負載均衡器。當服務器節點過多時,大量的數據包都交匯在負載均衡器那,速度就會變慢。?
2、基于TUN的LVS負載均衡(不常用)
IP 隧道:IP Tunnel,簡稱:TUN 模式,采用開放式的網絡結構,負載調度器作為客戶機的訪問入口,各節點通過各自的 Internet 連接直接回應給客戶機,而不經過負載調度器,服務器節點分散在互聯網中的不同位置,有獨立的公網 IP 地址,通過專用 IP 隧道與負載調度器相互通信。?
?2.1、實現原理
- 在原有的ip報文外在封裝多一層的ip首部,內部ip首部(原地址為cip,目標ip為vip),外層ip首部原地址為dip,.目標地址為rip
- 客戶端發送數據包經過網絡后到 LVS 網卡,數據包源 IP 為 CIP,目的 IP 為 VIP。
- 進入 PREROUTING 鏈后,會根據目的 IP 去查找路由,確定是否為本機 IP,數據包將轉發至 INPUT 鏈中,到 LVS,源 IP 和 目的 IP 不變。
- 到 LVS 后,通過目的 IP 和目的 PORT 查找是否為 IPVS 服務,如是 IPVS 服務,將會選擇一個 RS 后端服務器, 源 IP 為 DIP,目標 IP 為 RIP,數據包將會轉發至 OUTPUT 鏈中。
- 數據包根據路由信息到達 LVS 網卡,發送至路由器網關,最終到達后端服務器。
- 后端服務器收到數據包后,會拆掉最外層的 IP 地址后,會發現還有一層 IP 首部,源 IP 為 CIP,目的 IP 為 VIP,TUNL0 上配置 VIP,查找路由后判斷為本機 IP 地址,將會發給用戶空間層的應用程序響應后 VIP 為源 IP,CIP 為目的 IP 數據包發送至網卡,最終返回至客戶端用戶。
2.2、TUN模式特性
轉發方式:不修改請求報文的IP首部(源IP為CIP,目標IP為VIP),而在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP)。
2.3、 TUN模式的特點
單臂模式,LVS 負載壓力小。
數據包修改小,信息完整性高。
可跨機房。?
請求報文要經由Director,但響應不能經由Director?。
?不支持端口映射
RS的OS須支持隧道功能
RS的網關一般不能指向DIP?
DIP, VIP, RIP都應該是公網地址?
2.4 、TUN模式的缺點
缺點:
不支持端口映射。
需在 RS 后端服務器安裝模塊(ipip)及配置 VIP。
隧道頭部 IP 地址固定,RS 后端服務器網卡可能會不均勻。
隧道頭部的加入可能會導致分片,最終會影響服務器性能。
3、基于DR的LVS負載均衡
直接路由:Direct Routing,簡稱 DR 模式,采用半開放式的網絡結構,與 TUN 模式的結構類似,但各節點并不是分散在各個地方,而是與調度器位于同一個物理網絡,負載調度器與各節點服務器通過本地網絡連接,不需要建立專用的 IP 隧道。它是最常用的工作模式,因為它的功能性強大。
3.1、DR 實現原理
- ?當用戶諸求到達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地址,就接收此報文。處理完成之后,將響應報文通過10接口傳5、送給eth0網卡然后向外發出。此時的源IP地址為VIP,目標IP為CIP。
- 響應報文最終送達至客戶端。
4、full net模式?
4.1full net工作原理
fullnat:通過同時修改請求報文的源IP地址和目標IP地址進行轉發CIP --> DIPVIP --> RIP
4.2、full net模式的特點
1.VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡;因此,RIP的網關一般不會指向DIP2.RS收到的請求報文源地址是DIP,因此,只需響應給DIP;但Director還要將其發往Client3.請求和響應報文都經由Director4.支持端口映射
?IPVS模塊
1、IPVS的介紹
IPVS基本上是一種高效的Layer-4交換機,它提供負載平衡的功能。當一個TCP連接的初始SYN報文到達時,IPVS就選擇一臺服務器,將報文轉發給它。此后通過查看報文的IP和TCP報文頭地址,保證此連接的后繼報文被轉發到相同的服務器。這樣,IPVS不用檢查到請求的內容再選擇服務器,這就要求后端的服務器組是提供相同的服務,不管請求被送到哪一臺服務器,返回結果都應該是一樣的。但是在有一些應用中后端的服務器可能功能不一,有的是提供HTML文檔的Web服務器,有的是提供圖片的Web服務器,有的是提供CGI的Web服務器。這時,就需要基于內容請求分發 (Content-Based Request Distribution),同時基于內容請求分發可以提高后端服務器上訪問的局部性。?
2、IPVS的工作原理
IPVS是LVS的關鍵,因為LVS的IP負載平衡技術就是通過IPVS模塊來實現的,IPVS是LVS集群系統的核心軟件,它的主要作用是:安裝在Director Server上,同時在Director Server上虛擬出一個IP地址,用戶必須通過這個虛擬的IP地址訪問服務。這個虛擬IP一般稱為LVS的VIP,即Virtual IP。訪問的請求首先經過VIP到達負載調度器,然后由負載調度器從Real Server列表中選取一個服務節點響應用戶的請求。
LVS的本身分成了兩個部分,第一部分是工作在內核空間的一個IPVS的模塊(工作在Netfilter框架的input鏈上),其實LVS的功能都是IPVS模塊實現的,第二部分是工作在用戶空間的一個用來定義集群服務的一個工具ipvsadm, 這個工具的主要作用是將管理員定義的集群服務列表傳送給工作在內核空間中的IPVS模塊。
3、ipvsadm命令
- 集群服務管理:增、刪、改
- 集群服務的RS管理:增、刪、改
- 查看
命令參數:
管理集群服務
ipvsadm -A|E -t(tcp)|u(udp)|f(防護墻標簽) \service-address(集群地址) \
[-s scheduler(調度算法)] \
[-p [timeout]] \
[-M netmask] \
[--pepersistence_engine] \
[-b sched-flags]
ipvsadm -D -t|u|f service-address 刪除
ipvsadm –C 清空
ipvsadm –R 重載
ipvsadm -S [-n] 保存 管理集群中的real server
ipvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m](工作模式) [-w weight](權重)
ipvsadm -d -t|u|f service-address -r server-address 刪除RS
ipvsadm -L|l [options] 查看rs
ipvsadm -Z [-t|u|f service-address] 清楚計數器