一. 集群與分布式
1.1 系統性能擴展方式
????????當系統面臨性能瓶頸時,通常有以下兩種主流擴展思路:
- Scale Up(向上擴展):通過增強單臺服務器的硬件配置來提升性能,這種方式簡單直接,但受限于硬件物理極限,且成本會隨著性能提升呈指數級增長,存在明顯的缺點。
- Scale Out(向外擴展):通過增加服務器數量來分擔負載,形成一個協同工作的整體。這種方式能線性擴展系統性能,成本相對可控,但需要解決多設備間的調度分配問題,因此誕生了集群Cluster技術。
1.2?什么是集群Cluster
????????集群是將多臺計算機組合起來,協同工作以解決某個特定問題的系統,從外部看則為單一的系統。常見的集群類型有以下三種:
- LB(Load Balancing,負載均衡集群):由多臺主機組成,每臺主機承擔部分訪問請求,通過合理分配負載避免單點過載。例如多個 Web 服務器組成的集群,由負載均衡器將用戶請求分發到不同節點。
- HA(High Availability,高可用集群):核心目標是減少單點故障(SPOF,Single Point Of Failure),確保服務持續可用。關鍵指標包括:
- MTBF(Mean Time Between Failure):平均無故障時間,即系統正常運行的平均時長。
- MTTR(Mean Time To Restoration):平均恢復時間,即系統發生故障后恢復正常的平均時長。
- 可用性 A:計算公式為?
A=MTBF/(MTBF+MTTR)
,取值范圍在 (0,1) 之間,通常用99%, 99.5%, 99.9%, 99.99%, 99.999%來表示。 - SLA(Service Level Agreement,服務等級協議):服務提供商與用戶約定的可用性標準(如 “三個 9”“四個 9”),未達標可能觸發懲罰措施,運維的核心目標之一就是達成 SLA。
- HPC(High-performance Computing,高性能計算集群):用于處理大規模復雜計算任務(如氣象模擬、科學研究),屬于國家戰略資源,不在基礎運維課程范圍內。
1.3?什么是分布式
????????分布式是將一個復雜系統拆分為多個子模塊,部署在不同服務器上協同工作的架構模式,常見應用場景包括以下幾種:
- 分布式存儲:如Ceph、GlusterFs、FastDFS等,將數據分散存儲在多個節點,提升容量和可靠性。
- 分布式計算:如Hadoop、Spark,將計算任務分解到多個節點并行處理,加速大規模數據運算。
- 分布式應用:按功能拆分服務(如微服務架構),每個服務獨立部署和擴展。
- 分布式靜態資源:將圖片、視頻等靜態資源存儲在不同集群,減輕主服務壓力。
- 分布式數據緩存:使用Redis等key-value緩存系統,分散數據訪問壓力。
1.4 集群與分布式的區別
- 集群:同一個業務系統,部署在多臺服務器上,集群中,每一臺服務器實現的功能沒有差別,數據和代碼都是一樣的
- 分布式:一個業務被拆成多個子業務,或者本身就是不同的業務,部署在多臺服務器上。分布式中,每一臺服務器實現的功能是有差別的,數據和代碼也是不一樣的,分布式每臺服務器功能加起 來,才是完整的業務
- 效率提升方式:集群通過提高單位時間內執行的任務數來提升效率;分布式通過縮短單個任務的執行時間來提升效率。
- 故障影響:集群中某臺服務器垮了,其他服務器可以頂上來;分布式中某個節點垮了,對應的子業務可能會失敗。
二.?lvs--Linux virtual server
2.1 lvs介紹
- LVS 即 Linux Virtual Server(Linux虛擬服務器),是一種負載調度器,其功能集成在 Linux 內核中,能夠實現對多臺服務器的負載均衡調度,提升服務的可用性和并發處理能力。
- LVS由章文嵩博士主導開發。在實際應用中,阿里巴巴的四層 SLB(Server Load Balance,服務器負載均衡)便是基于LVS結合 keepalived 實現的,這體現了 LVS 在大規模網絡服務中的重要價值。
- LVS 官網: http://www.linuxvirtualserver.org/
- LVS主要工作在 OSI 模型的第四層(傳輸層),基于IP和端口進行負載均衡調度,支持 TCP、UDP 等協議。
- LVS相關術語
- VS:Virtual Server,負責調度
- RS:Real Server,負責真正提供服務
2.2 lvs集群體系結構
2.3 LVS的概念
????????訪問流程1:CIP <-->?VIP == DIP <--> RIP
? ? ? ? 訪問流程2:CIP -->?VIP == DIP --> RIP --> CIP
- VS(Virtual Server):調度器
- RS(Real Server):真實的資源主機
- CIP(Client IP):用戶IP
- VIP(Virtual serve IP):用戶訪問的IP
- DIP(Director IP):負載均衡器的真實IP
- RIP(Real server IP):資源主機的IP
2.4 LVS集群的類型
- lvs-nat: 修改請求報文的目標IP,多目標IP的DNAT
- lvs-dr: 操縱封裝新的MAC地址
- lvs-tun: 在原請求IP報文之外新加一個IP首部
- lvs-fullnat: 修改請求報文的源和目標IP
三. NAT模式
3.1 什么是NAT模式
- LVS-NAT(Linux Virtual Server - Network Address Translation)是 LVS 負載均衡的基礎模式,通過網絡地址轉換實現流量分發。
- 本質是基于 Linux 內核的 iptables?DNAT功能,支持多目標地址轉換,是最容易實現的 LVS 模式。
- RIP和DIP應在同一個IP網段;RS 的默認網關
- 請求報文和響應報文都必須經由Director轉發,Director易于成為系統瓶頸
- 支持端口映射,可修改請求報文的目標PORT
- VS必須是Linux系統,RS可以是任意OS系統
3.2 NAT模式數字邏輯
????????流程:CIP -->?VIP == DIP --> RIP --> DIP = VIP --> CIP
? ? ? ? 由于數據的進出都要經過調度器VS(Virtual Server),因此后端建議最多掛10臺RS
- 客戶端發出請求包,內容包括請求來源(cip)、訪問目的地的IP(vip)、目標端口(port80)
- 到達vs后,訪問目的地將會改變成真實的目標主機的IP(RIP),目標端口修改為RS1實際監聽的 9000 端口
- RS1接收到后發送響應數據包,請求來源改為RIP1,響應目標CIP,相應端口9000
- vs收到響應數據包后,修改響應報文:請求來源修改為VIP,響應目標不變,端口改為80
- 客戶端接收到vs發來的響應數據包
3.3 NAT模式實驗環境配置
3.3.1 配置IP
????????本次實驗一共需要四臺主機:RS1、RS2、lvs、客戶端client
? ? ? ? 僅主機網段:192.168.103.0?
? ? ? ? NAT模式網段:192.168.132.0
- RS1? ? 僅主機??192.168.103.10
- RS2? ??僅主機??192.168.103.20
- lvs? ? ? ?僅主機??192.168.103.100? ? ? ? nat? 192.168.132.100
- client? ?nat???192.168.132.111
3.3.2 實驗前配置
- RS1、RS2下載httpd并關閉防火墻
- RS1、RS2開啟web服務
- 調度器lvs可以訪問RS1、RS2
- 在lvs系統中開啟 IP 轉發功能
3.4 NAT模式實現過程
- 配置 LVS 的 NAT 模式負載均衡
- LVS關閉火墻
- 由于client有兩個網段的IP,所以兩個RS的網關需要指定為dip(192.168.103.100)
- client可以訪問 LVS 集群虛擬 IP。第一次被調度到后端真實服務器 RS1,第二次被調度到后端真實服務器 RS2,體現了 LVS 負載均衡的效果
五. TUN模式(隧道模式)
5.1 什么是TUN模式
????????TUN 模式是 LVS 負載均衡的一種實現方式,特點是不修改原請求 IP 首部(源 IP 為客戶端 CIP、目標 IP 為虛擬服務 VIP),而是在原 IP 報文外新增一層 IP 隧道封裝(源 IP 為調度器 DIP、目標 IP 為真實服務器 RS 的 RIP ),將請求發往選定 RS。RS 直接響應客戶端(源 IP 為 VIP、目標 IP 為 CIP ),無需再經過調度器轉發響應。
- DIP、VIP、RIP 需為公網地址
- RS 的網關不能指向 DIP(響應直接回客戶端,無需經調度器 )
- 不支持端口映射
- 請求必經調度器Director,響應直接走客戶端 - RS 鏈路,調度器不參與響應轉發
- RS 的操作系統必須支持 IP 隧道功能(如 Linux 需開啟 IPIP 隧道模塊 )。
5.2 數據傳輸流程
- 請求流程:客戶端發請求,數據包含源 IP(CIP)、目標 IP(VIP)及端口。調度器(VS)收到后,給原數據包加新 IP 隧道頭(源 DIP、目標 RIP ),轉發給選定 RS。
- 響應流程:RS 接收帶隧道的數據包,解封裝后處理請求,直接以 VIP 為源 IP、CIP 為目標 IP 回包給客戶端,無需經過調度器。
六.?fullnet模式
6.1 什么是fullnet模式
????????FULLNAT 模式是 LVS 實現負載均衡的一種網絡地址轉換模式,核心是同時修改請求報文的源 IP 地址和目標 IP 地址來完成轉發,適配復雜網絡場景。
- VIP是公網地址,RIP和DIP是私網地址,且通常不在同一IP網絡。無需 RS 網關指向 DIP,降低拓撲限制。
- RS收到的請求報文源地址是DIP,因此只需響應給DIP;但Director還要將其發往Client
- 請求和響應報文都經由Director
- 支持端口映射
6.2?數據傳輸流程
????????CIP --> DIP ????????????????VIP --> RIP
- 請求流程:Client 發請求到 VIP,Director 接收后做 FULL NAT,把源 IP(CIP)換成 DIP,目標 IP(VIP)換成 RIP,再經 Router 轉發給 RS。
- 響應流程:RS 響應報文源為自身 RIP、目標為 DIP,回給 Director;Director 再次 FULL NAT,將源 IP 換為 VIP、目標 IP 換為 CIP,最終發給 Client 。