LVS簡介及LVS-DR搭建

目錄

一. LVS簡介:

1.簡介

2. LVS工作模式:

3. LVS調度算法:

4. LVS-DR集群介紹:

二.LVS-DR搭建

?1.RS配置

1)兩臺RS,需要下載好httpd軟件并準備好配置文件

?2)添加虛擬IP(vip)、添加訪問本地vip的靜態路由并抑制ARP

?2.DS

1)安裝ipvsadm

2)?添加虛擬IP(vip):

3)添加服務


一. LVS簡介:

1.簡介

? ???LVS(Linux Virtual Server)是一個開源的負載均衡軟件,可以在Linux操作系統上實現高可用性和可擴展性。它使用IP負載均衡技術來分發網絡流量到多個后端服務器,從而提高系統的性能和可靠性。LVS通過在負載均衡器與后端服務器之間建立虛擬IP地址和端口的映射關系,來實現負載均衡。

2. LVS工作模式:

LVS相關術語
名稱縮寫說明
虛擬IP地址(Virtual IP Address)? ?VIP?Director用于向客戶端計算機提供服務的IP地址
真實IP地址(Real Server IP Address?RIP?在集群下面節點上使用的IP地址
Director的IP地址(Director IP Address)?DIPDirector用于連接內外網網絡的IP地址
客戶端主機IP地址(Client IP Address)CIP客戶端用戶計算機請求集群服務器的IP地址,該地址用作 發送給集群的請求的源IP地址

LVS有三種主要的工作模式:

  • LVS-DR模式:在LVS-DR模式下,LVS負載均衡器使用一個虛擬IP地址(VIP)作為前端地址,通過集群技術將VIP綁定到負載均衡器上。當客戶端發送請求時,請求會到達負載均衡器。負載均衡器通過修改目標MAC地址將請求直接轉發給后端服務器,同時保持源IP地址不變。服務器處理請求后,將響應直接返回給客戶端,繞過負載均衡器。
  • LVS-NAT模式:LVS-NAT(Network Address Translation)模式中,負載均衡器將客戶端請求的目標IP地址和端口修改為后端服務器的IP地址和端口,并將修改后的請求轉發給相應的服務器。后端服務器處理請求后,將響應返回給負載均衡器,再由負載均衡器將響應返回給客戶端。
  • LVS-TUN模式:LVS-TUN(IP Tunneling)模式中,負載均衡器將客戶端請求封裝在一個新的IP包中,并通過IP隧道(IP Tunnel)轉發到后端服務器。服務器收到請求后,處理并將響應返回給負載均衡器,再由負載均衡器將響應返回給客戶端。

圖解如下:

????????特別提示:(VS/DR)模式是互聯網使用的最多多的一種模式,在LVS-DR配置中,Director將所有入站請求轉發給集群內部節點,但集群內部的節點直接將他們的回復發送給客戶端計算機(沒有通過Director回來)。

3. LVS調度算法:

  • LVS負載均衡器使用調度算法來決定將請求轉發到哪個后端服務器。
  • 調度方法決定了如何在這些集群節點之間分布工作負荷。

????????當Director收到來自客戶端計算機訪問她的VIP上的集群服務的入站請求時,Director必須決定那個集群節點應該獲得請求。Director可用于做出該決定的調度方法分成兩個基本類別:

固定調度算法:rr,wrr,dh,sh

動態調度算法:wlc,lblc,lblcr,SED,NQ(后兩種官方站點沒提到)

最常用的四種調度算法:

  • 輪詢(Round Robin):“輪詢”調度也叫1:1調度,調度器通過“輪詢”調度算法將外部用戶請求按順序1:1的分配到集群中的每個 Real Server上,這種算法平等地對待每一臺Real Server,而不管服務器上實際的負載狀況和連接狀態。即:按照服務器列表的順序依次分配請求。
  • 加權輪詢(Weighted Round Robin):“加權輪詢”調度算法是根據Real Server的不同處理能力來調度訪問請求。可以對每臺Real Server設置 不同的調度權值,對于性能相對較好的Real Server可以設置較高的權值,而對于處理能力較弱的Real Server,可以設置較低的權值,這樣保證了處理能力強的服務器處理更多的訪問流量。充分合理的利用 了服務器資源。同時,調度器還可以自動查詢Real Server的負載情況,并動態地調整其權值。即:根據服務器的權重給予不同的請求分配比例。
  • 最少連接數(Least Connections):“最少連接”調度算法動態地將網絡請求調度到已建立的鏈接數 最少的服務器上。如果集群系統的真實服務器具有相近的系統性能,采用“最小連接”調度算法可以較好 地均衡負載。根據客戶端的IP地址進行哈希計算,并將請求發送給與哈希結果匹配的服務器。即:將請求發送給當前連接數最少的服務器。
  • 加權最少鏈接調度(Weighted Least Connections) “加權最少鏈接調度”是“最少連接調度”的超集, 每個服務節點可以用相應的權值表示其處理能力,而系統管理員可以動態的設置相應的權值,缺省權值 為1,加權最小連接調度在分配新連接請求時盡可能使服務節點的已建立連接數和其權值成正比。即:通過權值和已建立連接數來確定負載均衡器分配連接請求的優先級。

4. LVS-DR集群介紹:

LVS-DR(Direct Routing)模式是LVS中最常用的一種模式。在LVS-DR模式下,負載均衡器通過ARP協議將客戶端請求的目標MAC地址修改為后端服務器的MAC地址,并直接將請求轉發給目標服務器。后端服務器處理請求后,將響應發送回客戶端,繞過負載均衡器。

工作原理:

  1. 外部客戶端發送請求到LVS集群的虛擬IP地址(VIP)。

  2. 請求到達LVS負載均衡器,并根據選定的調度算法選擇一個后端服務器。

  3. 負載均衡器通過ARP協議將請求的目標MAC地址修改為目標服務器的MAC地址。

  4. 負載均衡器將修改后的請求直接轉發給目標服務器。

  5. 目標服務器處理請求并生成響應。

  6. 服務器將響應直接發送給客戶端,繞過負載均衡器。

二.LVS-DR搭建

?1.RS配置

1)兩臺RS,需要下載好httpd軟件并準備好配置文件

#RS1
#下載httpd
yum install -y httpd
#定義配置文件
echo this is RS2 > /var/www/html/index.html
#查看配置文件
cat /var/www/html/index.html 
#結果顯示
this is RS2
#重啟服務
systemctl start httpd
#查看是否成功
curl 192.168.136.135
#結果顯示
this is RS1#RS2
#下載httpd
yum install -y httpd
#定義配置文件
echo this is RS2 > /var/www/html/index.html
#查看配置文件
cat /var/www/html/index.html 
#結果顯示
this is RS2
#重啟服務
systemctl start httpd
#查看是否成功
curl 192.168.136.136
#結果顯示
this is RS2

?2)添加虛擬IP(vip)、添加訪問本地vip的靜態路由并抑制ARP

#RS1
#在本地環回接口創建子接口并添加虛擬IP。ifconfig開機失效
ifconfig lo:11 192.168.136.11 netmask 255.255.255.255 up
#添加靜態路由。route同樣開機失效
route add -host 192.168.136.11 dev lo
#抑制ARP
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce#RS2
#在本地環回接口創建子接口并添加虛擬IP。ifconfig開機失效
ifconfig lo:22 192.168.136.22 netmask 255.255.255.255 up
#添加靜態路由。route同樣開機失效
route add -host 192.168.136.22 dev lo
#抑制ARP
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

?2.DS

1)安裝ipvsadm

#下載ipvsadm
yum install ipvsadm -y
#開啟ipvsadm服務
systemctl start ipvsadm

2)?添加虛擬IP(vip):

ifconfig ens33:11 192.168.136.11 netmask 255.255.255.0 up

3)添加服務

ipvsadm -C ?
##清空ipvsadm配置ipvsadm -At 192.168.136.11:80 -s rr  
##配置LVS虛擬IP(VIP)ipvsadm -at 192.168.136.11:80 -r 192.168.136.135:80 -g 
##配置后端真實服務器ipvsadm -at 192.168.136.11:80 -r 192.168.136.136:80 -g
##配置后端真實服務器ipvsadm -Ln  
##查看ipvsadm配置

?刪除命令如下:

ipvsadm -D -t 192.168.136.11:80 -s wrr ?

##刪除LVS虛擬IP配置
?
ipvsadm -d -t 192.168.136.11:80 -r 192.168.136.135:80
ipvsadm -d -t 192.168.136.11:80 -r 192.168.136.136:80
##刪除后端真實服務器配置

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

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

相關文章

Python爬蟲——requests_cookie登陸古詩文網

尋找登陸需要的參數 __VIEWSTATE:aiMG0UXAfCzak10C7436ZC/RXoZbM2lDlX1iU/4wjjdUNsW8QUs6W2/3M6XIKagQZrC7ooD8Upj8uCnpQMXjDAp6fS/NM2nGhnKO0KOSXfT3jGHhJAOBouMI3QnlpJCQKPXfVDJPYwh169MGLFC6trY __VIEWSTATEGENERATOR: C93BE1AE from: http://so.gushiwen.cn/user/collect.…

linux 命令--查看網絡端口命令

使用 netstat 檢查端口 netstat 是一個命令行工具,可以提供有關網絡連接的信息。 netstat - atulnp會顯示所有端口和所有對應的程序,用grep管道可以過濾出想要的字段 -a :all,表示列出所有的連接,服務監聽&#xff…

Android JNI開發從0到1,java調C,C調Java,保姆級教程詳解

前些天發現了一個蠻有意思的人工智能學習網站,8個字形容一下"通俗易懂,風趣幽默",感覺非常有意思,忍不住分享一下給大家。 👉點擊跳轉到教程 第一步首先配置Android studio的NDK開發環境,首先在Android studio中下載NDK…

如何防止CSRF攻擊

背景 隨著互聯網的高速發展,信息安全問題已經成為企業最為關注的焦點之一,而前端又是引發企業安全問題的高危據點。在移動互聯網時代,前端人員除了傳統的 XSS、CSRF 等安全問題之外,又時常遭遇網絡劫持、非法調用 Hybrid API 等新…

Java超級瑪麗小游戲制作過程講解 第六天 創建背景類

package com.sxt;import java.awt.image.BufferedImage;public class BackGround {//當前場景要顯示的圖像 private BufferedImage bgImagenull;//記錄當前是第幾個場景 private int sort;//判斷是否是最后一個場景 private boolean flag;public BackGround(){}public BackGrou…

【CGroupAndroid實踐篇】四、Native Service進程啟動及控制組遷移

寫在前面 承接上一篇,在cgroup子系統初始化完成后,init會繼續執行開機流程,且通過代哦用ExecuteCommand()函數。 /system/core/init/init.cppint SecondStageMain(int argc, char** argv) {......ActionManager& am = ActionManager::GetInstance();am.ExecuteOneCo…

ASIC芯片設計全流程項目實戰課重磅上線 ,支持 65nm制程流片 !

全流程項目實戰課學什么? 此次推出【 ASIC芯片設計全流程項目實戰課】,基于IPA圖像處理加速器,以企業級真實ASIC項目為案例,學員可參與全流程項目實踐,以及65nm真實流片! 眾所周知,放眼整個IC碩…

【Linux】【驅動】驅動框架以及掛載驅動

【Linux】【驅動】驅動框架以及掛載驅動 緒論1.配置開發環境2. 編寫驅動文件3. 編譯Makefile文件4.編譯5. 掛載驅動注意:有些開發板打開了或者禁止了printk信息,導致你看到的實驗現象可能不一樣,此時已經將文件移動到了開發板中,開發板查看文…

Flink CEP(Complex Event Processing)庫

復雜事件處理(Complex Event Processing,CEP)是一種用于在流式數據中識別和處理復雜事件模式的技術。Apache Flink 作為一個流式處理框架,也可以用于實現復雜事件處理。下面是 Flink 中實現復雜事件處理的一般原理: 事…

WebRTC音視頻通話-新增或修改SDP中的碼率Bitrate限制

WebRTC音視頻通話-新增或修改SDP中的碼率Bitrate限制參數 之前搭建ossrs服務,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 之前實現iOS端調用ossrs音視頻通話,可以查看:https://blog.csdn.net/gloryFlo…

連接不上手機,adb devices為空:

首先說明一下,我是已經安裝了android studio,也配置了環境變量,但是還是連接不上手機 解決方案: 1.打開開發者模式 https://product.pconline.com.cn/itbk/sjtx/sjwt/1424/14246015.html 2.開啟usb調試 https://baiyunju.cc/10770 最后成功…

Nginx:Web基礎與HTTP協議

目錄 1、dns域名 1.1 dns解析方式: 1.2 域名解析服務器: 2、html 2.1 網頁、網站和主頁、域名 2.2 URL和URI 3、Web(全球廣域網,也稱萬維網) 3.1 靜態頁面 3.1.1 靜態頁面特點 3.2 動態頁面 3.2.1 動態頁面…

什么是CSS的box-sizing屬性?它有哪些取值,各有什么不同?

聚沙成塔每天進步一點點 ? 專欄簡介? CSS的box-sizing屬性? 取值? 不同之處? 寫在最后 ? 專欄簡介 前端入門之旅:探索Web開發的奇妙世界 記得點擊上方或者右側鏈接訂閱本專欄哦 幾何帶你啟航前端之旅 歡迎來到前端入門之旅!這個專欄是為那些對Web…

關于Vue構建低代碼平臺的思考

一、前言 在項目實戰開發中,尤其是大平臺系統的搭建,針對不同業務場景,需要為用戶多次編寫用于錄入、修改、展示操作的相應表單頁面。一旦表單需求過多,對于開發人員來說,算是一種重復開發,甚至是繁雜的工作…

【C++起飛之路】初級—— auto、范圍for循環、宏函數和內聯函數

auto、范圍for、內聯函數、宏函數和nullptr 一、auto — 類型推導的魔法(C 11)1、auto 是什么?2、工作原理3、優勢4、限制和注意事項 二、范圍for (C11)1、基本語法2、優勢3、工作原理4、注意事項5、C11: 范圍 for 循環的擴展: 三…

軟件測試基礎篇——LAMP環境搭建

LAMP 1、Linux系統的其他命令 find命令:在目錄下查找文件 ? 格式一:find 路徑 參數 文件名 ? 路徑:如果沒有指定路徑,默認是在當前目錄下 ? 參數:-name 根據文件名來查找,區分大小寫; -…

useState() 的使用及場景

useState是 React提供的一個Hook函數,用于在函數組件中添加和管理狀態。它允許你在函數組件中定義一個可變的狀態,并在組件的生命周期中對狀態進行更新和訪問。 使用useState可以避免使用類組件時需要定義和管理繁瑣的constructor,state和se…

HOT83-打家劫舍

leetcode原題鏈接:打家劫舍 題目描述 你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系…

適配器模式(C++)

定義 將一個類的接口轉換成客戶希望的另一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 應用場景 在軟件系統中,由于應用環境的變化,常常需要將“一些現存的對象 ”放在新的環境中應用,但是新環境要求…

【Golang】一文學完 Golang 基本語法

Golang 下載 安裝包鏈接:https://share.weiyun.com/InsZoHHu IDE 下載:https://www.jetbrains.com/go/ 第一個 golang 程序 package mainimport "fmt"func main() {fmt.Println("hello golang") }每個可執行代碼都必須包含 Pack…