一、集群和分布式簡介
1.系統性能擴展方式
Scale Up(向上擴展):通過增強單臺服務器的硬件性能(如提升 CPU、內存、存儲等)來提高處理能力,適用于業務初期或對單點性能要求高的場景。這種方式簡單易行,但受限于硬件上限,且成本較高。
Scale Out(向外擴展):通過增加服務器數量并組成集群,將任務分配到多臺設備上協同處理,需解決調度分配問題,適用于高并發、高可用需求的場景。這種擴展方式具有良好的靈活性和成本優勢,尤其適合分布式系統架構。
2.集群 Cluster
Cluster:集群是為了解決某個特定問題將多臺計算機組合起來形成的單個系統
Cluster?常見的三種類型:
1)LB:LoadBalancing(負載均衡)
由多臺主機組成,每臺主機承擔部分訪問請求,通過負載均衡器分配任務,避免單點過載,提升系統吞吐量。
2)HA:High Availiablity(高可用)
核心是避免單點故障(SPOF,Single Point Of Failure),確保業務持續運行。
- MTBF(Mean Time Between Failure):平均無故障時間(系統正常運行的時長)。
- MTTR(Mean Time To Restoration):平均恢復時間(故障后恢復正常的時長)。
- 高可用率(A):計算公式為? A = MTBF / ( MBTF + MTTR ),取值范圍 (0,1),常用 “N 個 9” 表示(如 99.9%、99.99%)。
- SLA(Service Level Agreement):服務等級協議,明確服務可用性標準及未達標時的懲罰措施,運維的核心目標是達成 SLA(重點關注計劃外停機時間)。
3)HPC:High-performance computing(高性能計算)
用于復雜科學計算(如氣象模擬、基因分析),屬于國家戰略資源,非通用運維重點。
3.分布式
常見分布式應用場景:
- 分布式存儲:如 Ceph、GlusterFs、FastDFS(用于海量數據存儲,如圖片、文件)。
- 分布式計算:如 Hadoop、Spark(用于大數據處理,拆分計算任務到多節點并行執行)。
- 分布式應用:按功能拆分微服務(如電商的訂單、支付、物流模塊獨立部署)。
- 分布式靜態資源:靜態資源(圖片、JS、CSS)部署在不同存儲集群,提升訪問速度。
- 分布式緩存:使用 Key-Value 緩存系統(如 Redis 集群),減輕數據庫壓力。
4.集群和分布式的區別
特性 | 集群(Cluster) | 分布式(Distributed) |
結構 | 多機干同一件事 | 多機干不同的事 |
業務部署 | 同一業務系統,部署在多臺服務器,功能、代碼、數據一致 | 一個業務拆分為多個業務,部署在多臺服務器,每臺服務器功能、代碼、數據不同,協同完成完整業務 |
核心目標 | 提高單位時間內執行的任務數量(提升吞吐量) | 縮短單個任務的執行時間(提升效率) |
故障影響 | 單臺服務器故障,其他服務器可接管 | 單臺服務器故障可能導致對應子業務失敗 |
適用場景 | 高并發 Web 服務(負載均衡集群)、高可用數據庫(主從集群) | 微服務架構、大數據處理(Hadoop)、分布式存儲(Ceph) |
二、LVS(Linux Virtual Server)運行原理
1.LVS 簡介?
LVS(Linux Virtual Server,Linux 虛擬服務器)是 1998 年由章文嵩博士主導開發的一種基于 Linux 內核的負載均衡技術,它工作在 OSI 模型的傳輸層(TCP/UDP),通過將請求轉發到后端多個真實服務器(Real Server),實現流量的負載均衡,同時隱藏后端服務器架構,對外呈現為一個統一的虛擬 IP(VIP)。?
2.LVS 集群體系結構
3.LVS 的概念
- VS:Virtual Server ,虛擬服務,調度器(負責調度)
- RS:Real Server,真實服務器(負責真正提供服務,處理客戶端請求)
- DS:Director Server:負載均衡器(客戶端請求的接收者和分發者)
- CIP: Client IP ,客戶端IP
- VIP:Virtual IP ,負載均衡器虛擬 IP,VS 外網的 IP(客戶端通過該 IP 訪問集群服務)
- DIP:Director IP ,負載均衡器 IP,VS 內網的 IP(Director Server 上用于與 Real Server 通信的內網 IP)
- RIP:Real Server IP ,后端請求處理的服務器 IP(僅用于集群內部通信,Director 與 Real Server 之間)
訪問流程:CIP <--> VIP == DIP <--> RIP?
三、LVS 的四種工作模式?
LVS-NAT(網絡地址轉換):
通過修改請求報文的目標 IP(VIP→RIP)和響應報文的源 IP(RIP→VIP),實現多目標 IP 的 DNAT,所有流量必須經過 Director,適合小規模集群與私有網絡部署。
LVS-DR(直接路由):
在二層網絡通過操縱封裝新的 MAC 地址(保持 IP 不變)將請求轉發至 Real Server,響應直接返回客戶端,性能最優但要求 Director 與 RS 在同一物理網段。
LVS-TUN(IP 隧道):
在原請求 IP 報文之外新加一個 IP 首部(外層 IP 為 RIP),通過 IP 隧道封裝轉發至跨網段的 Real Server,響應直接返回客戶端,適合大規模分布式集群。
LVS-FULLNAT(全地址轉換):
同時修改請求報文的源 IP(客戶端 IP→DIP)和目標 IP(VIP→RIP),以及響應報文的源 / 目標 IP,突破 DR 模式的二層限制,支持 Director 與 RS 跨網段部署,但增加了 Director 負載。
1.LVS-NAT模式
1)NAT 模式簡介
NAT模式全稱為 Virtualserver via Network address translation(VS/NAT),是通過網絡地址轉換的方法來實現調度的,主要工作在 OSI 模型的第三層(網絡層)和第四層(傳輸層),對 ip 進行操作,對端口進行轉換。
首先調度器(Director)接收到客戶的請求數據包時(請求的目的?IP 為VIP),根據調度算法決定將請求發送給哪個后端的真實服務器(RS)。
然后調度就把客戶端發送的請求數據包的目標IP地址及端口改成后端真實服務器的IP地址(RIP),這樣真實服務器(RS)就能夠接收到客戶的請求數據包了。
真實服務器響應完請求后,查看默認路由(NAT模式下我們需要把RS的默認路由設置為DS服務器),把響應后的數據包發送給 DS。
DS 接收到響應包后,把包的源地址改成虛擬地址(VIP)然后發送回給客戶端。
2)NAT 模式特點
- 本質上是多目標 IP 的 DNAT,當調度器接收到客戶端發送給虛擬 IP(VIP)的請求報文時,會根據調度算法,從多個后端 RS 中挑選出一臺,將請求報文中的目標地址(VIP)和目標端口修改為該 RS 的 RIP 和相應端口,從而實現請求的轉發。
- NAT 技術將請求的報文和響應的報文都需要通過調度器進行地址改寫,因此網站訪問量比較大的時候DS 負載均衡調度器有比較大的瓶頸,后端服務器的數量一般不超過10 臺,否則 LVS 可能會出現問題。
- RIP 和 DIP 應在同一個IP網絡,且應使用私網地址,RS的網關需要指向 DIP,確保 RS 響應報文能夠正確返回給 Director。
- 請求報文和響應報文都必須經由 Director 轉發,Director 易于成為系統瓶頸。
- 支持端口映射,可修改請求報文的目標 PORT。
- VS(Director)必須是 Linux 系統,RS 可以是任意 OS 系統。
3)NAT 模式數據邏輯
① 發出請求(Client --> VS)
客戶端(Client,CIP)向虛擬服務(VS,VIP)的 80 端口發起服務請求。
② 調度并修改請求報文(VS --> RS)
VS 服務器接收到訪問請求,通過調度算法選擇 RS1,并執行 DNAT?將請求報文的目標地址由 VIP?改為 RS1 端口由 80 改為 9000。
③ 響應報文(RS --> VS)
RS1 監聽 9000 端口,處理請求后生成響應報文,源 IP 為 RIP1,目標 IP 為 CIP,端口為 9000,因網關指向 VS,響應原路返回給 VS。
④ 修改響應報文(VS --> Client)?
VS 服務器接收響應后執行 SNAT,將響應報文的源地址由 RIP1 --> VIP,響應端口 9000 --> 80
⑤ 接收響應(VS --> Client)
VS 服務器通過公網將報文返回客戶端,客戶端收到源 IP 為 VIP,端口為 80 的響應報文。?
4)NAT 模式工作流程
① 當用戶請求到達 Director Server,此時請求的數據報文會先到內核空間的 PREROUTING 鏈。 此時報文的源 IP 為 CIP,目標 IP 為 VIP。
② PREROUTING 檢查發現數據包的目標 IP 是本機,將數據包送至 INPUT 鏈。
③ IPVS比對數據包請求的服務是否為集群服務,若是,修改數據包的目標IP地址為后端服務器IP,然后將數據包發至 POSTROUTING 鏈。 此時報文的源 IP 為 CIP,目標 IP 為 RIP ,在這個過程完成了目標IP的轉換(DNAT)。
④ POSTROUTING鏈通過選路,將數據包發送給 Real Server。
⑤ Real Server比對發現目標為自己的IP,開始構建響應報文發回給 Director Server。 此時報文的源 IP 為 RIP,目標 IP 為 CIP 。
⑥ Director Server 在響應客戶端前,此時會將源IP地址修改為自己的 VIP 地址(SNAT),然后響應給客戶端。 此時報文的源 IP 為 VIP,目標 IP 為 CIP。
2.LVS-DR模式
1)DR 模式簡介?
DR(Direct Routing,直接路由)模式是一種高性能的負載均衡模式。其核心工作原理是通過修改請求數據包的MAC地址,而不改變其源IP和目標IP地址,從而實現負載均衡。?
主要工作在 OSI 七層模型中的第二層(數據鏈路層)和第三層(網絡層)
在DR模式下,客戶端的請求數據包首先到達LVS調度器(Director),調度器根據負載均衡算法選擇一個后端真實服務器(Real Server),并將請求數據包的目的MAC地址修改為選中的真實服務器的MAC地址,然后將數據包發送到該真實服務器。
2)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 地址,就接收此報文。處理完成之后,將響應報文通過 lo 接口傳送給 eth0 網卡然后向外發出。 此時的源 IP 地址為 VIP,目標 IP 為 CIP。
⑥ 響應報文最終送達至客戶端。
3.LVS-TUN模式(了解)
1)TUN?模式簡介?
TUN(Tunneling)模式是一種 LVS(Linux Virtual Server)的工作模式,它通過 IP 隧道技術實現負載均衡。在該模式下,客戶端請求由負載均衡器接收并封裝,然后通過 IP 隧道轉發到后端服務器(Real Server)。后端服務器處理請求后,直接將響應數據返回給客戶端,無需經過負載均衡器。這種方式避免了負載均衡器成為網絡瓶頸,適用于高并發和大規模服務場景。?
2)TUN 模式特點?
- DIP、VIP、RIP都應該是公網地址
- RS?的網關一般不能指向?DIP
- 請求報文要經由?Director,但響應不能經由?Director
- 不支持端口映射
- RS?的?OS 需支持隧道功能
3)TUN 模式的工作流程??
① 客戶端發送請求到負載均衡器的虛擬 IP(VIP),請求報文源地址是 CIP,目標地址為 VIP。
② 負載均衡器收到報文后,根據預設的調度算法選擇一個后端服務器,并將客戶端請求的數據包封裝一層 IP 報文,將源地址改為 DIP,目標地址改為 RIP,并將此包發送給 RS。
③ RS?收到 VS 調度器發送過來的數據包做出響應,解封裝并處理請求。
④ 處理完成后,后端服務器將響應數據直接發送給客戶端,而不是通過負載均衡器。
4.LVS-FULLNAT模式(了解)
1)FULL NAT 模式的簡介
FULL NAT 是 LVS(Linux Virtual Server)中的一種負載均衡工作模式,主要用于解決傳統 NAT 模式在實際部署中的局限性,尤其是在網絡拓撲復雜或跨 VLAN 通信的場景中。通過同時修改請求報文的源?IP?地址和目標?IP?地址,實現雙向地址轉換。
2)FULL NAT 模式的特點?
- VIP?是公網地址,RIP?和?DIP?是私網地址,且通常不在同一?IP?網絡;因此,RIP的網關一般不會指向DIP
- RS?收到的請求報文源地址是?DIP,因此,只需響應給?DIP,但?Director?還要將其發往?Client
- 請求和響應報文都經由?Director
- 支持端口映射
3)FULL NAT 模式的工作流程?
① 客戶端向 LVS 的虛擬 IP(VIP)發起請求,數據包的目的地址是 VIP,源地址是客戶端的 IP(CIP)。
② LVS 接收到請求后,IPVS 模塊根據調度算法選擇一個后端服務器(RealServer),并對數據包進行 DNAT 和 SNAT 操作。DNAT 將目標地址從 VIP 轉換為 RealServer 的 IP(RIP),SNAT 將源地址從 CIP 轉換為 LVS 的內網地址(LIP)。
③ 轉換后的數據包被發送到 RealServer,RealServer 接收到請求后,將響應數據包的源地址設置為自己的 RIP,目標地址設置為 LVS 的 LIP。
④ LVS 接收到響應數據包后,再次進行地址轉換,將源地址從 RIP 轉換為 VIP,目標地址從 LIP 轉換為 CIP,然后將響應數據包返回給客戶端。
5.LVS 工作模式總結
NAT 模式 | TUN 模式 | DR 模式 | |
RS 操作系統 | 不限 | 支持隧道 | 禁用 arp |
調度器和服務器網絡 | 可跨網絡 | 可跨網絡 | 不可跨網絡 |
調度服務器數量 | 少 | 多 | 多 |
RS 服務器網關 | 指向到調度器 DIP | 指向到路由 | 指向到路由 |
四、LVS 的調度算法?
1.LVS 調度算法類型
ipvs scheduler:根據其調度時是否考慮各?RS?當前的負載狀態被分為兩種:靜態方法和動態方法
- 靜態調度算法:僅根據算法本身進行調度,不考慮RS的負載情況
- 動態調度算法:實時監控服務器負載(如連接數、CPU 利用率等),根據負載狀態動態分配請求,主要根據每?RS?當前的負載狀態及調度算法進行調度?Overhead = value?較小的?RS?將被調度
2.LVS 靜態調度算法
1)RR:輪詢(Round Robin)
按順序依次將請求分配給后端服務器,循環往復。但不考慮服務器實際負載,若服務器性能差異較大,可能導致性能差的服務器過載。RS?分別被調度,當?RS?配置有差別時不推薦,適用于后端服務器性能相近的場景。
2)WRR:加權輪詢(Weighted Round Robin)
為每個服務器分配權重,權重越高分配的請求越多,性能差的RS被調度的次數少,適用于后端服務器性能差異較大時的場景。
3)SH:源地址哈希(Source Hashing)
根據客戶端 IP 計算哈希值,將同一客戶端的請求始終分配到同一服務器,可能導致負載分布不均,適用于需要保持會話親和性的場景。
4)DH:目標地址哈希(Destination Hashing)
根據目標 IP(如虛擬服務 VIP)計算哈希值,第一次輪詢調度至RS,后續將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商。
3.LVS 動態調度算法
1)LC:最少連接(Least Connections)
將請求分配給當前連接數最少的服務器,?適用于長連接應用?Overhead(負載值)= activeconns(活動鏈接數) x 256+inactiveconns(非活動鏈接數)
2)WLC:權重最少連接(Weighted Least Connections)
綜合考慮服務器權重和當前連接數,值越小優先級越高,默認調度方法?Overhead = (activeconns x 256+inactiveconns) / weight
3)SED:最少隊列調度(Shortest Expected Delay)
初始連接高權重優先?Overhead = (activeconns+1+inactiveconns) x 256 / weight,選擇延遲最小的服務器。但是,當?node1?的權重為1,node2?的權重為?10,經過運算前幾次的調度都會被?node2?承接
4)NQ:永不排隊調度(Never Queue)
若有服務器處于空閑狀態(連接數為 0),則直接分配,否則使用 SED 算法。第一輪均勻分配,后續?SED
5)LBLC:基于局部性的最小連接 / 動態的 DH 算法(Locality-Based Least Connections)
優先將請求分配給已緩存該資源的服務器(若存在);若所有服務器均無緩存,則分配給連接數最少的服務器。使用場景:根據負載狀態實現正向代理
6)LBLCR:帶復制的基于局部性的最小連接(Locality-Based Least Connections with Replication)
優先將請求分配給該列表中連接數最少的服務器。若列表中服務器負載過高,則動態調整列表。解決 LBLC 負載不均衡問題,從負載重的復制到負載輕的?RS
五、LVS 部署命令
1.LVS 軟件相關信息
- 程序包: ipvsadm
- Unit File: ipvsadm.service
- 主程序: /usr/sbin/ipvsadm
- 規則保存工具: /usr/sbin/ipvsadm-save
- 規則重載工具: /usr/sbin/ipvsadm-restore
- 配置文件: /etc/sysconfig/ipvsadm-config
- ipvs 調度規則文件: /etc/sysconfig/ipvsadm
2.ipvsadm 命令?
- ipvsadm -D -t|u|f service-address? ? ?# 刪除指定的虛擬服務
- ipvsadm –C? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 清空所有負載均衡規則
- ipvsadm –R? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 重載
- ipvsadm -S [-n]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #?保存(將當前負載均衡規則導出為可執行的腳本)
- ipvsadm -Z [-t|u|f service-address]? ? # 清除計數器(可指定)
3.LVS 集群服務的參數
1)管理集群服務中的增刪改?
命令格式:ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]?
- -A ? ? ? ? # 添加
- -E? ? ? ? ?# 修改
- -D? ? ?? ?# 刪除
- -L? ? ? ? ?# 查看 lvs 策略
- -C? ? ? ? # 清空 lvs 策略
- -n? ? ? ? ?# 不做解析
- -t ? ? ? ? ?# tcp 服務
- -u ? ? ? ? # udp 服務
- -s ? ? ? ? # 指定調度算法,默認為 WLC
- -p ? ? ? ? # 設置持久連接超時,持久連接可以理解為在同一個時間段同一個來源的請求調度到同一 Realserver
- -f ? ? ? ? # firewall mask 火墻標記,是一個數字
實驗環境設定:?
主機名 | ip | 角色 |
lvs | NAT-eth0:172.25.254.100 僅主機-eth1:192.168.96.100 | 調度器(VS) |
RS1 | 僅主機-eth0:192.168.96.10 | 真實服務器(RS1) |
RS2 | 僅主機-eth0:192.168.96.20 | 真實服務器(RS2) |
在 lvs 中安裝 ipvsadm。?
示例:
ipvsadm -A -t 172.25.254.100:80 -s rr:添加一個基于 TCP 的虛擬服務,監聽地址為 172.25.254.100,端口為 80,并使用輪詢(Round Robin)算法來調度請求,依次將請求分配給后端的真實服務器
ipvsadm -L:查看當前所有的虛擬服務及其相關的真實服務器規則(被 dns 解析過,顯示主機名)
ipvsadm -Ln:與 -L 類似,不做解析,顯示 ip 地址和端口
ipvsadm -E -t 172.25.254.100:80 -s wrr:將 ip 為 172.25.254.100 虛擬服務的調度算法更改為加權輪詢(Weighted Round Robin)。
ipvsadm -E -t 172.25.254.100:80 -s wrr -p 360:設置持久化連接的時間為 360 秒(360 秒后再分配給另一臺真實服務器)
ipvsadm -A -f 66 -s rr:添加一個基于防火墻標記(Firewall Mark)的虛擬服務,標記值為 66,并使用輪詢算法進行調度?
ipvsadm -D -f 66:刪除基于防火墻標記的虛擬服務?
ipvsadm -C:清除所有當前配置的虛擬服務和真實服務器規則?
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? ? # 輸出速率信息
ipvsadm -a -t 172.25.254.100:80 -r 192.168.96.10:80 -m:將真實服務器 192.168.96.10:80 添加到虛擬服務 172.25.254.100:80 中,并使用 NAT 模式(即 -m?參數)?
ipvsadm -a -t 172.25.254.100:80 -r 192.168.96.20:80 -g:將另一個真實服務器 192.168.96.20:80 添加到虛擬服務 172.25.254.100:80 中,使用直接路由模式(即 -g?參數)?
注:NAT 模式與直連路由不能混用,這里僅展示參數使用
ipvsadm -e -t 172.25.254.100:80 -r 192.168.96.10:80 -i:更改已有的真實服務器 192.168.96.10:80,將其轉發方式更改為 IP 隧道模式(即 -i 參數)?
ipvsadm -e -t 172.25.254.100:80 -r 192.168.96.10:80 -i -w 2:設置真實服務器 192.168.96.10:80 的權重為 2(即 -w 2)
ipvsadm -Z:重置所有虛擬服務的連接計數器,將統計值歸零
ipvsadm -Ln --rate:列出當前所有的虛擬服務及其真實服務器,并顯示速率信息(即 --rate)?
3)IPVS 的備份及恢復
ipvsadm-save:將當前運行的 IPVS 規則以文本形式輸出到標準輸出?
ipvsadm-save -n:以數字形式輸出規則信息,即不進行 DNS 反向解析,直接顯示 IP 地址和端口號
ipvsadm-save -n > /mnt/ipvsadm.rule:將數字格式的配置重定向到文件 /mnt/ipvsadm.rule,用于持久化保存當前的 IPVS 規則,便于后續恢復。
然后清除當前所有的 IPVS 規則和配置?
ipvsadm-restore < /mnt/ipvsadm.rule:從文件 /mnt/ipvsadm.rule 恢復之前保存的 IPVS 規則
六、LVS 實戰案例
1.部署 NAT 模式集群案例?
1)NAT 模式實驗環境設定
主機名 | ip | 角色 |
client | NAT-eth0:172.25.254.111 | 測試機(客戶端) |
lvs | NAT-eth0:172.25.254.100 僅主機-eth1:192.168.96.100 | 調度器(VS) |
RS1 | 僅主機-eth0:192.168.96.10 | 真實服務器(RS1) |
RS2 | 僅主機-eth0:192.168.96.20 | 真實服務器(RS2) |
在 RS1 和 RS2 中都安裝 httpd,禁用并立即停止防火墻服務,啟用并立即啟動 httpd 服務,然后分別創建一個簡單的測試頁面,用于驗證 http?服務是否正常工作。
?RS1:?
RS2:?
lvs:?
訪問 RS1 和 RS2 兩個真實服務器的地址,檢測是否能夠成功訪問。
2)配置命令
① 在 lvs 中啟用內核路由功能
查看系統中所有與 ipv4 轉發相關的內核參數,net.ipv4.ip_forward = 0 表示當前未啟用 ipv4 轉發。
將啟用 IPv4 轉發的配置寫入系統內核參數配置文件?/etc/sysctl.conf,實現永久生效。
sysctl -p:從配置文件加載并立即應用內核參數,無需重啟系統。
② 在 lvs 中安裝 ipvsadm?
③ 添加調度策略并查看策略
④ 保存規則
⑤ 刪除所有規則
⑥ 重新加載規則
⑦ 以上操作均為臨時,設定開機自啟動
⑧ 測試
⑨ 修改為權重調用算法
測試:?
2.部署 DR 模式集群案例
1)DR 模式實驗環境設定
主機名 | ip | vip | 角色 |
client | NAT-eth0:172.25.254.111 | null | 測試機(客戶端) |
router | NAT-eth0:172.25.254.100 僅主機-eth1:192.168.96.100 | null | 路由器 |
DR-lvs | 僅主機-eth0:192.168.96.200 網關:192.168.96.100 | lo:192.168.96.220 | 調度器(VS) |
RS1 | 僅主機-eth0:192.168.96.10 網關:192.168.96.100 | lo:192.168.96.220 | web 服務器(RS1) |
RS2 | 僅主機-eth0:192.168.96.20 網關:192.168.96.100 | lo:192.168.96.220 | web 服務器(RS2) |
client:在客戶端主機(client)中設定為 nat 模式網卡,網關為 router 的 172.25.254.100
router:在路由主機(router)中設定雙網卡,eth0 為 nat 網卡,eth1 為僅主機網卡
對 eth0 的設定:?
對 eth1?的設定:?
在持久化內核參數的配置文件中寫入 net.ipv4.ip_forward = 1,并重新加載 /etc/sysctl.conf 中的內核參數配置,使修改立即生效,無需重啟系統。
立即啟用并設置開機自啟動?firewalld 服務,并配置防火墻允許?NAT(網絡地址轉換),使內網設備能通過該服務器訪問外網。
永久允許需要刷新才能實現。(若為 no,則缺少 firewall-cmd --reload 命令進行刷新)?
lvs:對于dr調度器設定網卡為僅主機模式
DIP 為 192.168.96.200/24,VIP 為192.168.96.220/24,對外通信
對于?RS1 和 RS2?的設定網卡為僅主機模式,VIP 都為 192.268.96.200/32(對外不響應)
RS1:??
RS2:??
2)解決 vip 響應問題
限制響應級別:arp_ignore
- 0:默認值,表示可使用本地任意接口上配置的任意地址進行響應
- 1:僅在請求的目標IP配置在本地主機的接收到請求報文的接口上時,才給予響應
限制通告級別:arp_announce
- 0:默認值,把本機所有接口的所有信息向每個接口的網絡進行通告
- 1:盡量避免將接口信息向非直接連接網絡進行通告
- 2:必須避免將接口信息向非本網絡進行通告
在 lvs 和兩臺 RS(RS1、RS2)中設定 vip?
在 RS1 和 RS2 中的 /etc/sysctl.conf 文件中寫入以下內容,并通過 sysctl -p 加載,設定 lo 不對外響應。
在 lvs 中配置策略,模式為直連路由。
測試結果:
3.防火墻標簽解決輪詢問題
1)輪詢規則中可能回遇到的錯誤
在 RS1 和 RS2 中安裝 mod_ssl,并重啟 apache。
RS1:?
RS2:?
確保 lvs 的防火墻是關閉的。?
在 lvs 中設置調度,設定兩組策略,調度 80 和 443 兩個端口。
測試問題:?
2)防火墻標記解決輪詢調度問題
在 VS 調度器中設定端口標簽,人為 80 和 443 是一個整體。
設定調度規則?
測試結果:
4.LVS 持久鏈接
在 lvs 調度器中設定,設置超時時間為 1 分鐘?
此時客戶端訪問 192.168.96.220 顯示的是192.168.96.10 的主機?
等時間超過了之后,再次訪問 192.168.96.220,便輪詢到 192.168.96.20。?
此時時間會重新計時,在這個時間內訪問的是 192.168.96.20 的主機