LVS的使用

来源:https://www.cnblogs.com/huhuhu-1/archive/2018/10/29/9870523.html
-Advertisement-
Play Games

lvs: Linux Virtual Server l4:四層交換;四層路由; 根據請求報文的目標IP和PORT將其轉發至後端主機集群中的某一臺主機(根據挑選演算法); netfilter: PREROUTING --> INPUT PREROUTING --> FORWARD --> POSTROU ...


lvs:
Linux Virtual Server

l4:四層交換;四層路由;

根據請求報文的目標IP和PORT將其轉發至後端主機集群中的某一臺主機(根據挑選演算法);

netfilter:
PREROUTING --> INPUT
PREROUTING --> FORWARD --> POSTROUTING
OUTPUT --> POSTROUTING


ipvsadmin/ipvs

ipvsadmin:用戶空間的命令行工具,用於管理集群服務;
ipvs:工作內核中netfileter INPUT鉤子上;

支持 TCP, UDP, AH, EST, AH_EST, SCTP 等諸多協議;


lvs arch
調度器:director,dispatcher,balancer
RS:Real Server

Client IP:CIP
Director Virtual IP:VIP
Director IP:DIP
Real Server:RIP

lvs type:
lvs-nat MASQUERADE
lvs-dr(direct routing) GATEWAY
lvs-tun(ip tunneling) IPIP
lvs-fullnat

lvs-nat: 隱藏內網主機
多目標的DNAT,通過修改請求報文的目標IP地址(埠)至挑選出的某RS的RIP地址實現轉發;
(1)RS和DIP應該使用私有地址,且RS的網關要指向DIP;
(2)請求和響應報文都要經由Director轉發; 極高負載場景中,Director可能會成為系統瓶頸;
(3)支持埠映射;
(4)RS可使用任意操作系統;
(5)RS的RIP和Director的DIP必須在同一IP網路;

lvs-dr:direct routing
通過修改請求報文的目標MAC地址進行轉發;
Director:VIP,DIP
RS:VIP,RIP
(1)保證前端路由器將目標IP為VIP的請求報文發送給Director;
解決方案:
靜態綁定
arptables
修改RS主機內參數
(2)RS的RIP可以使用私有地址;但也可以使用公網地址;
(3)RS和Director必須在同一物理網路中;
(4)請求報文經由Director調度,但響應報文一定不能經由Director;
(5)不支持埠映射;
(6)RS可以是大多數OS;
(7)RS的網關不能指向DIP;

lvs-tun:
不修改請求報文的IP首部,而是通過在原有的IP首部之外(cip <--> vip),再封裝一個IP首部;(dip <--> rip);

(1)RIP,DIP,VIP 全需要是公網地址;
(2)RS的網關不能指向DIP;
(3)請求報文必須經由Director調度,響應報文不能經由Director;
(4)不支持埠映射;
(5)RS的OS必須支持隧道功能;

lvs-fullnat:
Director通過同時修改請求報文的目標地址和源地址進行轉發;

(1)VIP是公網地址;RIP和DIP儘量使私網地址,二者無需在同一網路中;
(2)RS接收到的請求報文的源地址為DIP,因此要響應給DIP;
(3)請求把穩的響應報文都必須經由Director;
(4)RS可以使用任意OS;
(5)支持埠映射;

http: stateless
session保持:
session綁定:
source ip hash
cookie hash
session集群:
在所以伺服器中維護所有的session
session伺服器


lvs scheduler:
靜態方法:僅根據演算法本身進行調度;
RR: round robin,輪調
WRR: weighted rr,加權輪調
SH: source hash,實現 session 保持; 來自同一個IP的請求將始終被調度至同一RS;
DH: destination hash,將對同一個目標的請求始終發往同一個RS;

動態方法:根據演算法以及各RS的當前負載狀態進行調整;
Overhead
LC: Least Connection
Overhead = Active*256+Inactive
WLC: Weighted LC
Overhead = (Active*256+Inactive)/weight
SED: Shortest Expection Delay
Overhead=(Active+1)*256/we ight
NQ: Never Queue
SED 的改進,將請求優先調度至沒有被調度過的Server,之後再用 SED 演算法調度
LBLC: Locality-Based LC,動態的DH 演算法;
正向代理情形下的cache server的調度;
LBLCR: LBLC with Repication,帶複製功能的LBLC演算法;

ipvs的集群服務:
(1)一個ipvs主機可以同時定義多個cluster service;
tcp,udp
(2)一個cluster server 上至少應該有一個 real server;
定義時:指明lvs-type,以及lvs scheduler;

ipvsadm的用法:
管理集群服務
ipvsadm -A|E -t|u|f service-address [-s scheduler]

service-address:
tcp: -t ip:port
udp: -u ip:port
fwm: -f mark

-s scheduler:
預設為 WLC

ipvsadm -D -t|u|f service-address
ipvsadm -L|l [options]
ipvsam -C

管理集群服務中的RS
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]

server-address:
ip[:port]

lvs-type:
-g: gateway,dr
-i: ipip
-m: masquerade,nat

ipvsadm -d -t|u|f service-address -r server-address

查看和清理:
ipvsadm -L|l [options]
-n: number, 基於數字格式顯示地址和埠;
-c: connection, 顯示ipvs連接;
--stats: 進出站位元組統計
--rate: 進出站位元組數速率
--exact:顯示精確值

ipvsadm -C

保存和重載:
ipvsadm -R
ipvsadm -S [-n]

清空計數器:
ipvsadm -Z [-t|u|f service-address]


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 入門總結 Awk簡介 awk不僅僅時linux系統中的一個命令,而且是一種編程語言,可以用來處理數據和生成報告。處理的數據可以是一個或多個文件,可以是來自標準輸入,也可以通過管道獲取標準輸入,awk可以在命令行上直接編輯命令進行操作,也可以編寫成awk程式來進行更為複雜的運用。 ※查看awk的版本 ...
  • rmdir是常用的命令,該命令的功能是刪除空目錄,一個目錄被刪除之前必須是空的。(註意,rm r dir命令可代替rmdir,但是有很大危險性。)刪除某目錄時也必須具有對父目錄的寫許可權。 一.命令格式 rmdir [參數] 目錄 二.命令功能: 該命令從一個目錄中刪除一個或多個子目錄項,刪除某目錄時 ...
  • 前言 Ansible是一款極其簡單的IT自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量運行命令等功能。Ansible是基於模塊工作的,本身沒有批量部署的能力,真正具有批量部署的 ...
  • 主調度器 在內核中的許多地方, 如果要將CPU分配給與當前活動進程不同的另一個進程, 都會直接調用主調度器函數schedule, 從系統調用返回後, 內核也會檢查當前進程是否設置了重調度標誌 例如, 前述的周期性調度器的scheduler_tick就會設置該標誌, 如果是這樣則內核會調用schedu ...
  • 常用指令 ls 顯示文件或目錄 -l 列出文件詳細信息l(list) -a 列出當前目錄下所有文件及目錄,包括隱藏的a(all) mkdir 創建目錄 -p 創建目錄,若無父目錄,則創建p(parent) cd 切換目錄 touch 創建空文件 echo 創建帶有內容的文件。 cat 查看文件內容 ...
  • 1. 第一章 a. 符號約定 a1. 位元組順序 a2. 保留的比特位和軟體相容性 a3. 指令操作數 a4. 十六進位和二進位數 a5. 分段地址 a. 符號約定 a1. 位元組順序 intel的32和64架構均使用小端地址模式。小端:高位元組在高地址,大端:高位元組在低地址。例如: 31 24 23 1 ...
  • 搭建好Git伺服器後,在伺服器創建了一個空項目,我在本地使用git clone 拉取項目時,報了fatal: protocol error: bad line length character: This的錯誤。這個問題是出在Git伺服器端,不是Git客戶端的問題,所以Git客戶端不需要修改任何東西... ...
  • 假設遠程伺服器IP地址為 192.168.1.100 1.從伺服器複製文件到本地: scp [email protected]:/data/test.txt /home/myfile/ [email protected] root是目標伺服器(有你需要拷貝文件的伺服器)的用戶名,192.168. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...