LVS-NAT 負載均衡群集

目錄

簡介

一、LVS 與群集技術基礎

1.1 群集技術概述

1.2 負載均衡群集的分層結構

1.3 負載均衡工作模式

二、LVS 虛擬服務器核心組件與配置

2.1 LVS 內核模塊與管理工具

2.2 負載調度算法解析

2.3 ipvsadm 管理工具實戰

三、NFS 共享存儲服務配置

3.1 NFS 服務基礎配置

3.2 客戶端訪問 NFS 共享

四、案例:LVS-NAT 負載均衡群集

4.1 案例環境準備

4.2 配置負載調度器

4.3 配置真實服務器節點

4.4 測試 LVS 群集效果

五、總結


簡介

在當今互聯網應用場景中,單臺服務器早已無法滿足高并發、高可用的服務需求。LVS(Linux Virtual Server)作為 Linux 平臺下的高性能負載均衡解決方案,通過整合多臺服務器資源,以統一入口提供服務,成為企業構建高可用集群的核心技術之一。

一、LVS 與群集技術基礎

1.1 群集技術概述

群集(Cluster)是一組服務器的集合體,對外表現為一個整體服務單元。根據目標不同,群集主要分為三類:

  • 負載均衡群集:提升系統響應能力,處理高并發請求(如 DNS 輪詢、反向代理)
  • 高可用群集:確保服務連續性,減少中斷時間(如雙機熱備、故障切換)
  • 高性能運算群集:整合計算資源,實現分布式運算(如云計算、網格計算)

1.2 負載均衡群集的分層結構

典型的負載均衡群集包含三個層次:

  1. 負載調度器:唯一入口,使用群集 IP(VIP),支持主備熱備
  2. 服務器池:真實服務器(RIP)組成,處理調度器分發的請求
  3. 共享存儲:確保各節點數據一致性,常用 NFS 或 NAS

1.3 負載均衡工作模式

LVS 支持三種核心工作模式:

  • NAT 模式(地址轉換):調度器作為網關,服務器使用私有 IP,安全性高
  • TUN 模式(IP 隧道):服務器分散在公網,通過隧道與調度器通信
  • DR 模式(直接路由):服務器與調度器同網絡,性能更高

二、LVS 虛擬服務器核心組件與配置

2.1 LVS 內核模塊與管理工具

LVS 作為 Linux 內核模塊(ip_vs),默認已編譯。可通過以下命令加載并查看版本:

modprobe ip_vs  # 手動加載ip_vs模塊
cat /proc/net/ip_vs  # 查看LVS模塊版本信息

2.2 負載調度算法解析

LVS 提供多種調度算法,常用四種:

  • 輪詢(RR):順序分配請求,不考慮服務器負載
  • 加權輪詢(WRR):按權重分配,性能高的節點承擔更多請求
  • 最少連接(LC):將請求分配給連接數最少的節點
  • 加權最少連接(WLC):結合權重與連接數,動態調整分配

2.3 ipvsadm 管理工具實戰

(1)安裝 ipvsadm 工具

dnf install ipvsadm  # 在OpenEuler系統中安裝ipvsadm管理工具
ipvsadm -v  # 查看ipvsadm版本信息

(2)創建虛擬服務器

ipvsadm -A -t 172.16.16.172:80 -s rr  # -A添加虛擬服務器,-t指定VIP和端口,-s指定輪詢算法

(3)添加真實服務器節點

ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1  # -a添加真實服務器,-r指定RIP和端口,-m指定NAT模式,-w設置權重為1

(4)查看群集狀態

ipvsadm -ln  # -l列表顯示,-n以數字形式顯示IP和端口,避免DNS解析

(5)保存與恢復策略

ipvsadm-save > /etc/sysconfig/ipvsadm  # 保存當前LVS策略到配置文件
systemctl start ipvsadm  # 啟動ipvsadm服務,應用保存的策略

三、NFS 共享存儲服務配置

3.1 NFS 服務基礎配置

NFS(網絡文件系統)用于群集節點間數據共享,基于 RPC 機制實現:

(1)安裝 NFS 服務組件

yum -y install nfs-utils rpcbind  # 安裝NFS服務和RPC支持組件
systemctl enable nfs-server rpcbind  # 設置服務開機自啟動

(2)配置共享目錄

vi /etc/exports  # 編輯NFS配置文件
# 添加以下內容(示例):
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)  # 共享/opt/wwwroot目錄給192.168.10.0/24網段,允許讀寫

(3)啟動 NFS 服務

systemctl start rpcbind  # 先啟動RPC服務
systemctl start nfs-server  # 再啟動NFS服務
netstat -anpt | grep rpc  # 檢查RPC相關端口是否正常監聽

(4)查看共享目錄

showmount -e  # 查看本機發布的NFS共享目錄

3.2 客戶端訪問 NFS 共享

(1)客戶端環境準備

yum -y install rpcbind nfs-utils  # 安裝客戶端所需組件
systemctl enable rpcbind  # 啟用RPC服務并設置自啟動
systemctl start rpcbind

(2)手動掛載 NFS 共享

mount 192.168.10.104:/opt/wwwroot /var/www/html  # 掛載NFS共享目錄到本地路徑
tail -1 /etc/mtab  # 確認掛載結果

(3)設置自動掛載

vi /etc/fstab  # 編輯fstab文件
# 添加以下內容:
192.168.10.104:/opt/wwwroot /var/www/html nfs defaults,_netdev 0 0  # _netdev參數表示設備依賴網絡

四、案例:LVS-NAT 負載均衡群集

4.1 案例環境準備

主機

操作系統

IP 地址

應用

lvs

OpenEuler 24.03

192.168.10.101

ipvsadm(調度器)

web1

OpenEuler 24.03

192.168.10.102

Apache(真實服務器)

web2

OpenEuler 24.03

192.168.10.103

Apache(真實服務器)

nfs

OpenEuler 24.03

192.168.10.104

NFS(共享存儲)

4.2 配置負載調度器

(1)開啟路由轉發

vi /etc/sysctl.conf  # 編輯系統參數配置文件
# 添加:
net.ipv4.ip_forward=1  # 啟用IP轉發功能
sysctl -p  # 立即生效配置

(2)配置 VIP 地址

ifconfig ens36 inet 192.168.74.129 netmask 255.255.255.0  # 為ens36網卡配置VIP地址
# 若網卡配置文件不存在,創建并編輯:
vi /etc/sysconfig/network-scripts/ifcfg-ens36
# 內容示例:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.74.129
NETMASK=255.255.255.0

(3)配置 LVS 負載策略

ipvsadm -C  # 清除原有LVS策略
ipvsadm -A -t 192.168.74.129:80 -s rr  # 創建虛擬服務器,使用輪詢算法
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.102:80 -m -w 1  # 添加真實服務器1,NAT模式,權重1
ipvsadm -a -t 192.168.74.129:80 -r 192.168.10.103:80 -m -w 1  # 添加真實服務器2,NAT模式,權重1
ipvsadm --save  # 保存LVS策略
systemctl enable ipvsadm  # 設置ipvsadm服務開機自啟動

4.3 配置真實服務器節點

(1)設置網關指向調度器

route del default gw 192.168.10.254  # 刪除原有默認網關
route add default gw 192.168.10.101  # 設置LVS調度器為新網關

(2)安裝 Web 服務并配置

yum -y install httpd  # 安裝Apache服務
mount 192.168.10.104:/opt/wwwroot /var/www/html  # 掛載NFS共享目錄
vi /var/www/html/index.html  # 創建測試網頁(不同節點可設置不同內容用于測試)
# 示例內容:
<h1>LVS負載均衡群集--節點1測試網頁</h1>
systemctl start httpd  # 啟動Apache服務
systemctl enable httpd  # 設置開機自啟動

4.4 測試 LVS 群集效果

(1)查看 LVS 節點狀態

ipvsadm -ln  # 查看LVS群集配置和節點狀態
# 輸出示例:
TCP 192.168.74.129:80 rr
->192.168.10.102:80 Masq 1 0 0
->192.168.10.103:80 Masq 1 0 0

(2)查看連接記錄

ipvsadm -lnc  # 查看客戶端連接詳細信息

(3)瀏覽器訪問測試

通過瀏覽器多次訪問??http://192.168.74.129??,觀察網頁內容是否在不同節點間切換,驗證負載均衡效果。

五、總結

LVS-NAT 模式作為最基礎的負載均衡方案,通過地址轉換實現請求分發,具有配置簡單、安全性高的特點,適合中小規模應用場景。在實際生產環境中,可根據需求進一步擴展:

  1. 性能優化:切換至 DR 模式或 TUN 模式,提升吞吐量
  2. 高可用增強:結合 Keepalived 實現調度器熱備
  3. 復雜場景:與 Docker、Kubernetes 等容器技術結合,構建彈性集群
  4. 監控體系:集成 Prometheus、Grafana 等工具,實時監控集群狀態

LVS 作為 Linux 內核級的負載均衡方案,憑借其高效性和穩定性,在金融、電商、云計算等領域廣泛應用。掌握 LVS 核心原理與配置,是構建高可用、可擴展服務架構的重要基礎。

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

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

相關文章

LLaMaFactory - 支持的模型和模板 常用命令

一、 環境準備 激活LLaMaFactory環境&#xff0c;進入LLaMaFactory目錄 cd LLaMA-Factoryconda activate llamafactory 下載模型 #模型下載 from modelscope import snapshot_download model_dir snapshot_download(Qwen/Qwen2.5-0.5B-Instruct) 二、啟動一個 Qwen3-0.6B…

EDW2025|數據治理的神話破除——從誤區到現實

在當今數據驅動的世界中&#xff0c;數據治理已成為企業成功的關鍵因素。然而&#xff0c;許多組織在實施數據治理時&#xff0c;常常被一些常見的誤區所困擾。本文將逐一破除這些誤區&#xff0c;揭示數據治理的真實面貌。 誤區一&#xff1a;你需要一個大的預算&#xff01;…

AIGC與影視制作:技術革命、產業重構與未來圖景

文章目錄 一、AIGC技術全景&#xff1a;從算法突破到產業賦能1. **技術底座&#xff1a;多模態大模型的進化路徑**2. **核心算法&#xff1a;從生成對抗網絡到擴散模型的迭代** 二、AIGC在影視制作全流程中的深度應用1. **劇本創作&#xff1a;從“靈感枯竭”到“創意井噴”**2…

ReactJS 中的 JSX工作原理

文章目錄 前言? 1. JSX 是什么&#xff1f;&#x1f527; 2. 編譯后的樣子&#xff08;核心機制&#xff09;&#x1f9f1; 3. React.createElement 做了什么&#xff1f;&#x1f9e0; 4. JSX 與組件的關系&#x1f504; 5. JSX 到真實 DOM 的過程&#x1f4d8; 6. JSX 與 Fr…

Spring Advisor增強規則實現原理介紹

Spring Advisor增強規則實現原理介紹 一、什么是 Advisor&#xff1f;1. Advisor 的定義與本質接口定義&#xff1a; 2. Advisor 的核心作用統一封裝切點與通知構建攔截器鏈的基礎實現增強邏輯的靈活組合 二. Sprin當中的實現邏輯1 Advisor 接口定義2 PointcutAdvisor 接口定義…

小程序32-簡易雙向數據綁定

在WXML中&#xff0c;普通屬性的綁定是單向的&#xff0c;例如:<input value"{{value}}" /> 如果希望用戶輸入數據的同時改變data中的數據&#xff0c;可以借助簡易雙向綁定機制。在對應屬性之前添加model:前綴即可: 例如<input model:value"{{value}…

Nginx網站服務:從入門到LNMP架構實戰

&#x1f3e1;作者主頁&#xff1a;點擊&#xff01; Nginx-從零開始的服務器之旅專欄&#xff1a;點擊&#xff01; &#x1f427;Linux高級管理防護和群集專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2025年5月30日14點22分 前言 說起Web服務器&#xff0c…

【maker-pdf 文檔文字識別(包含ocr),安裝使用完整教程】

安裝環境 conda create -n maker-pdf python3.12 conda activate marker-pdf pip install modelscope pip install marker-pdf -U下載模型 from modelscope import snapshot_downloadmodel_root "models" snapshot_download("Lixiang/marker-pdf", loca…

C# 類和繼承(所有類都派生自object類)

所有類都派生自object類 除了特殊的類object&#xff0c;所有的類都是派生類&#xff0c;即使它們沒有基類規格說明。類object是唯 一的非派生類&#xff0c;因為它是繼承層次結構的基礎。 沒有基類規格說明的類隱式地直接派生自類object。不加基類規格說明只是指定object為 基…

尚硅谷redis7 90-92 redis集群分片之集群擴容

90 redis集群分片之集群擴容 三主三從不夠用了&#xff0c;進行擴容變為4主4從 問題&#xff1a;1.新建兩個redis實例&#xff0c;怎么加入原有集群&#xff1f;2.原有的槽位分3段&#xff0c;又加進來一個槽位怎么算&#xff1f; 新建6387、6388兩個服務實例配置文件新建后啟…

尚硅谷-尚庭公寓部署文檔

文章目錄 整合版部署文檔部署架構圖1. 項目目錄結構增加注釋的 Dockerfile 配置(1) 后端服務1 Dockerfile (backend/service1/Dockerfile)(2) 后端服務2 Dockerfile (backend/service2/Dockerfile) Dockerfile 配置說明重要注意事項3. Nginx 配置(1) 主配置文件 (nginx/nginx.c…

Android Studio 介紹

如何關閉或徹底刪除一個工程 基于Android Studio的android入門——如何關閉或徹底刪除一個工程 搜索內容 Android Studio高效指南&#xff1a;快速查找技巧大揭秘 build命令&#xff1a;gradle app:assembleDebug 命令解析 1. 命令結構與作用 核心功能&#xff1a;該命令…

JAVA與C語言之間的差異(一)

一、代碼習慣以及主函數 JAVA中{在使用的時候不要換行 public static void main(String[] args) {int[] array {1, 2, 3};for(int i 0; i < array.length; i){System.out.println(array[i] " ");}} 其次&#xff0c;以main函數為主函數&#xff1a; public …

華為OD機試真題——開放日活動/取出盡量少的球(2025A卷:200分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 A卷 200分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式! 本文收錄于專欄:《2025華為OD真題目錄+全流程解析/備考攻略/經驗分享》 華為OD機試真題《開放…

我的3種AI寫作節奏搭配模型,適合不同類型寫作者

—不用內耗地高效寫完一篇內容&#xff0c;原來可以這樣搭配AI ?? 開場&#xff1a;為什么要“搭配節奏”寫作&#xff1f; 很多人以為用AI寫作&#xff0c;就是丟一句提示詞&#xff0c;然后“等它寫完”。 但你有沒有遇到這些情況&#xff1a; AI寫得很快&#xff0c;學境…

【知識點】第1章:程序設計基本方法

文章目錄 知識點整理計算機的概念程序設計語言Python 語言概述Python 語言開發環境配置程序的基本編寫方法 練習題簡答題判斷題 知識點整理 計算機的概念 計算機的定義&#xff1a;計算機是根據指令操作數據的設備。 計算機的兩個基本特性&#xff1a; 功能性&#xff1a;計…

const ‘不可變’到底是值不變還是地址不變

const的基礎規則 聲明時必須初始化? const a; // ? 報錯&#xff1a;Missing initializer in const declaration const b 10; // ? 正確塊級作用域?&#xff08;const 的作用域僅限于聲明它的代碼塊&#xff09; if (true) {const x 100; } console.log(x); // ? 報錯…

Netty 實戰篇:為自研 RPC 框架加入異步調用與 Future 支持

我們在上篇實現了一個輕量級 RPC 框架&#xff0c;現在要進一步優化 —— 加入異步響應支持&#xff0c;讓 RPC 通信變得真正高效、非阻塞、支持并發。 一、為什么需要異步調用&#xff1f; 上篇的 RPC 框架是“同步阻塞”的&#xff1a; 每次發送請求后&#xff0c;必須等待服…

for(auto a:b)和for(auto a:b)的區別

#include<iostream> using namespace std; int main() {string s( "hello world" );for (auto c:s)c t ;cout<<s<<endl; //結果為hello worldfor (auto &c:s)c t ;cout<<s<<endl; //結果為ttttttttttt }for(auto a:b)中b為一…

超級對話2:大跨界且大綜合的學問融智學應用場景述評(不同第三方的回應)之二

摘要&#xff1a;《人機協同文明升維行動框架》提出以HIAICI/W公式推動認知革命&#xff0c;構建三大落地場景&#xff1a;1&#xff09;低成本認知增強神經接口實現300%學習效率提升&#xff1b;2&#xff09;全球學科活動化閃電戰快速轉化知識體系&#xff1b;3&#xff09;人…