LVS 集群技術詳解與實戰部署

目錄

引言

一、實驗環境準備

二、理論基礎:集群與 LVS 核心原理

2.1 集群與分布式

2.2 LVS 核心原理

LVS 的 4 種工作模式

LVS 調度算法

三、LVS 部署工具:ipvsadm 命令詳解

四、實戰案例:LVS 部署詳解

案例 1:NAT 模式集群部署

環境說明

配置步驟

案例 2:DR 模式集群部署

環境說明

配置步驟

1.在客戶端主機中為nat模式網卡:

2.?在路由主機中設定雙網卡,eth0為nat網卡,eth1為僅主機網卡

3.對于dr調度器設定網卡為僅主機模式??

?4.對于RS1的設定網卡為僅主機模式

?5.對于RS2中的網絡設定

解決vip響應問題

配置詳情

1.配置要點

?2.在lvs 和 rs 中設定vip

?3.在RS1和RS2中解決響應問題

4.在lvs中配置策略

?5.測試效果

三、總結


引言

在高并發業務場景中,單臺服務器往往難以承載大量的訪問請求,此時集群技術成為提升系統性能與可用性的關鍵。LVS(Linux Virtual Server,Linux 虛擬服務器)作為 Linux 內核集成的負載均衡技術,能夠將請求高效分發到多臺真實服務器,實現負載均衡。本文將從理論到實戰,詳細介紹 LVS 集群技術,包括核心原理、部署命令及多個實戰案例,助你快速掌握 LVS 的應用。

一、實驗環境準備

在開始 LVS 部署前,需準備以下實驗環境(可根據實際情況調整主機數量和 IP):

主機名

角色

說明

server1

調度器(VS)

負責請求調度,需配置 VIP:192.168.2.100(虛擬 IP)和 DIP:192.168.186.100(調度器內網 IP)

server2

真實服務器(RS1)

提供實際服務(如 Web),配置 RIP(真實服務器 IP)192.168.186.10

server3

真實服務器(RS2)

同 server2? IP地址:192.168.186.20

server4

測試機

模擬客戶端,用于測試負載均衡效果? IP地址:192.168.2.111

二、理論基礎:集群與 LVS 核心原理

2.1 集群與分布式

  • 集群(Cluster):多臺計算機組合成的單個系統,用于解決特定問題,常見類型包括:
    • 負載均衡(LB):請求分發到多臺主機,分攤負載;
    • 高可用(HA):避免單點故障(SPOF),提升服務可用性;
    • 高性能計算(HPC):專注大規模計算(本文不涉及)。
  • 分布式:將業務拆分為多個子業務,部署在多臺服務器,每臺服務器功能不同,組合實現完整業務。
  • 區別:集群通過提升單位時間處理任務數提升效率,分布式通過縮短單個任務時間提升效率。

2.2 LVS 核心原理

LVS 由調度器(VS)和真實服務器(RS)組成,VS 根據調度算法將客戶端請求分發到 RS,核心術語包括:

  • VIP:VS 對外提供服務的 IP;
  • DIP:VS 內網 IP,用于與 RS 通信;
  • RIP:RS 的 IP;
  • CIP:客戶端 IP。
LVS 的 4 種工作模式
  1. NAT 模式(lvs-nat)
    • 原理:修改請求報文的目標 IP(多目標 DNAT),請求和響應均經過 VS;
    • 特點:RS 網關需指向 DIP,支持端口映射,但 VS 可能成為瓶頸。
  1. DR 模式(lvs-dr)
    • 原理:通過封裝新 MAC 地址轉發請求,請求經 VS,響應由 RS 直接發往客戶端;
    • 特點:VS 和 RS 需配置相同 VIP,不支持端口映射,性能高(默認模式)。
  1. TUN 模式(lvs-tun)
    • 原理:原 IP 報文外封裝新 IP 首部(源 DIP,目標 RIP),響應由 RS 直接發往客戶端;
    • 特點:支持跨網絡部署,需公網 IP,RS 需支持隧道功能。
  1. FULLNAT 模式
    • 原理:修改請求報文的源 IP 和目標 IP,請求和響應均經過 VS;
    • 特點:內核默認不支持,RIP 與 DIP 可不在同一網絡。
LVS 調度算法
  • 靜態算法(不考慮 RS 負載):
    • RR(輪詢):請求依次分發到各 RS;
    • WRR(加權輪詢):按權重分配,性能高的 RS 承擔更多請求;
    • SH(源地址哈希):同一客戶端請求固定到同一 RS(會話綁定)。
  • 動態算法(考慮 RS 負載):
    • WLC(加權最少連接):默認算法,根據活躍連接數和權重分配;
    • SED(最短預期延遲):高權重 RS 優先承接新請求;
    • FO(加權故障轉移):用于灰度發布,優先調度未過載的高權重 RS。

三、LVS 部署工具:ipvsadm 命令詳解

ipvsadm 是 LVS 的管理工具,用于配置集群服務和 RS,核心命令如下:

功能

命令示例

說明

添加集群服務

ipvsadm -A -t VIP:80 -s rr

添加 TCP 服務(VIP:80),調度算法為輪詢(rr)

添加 RS

ipvsadm -a -t VIP:80 -r RIP:80 -m

為集群服務添加 RS(RIP:80),模式為 NAT(-m)

修改配置

ipvsadm -E -t VIP:80 -s wrr

將調度算法修改為加權輪詢(wrr)

刪除 RS

ipvsadm -d -t VIP:80 -r RIP:80

從集群服務中刪除指定 RS

查看配置

ipvsadm -Ln

顯示集群配置(-n:不解析域名)

保存規則

ipvsadm -Sn > /etc/sysconfig/ipvsadm

保存當前配置到文件

?

四、實戰案例:LVS 部署詳解

案例 1:NAT 模式集群部署

環境說明
  • VS(server1):VIP=192.168.2.100(外網),DIP=192.168.186.100(內網);
  • RS1(server2):RIP=192.168.186.10,網關指向 DIP;
  • RS2(server3):RIP=192.168.186.20,網關指向 DIP;
  • 測試機(server4):192.168.2.111模擬外網客戶端。
配置步驟
  1. VS 啟用內核路由
[root@lvs ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.d/99-ip_forward.conf
[root@lvs ~]# sysctl --system # 生效配置

??

??

【解釋】:NAT 模式需要 VS 轉發報文,需開啟 IP 轉發。

  1. 安裝 ipvsadm
[root@lvs ~]# yum install ipvsadm -y
[root@lvs ~]# systemctl enable --now ipvsadm # 開機自啟
  1. 配置集群服務和 RS
# 添加集群服務(VIP:80,輪詢算法)[root@lvs ~]# ipvsadm -A -t 192.168.2.100:80 -s rr# 添加RS1(NAT模式)[root@lvs ~]# ipvsadm -a -t 192.168.2.100:80 -r 192.168.186.10:80 -m# 添加RS2(NAT模式)[root@lvs ~]# ipvsadm -a -t 192.168.2.100:80 -r 192.168.186.20:80 -m

?

  1. 測試驗證

在測試機執行多次請求,觀察輪詢效果:

for N in {1..6};do curl 192.168.2.100;done

?

預期結果:交替返回 RS1 和 RS2 的響應。

案例 2:DR 模式集群部署

環境說明
主機名IPVIP角色
DR_client192.168.2.111null測試主機
route

NAT-eth0:192.168.2.100,

僅主機-eth1:192.168.186.100

null路由器
lvs

192.168.186.200,

GW:192.168.186.100

lo:192.168.186.254調度器
RS1192.168.186.10, GW:192.168.186.100lo:192.168.186.254web服務器1
RS2192.168.186.20, GW:192.168.186.200lo:192.168.186.254web服務器2
配置步驟
1.在客戶端主機中為nat模式網卡

[root@client ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [root@client ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.2     0.0.0.0         UG    100    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

2.?在路由主機中設定雙網卡,eth0nat網卡,eth1為僅主機網卡
#對于eth0的設定
[root@lvs ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=192.168.2.100/24,192.168.2.2
dns=8.8.8.8#對于eth1的設定
[root@lvs ~]# vim /etc/NetworkManager/system-connections/eth1.nmconnection [connection]
id=eth1
type=ethernet
interface-name=eth1[ipv4]
method=manual
address1=192.168.186.100/24,192.168.2.2
dns=8.8.8.8

?

3.對于dr調度器設定網卡為僅主機模式 ?
[root@lvs-dr ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=192.168.186.200/24,192.168.186.100
address2=192.168.186.254/24
dns=8.8.8.8
?4.對于RS1的設定網卡為僅主機模式
[root@rs1 ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=192.168.186.10/24,192.168.186.100
dns=8.8.8.8

?

?5.對于RS2中的網絡設定
[root@rs2 ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=192.168.186.20/24,192.168.186.100
dns=8.8.8.8

解決vip響應問題
DR模型中各主機上均需要配置VIP,解決地址沖突的方式有三種:
(1)在前端網關做靜態綁定
(2)在各RS使用arptables
(3)在各RS修改內核參數,來限制arp響應和通告的級別
限制響應級別:arp_ignore
0:默認值,表示可使用本地任意接口上配置的任意地址進行響應
1:僅在請求的目標IP配置在本地主機的接收到請求報文的接口上時,才給予響應
限制通告級別:arp_announce
0:默認值,把本機所有接口的所有信息向每個接口的網絡進行通告
1:盡量避免將接口信息向非直接連接網絡進行通告
2:必須避免將接口信息向非本網絡進行通告
配置詳情
1.配置要點
1.Director服務器采用雙IP橋接網絡,一個是VPP,一個DIP
2.Web服務器采用和DIP相同的網段和Director連接
3.每個Web服務器配置VIP
4.每個web服務器可以出外網
?2.lvs rs 中設定vip
#lvs
[root@lvs-dr ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection [connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=192.168.186.200/24,192.168.186.100
address2=192.168.186.254/24
dns=8.8.8.8

#RS1
[root@rs1 ~]# vim /etc/NetworkManager/system-connections/lo.nmconnection [connection]
id=lo
type=loopback
interface-name=lo[ipv4]
method=manual
address1=127.0.0.1/8
address2=192.168.186.254/32

#RS2
[root@rs2 ~]# vim /etc/NetworkManager/system-connections/lo.nmconnection [connection]
id=lo
type=loopback
interface-name=lo[ipv4]
method=manual
address1=127.0.0.1/8
address2=192.168.186.254/32

?3.RS1RS2中解決響應問題
#RS1
[root@rs1 ~]# echo net.ipv4.conf.all.arp_ignore =1 >> /etc/sysctl.conf 
[root@rs1 ~]# echo net.ipv4.conf.all.arp_announce = 2 >> /etc/sysctl.conf 
[root@rs1 ~]# echo net.ipv4.conf.lo.arp_ignore = 1 >> /etc/sysctl.conf 
[root@rs1 ~]# echo net.ipv4.conf.lo.arp_announce = 2 >> /etc/sysctl.conf 

?

#RS2
[root@rs2 ~]# echo net.ipv4.conf.all.arp_ignore =1 >> /etc/sysctl.conf 
[root@rs2 ~]# echo net.ipv4.conf.all.arp_announce = 2 >> /etc/sysctl.conf 
[root@rs2 ~]# echo net.ipv4.conf.lo.arp_ignore = 1 >> /etc/sysctl.conf 
[root@rs2 ~]# echo net.ipv4.conf.lo.arp_announce = 2 >> /etc/sysctl.conf 

4.lvs中配置策略
#lvs
[root@lvs-dr ~]# ipvsadm -A -t 192.168.186.254:80 -s rr
[root@lvs-dr ~]# ipvsadm -a -t 192.168.186.254:80 -r 192.168.186.10:80 -g
[root@lvs-dr ~]# ipvsadm -a -t 192.168.186.254:80 -r 192.168.186.20:80 -g

?

?5.測試效果

三、總結

LVS 作為高性能的負載均衡技術,通過不同工作模式(NAT/DR/TUN)和調度算法,可靈活應對各種業務場景。本文通過 4 個實戰案例,從基礎部署到問題解決,詳細演示了 LVS 的配置過程。實際應用中,需根據業務需求選擇合適的模式(如 DR 模式適合高并發場景),并結合監控工具(如 ipvsadm 統計)優化調度策略。

希望本文能幫助你快速掌握 LVS 集群技術,歡迎在評論區交流部署過程中遇到的問題!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89789.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89789.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端vue3獲取excel二進制流在頁面展示

excel二進制流在頁面展示安裝xlsx在頁面中定義一個div來展示html數據定義二進制流請求接口拿到數據并展示安裝xlsx npm install xlsx import * as XLSX from xlsx;在頁面中定義一個div來展示html數據 <div class"file-input" id"file-input" v-html&qu…

android 信息驗證動畫效果

layout_check_pro <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/parent"android:layout_width"wrap_content"android:layout_…

【iOS】繼承鏈

文章目錄前言什么是繼承鏈OC中的根類關于NSProxy關鍵作用1.方法查找與動態綁定2. 消息轉發3. **類型判斷與多態**繼承鏈的底層實現元類的繼承鏈總結前言 在objective-c中&#xff0c;繼承鏈是類與類之間通過父類&#xff08;Superclass&#xff09;關系形成的一層層繼承結構&am…

論文閱讀:Instruct BLIP (2023.5)

文章目錄InstructBLIP&#xff1a;邁向通用視覺語言模型的指令微調研究總結一、研究背景與目標二、核心方法數據構建與劃分模型架構訓練策略三、實驗結果零樣本性能消融實驗下游任務微調定性分析可視化結果展示四、結論與貢獻InstructBLIP&#xff1a;邁向通用視覺語言模型的指…

Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】

目錄 一、準備階段 二、實驗階段 1.配置kibana主機 2.配置elasticsearch主機 3.配置logstash主機 4.配置/etc/filebeat/filebeat.yml 三、驗證 1.開啟Filebeat 2.在logstash查看 3.瀏覽器訪問kibana 一、準備階段 1.準備四臺主機kibana、es、logstash、filebeat 2.在…

Vue開發前端報錯:‘vue-cli-service‘ 不是內部或外部命令解決方案

1.Bug: 最近調試一個現有的Vue前端代碼&#xff0c;發現如下錯誤&#xff1a; vue-cli-service’ 不是內部或外部命令&#xff0c;也不是可運行的程序 或批處理文件。 2.Bug原因&#xff1a; 導入的工程缺少依賴包&#xff1a;即缺少node_modules文件夾 3.解決方案&#xff1…

AI生態,釘釘再「出招」

如果說之前釘釘的AI生態加持更多的圍繞資源和商業的底層助力&#xff0c;那么如今這種加持則是向更深層次進化&#xff0c;即真正的AI模型訓練能力加持&#xff0c;為垂類大模型創業者提供全方位的助力&#xff0c;提高創業成功率和模型產品商業化確定性。作者|皮爺出品|產業家…

XSS GAME靶場

要求用戶不參與&#xff0c;觸發alert(1337) 目錄 Ma Spaghet! Jefff Ugandan Knuckles Ricardo Milos Ah Thats Hawt Ligma Mafia Ok, Boomer Exmaple 1 - Create Example 2 - Overwrite Example 3 - Overwrite2 toString Ma Spaghet! <h2 id"spaghet&qu…

Unity學習筆記(五)——3DRPG游戲(2)

添加更多的敵人 編輯EnemyController&#xff0c;解決報錯導致敵人無法注冊觀察者模式&#xff0c;從而無法執行敵人慶祝動畫 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public enum EnemyStatus { GUARD,PATROL…

2025測繪程序設計國賽實戰:一輪終章 | 單向后方交會C#實現

前言本文是小編對六道國賽試題中的最后一個試題&#xff0c;單向后方交會的一篇學習日志。本文的整體架構&#xff0c;依舊首先拿訓練數據跟大家介紹本題涉及到的數據的屬性含義&#xff0c;涉及到算法的原理、執行流程和終極目的。然后附上小編用C#來實現的程序&#xff0c;從…

基于Echarts的氣象數據可視化網站系統的設計與實現(Python版)

本系統旨在構建一個基于Echarts的氣象數據可視化系統&#xff0c;本系統能夠從中國天氣網爬取實時天氣數據&#xff0c;并進行存儲、分析和可視化展示。用戶可以通過網頁界面查看不同地區的天氣情況&#xff0c;以及歷史天氣數據的變化趨勢。 技術棧&#xff1a;Python語言、My…

HarmonyOS 啟動提速秘籍:懶加載全鏈路實戰解析

摘要 隨著移動應用功能越來越復雜、界面越來越豐富&#xff0c;應用啟動慢、內存占用高等問題也越來越普遍。特別是在 HarmonyOS NEXT 應用開發中&#xff0c;如果不加優化&#xff0c;用戶打開頁面時可能要等好幾秒&#xff0c;體驗就很差了。 懶加載&#xff08;Lazy Loading…

全新安裝Proxmox VE啟動時卡在Loading initial ramdisk

原因&#xff1a; 使用了Ventoy啟動盤裝載 Proxmox ISO 文件安裝。 要用Ventoy優盤啟動&#xff0c;選擇Advance Option里的Rescue Boot&#xff0c; 修改文件/etc/default/grub.d/installer.cfg&#xff0c;刪除rdinit/vtoy/vtoy運行 update-grub 更新grub配置&#xff0c;重啟…

【Java項目安全基石】登錄認證實戰:Session/Token/JWT用戶校驗機制深度解析

目錄 1.前言 2.正文 2.1Cookie—Session機制 2.1.1核心原理圖解&#xff1a; 2.1.2四步核心流程&#xff1a; 2.1.3存儲架構對比 2.1.4集群部署方案&#xff08;Spring Session Redis&#xff09; 2.2Token令牌 2.2.1核心原理圖解&#xff1a; 2.2.2四步核心流程&am…

融合優勢:SIP 廣播對講聯動華為會議 全場景溝通響應提速?

SIP 廣播對講與華為視頻會議融合解決方案&#xff0c;是基于 SIP 協議將廣播對講系統與華為視頻會議系統進行整合&#xff0c;實現通信資源共享與業務流程聯動&#xff0c;可提升應急響應效率與溝通協作能力。融合原理&#xff1a;SIP 是一種基于文本的應用層協議&#xff0c;具…

Milvus Dify 學習筆記

目錄 docker方式&#xff1a; 模式一&#xff1a;Milvus Lite linux docker方式&#xff1a; 下載yml文件&#xff0c; https://github.com/milvus-io/milvus/releases docker啟動&#xff1a; docker compose up -d from pymilvus import connections connections.conne…

汽車ECU控制器通信架構

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

【Linux】基本指令(入門篇)(上)

目錄 前言 1.目錄操作指令 1.1指令 1.2理論 1.2.1文件 1.2.2目錄與路徑 2.文件操作指令 2.1指令 2.2理論 2.2.1輸出與輸入 2.2.2一切皆文件 前言 這是Linux學習下的第一篇文章&#xff0c;后續Linux的學習也會持續更新分享。 Linux的基本指令是使用Linux操作系統的基礎…

正向代理與反向代理理解

問&#xff1a; 應用a請求ng&#xff0c;然后ng根據不同請求路徑將請求轉發到不同的服務器&#xff0c;對于應用a來說這個ng是正向代理角色還是反向代理呢&#xff1f; 答&#xff1a; 在這個場景中&#xff0c;Nginx 扮演的是反向代理的角色&#xff0c;而不是正向代理。以下是…

【Kafka】深入理解 Kafka MirrorMaker2 - 實戰篇

文章目錄一、把“家伙事兒”都備齊二、部署其實很簡單三、配置 MirrorMaker2四、修改啟動腳本五、集群啟動與驗證六、這集群“結實”嗎&#xff1f;聊聊它的高可用它沒有“大腦”&#xff0c;但活得很好極限測試&#xff1a;干掉兩個節點會怎樣&#xff1f;寫在最后最近在跟 Ka…