LVS負載均衡集群-NAT模式部署

集群

集群:將多臺主機作為一個整體,然后對外提供相同的服務

集群使用場景:高并發的場景

集群的分類

? ? 1.負載均衡器集群
?? ??? ?減少響應延遲,提高并發處理的能力
?? ?2,高可用集群
?? ??? ?增強系統的穩定性可靠性,減少服務器的中斷時間,減少損失
?? ?3,高性能集群
?? ??? ?高性能的運算能力,做分布式提高CPU的運算速度,做并發處理

負載均衡集群架構

? ?第一層:負載調度器
?? ??? ?通過調度算法以及RIP發送
?? ?第二層:服務池
?? ??? ?所有服務器使用的資源
?? ?第二層:共享存儲
?? ??? ?提供網站,存儲資源

負載均衡器的群集工作模式

NAT模式(地址轉換)
?? ??? ?調度器作為網關,是訪問請求的入口,同樣是響應請求的出口,可以提高安全性但是在高并發場景下負載壓力很高


?TUN模式(IP隧道)
?? ??? ?訪問請求的入口,響應不經過調度器,但是需要大量的公網IP。還需要建立專用的IP隧道,成本太高,數據的轉發受IP隧道的額外影響

?DR模式(直接路由)
?? ??? ?僅是訪問請求的入口,響應數據不經過調度器,但是節點服務器和調度器在一個物理網絡中,數據進行轉發不受額外的影響

LVS虛擬服務器
?? ?確認是否支持LVS------modprobe ?ip_vs ?

LVS負載均衡集群架構

LVS的基本概念

LVS(Linux Virtual Server)集群架構是一種基于Linux操作系統的負載均衡解決方案。它通過將負載均衡功能實現在操作系統內核層面,將客戶端請求分發到后端服務器集群,以提高系統的性能、可靠性和可擴展性。

LVS集群架構具有高性能、高可靠性和可擴展性的特點,可以通過增加后端服務器來擴展系統的處理能力。此外,LVS還支持會話保持、健康檢查、故障切換等功能,以提供更好的用戶體驗和系統可用性。

LVS集群架構的組件

  1. 負載均衡器(Load Balancer):負載均衡器是LVS集群的核心組件,它接收來自客戶端的請求,并根據預定義的負載均衡算法將請求轉發給后端服務器。負載均衡器可以是一臺物理服務器或者一組虛擬服務器。

  2. 調度器(Scheduler):調度器是負載均衡器的一部分,負責根據負載均衡算法選擇合適的后端服務器來處理客戶端請求。常見的調度算法包括輪詢、加權輪詢、最小連接數等。

  3. 后端服務器(Real Server):后端服務器是實際處理客戶端請求的服務器。它們可以是一組物理服務器或者虛擬服務器,通過負載均衡器接收請求并返回響應。

  4. 網絡設備:LVS集群架構通常還涉及網絡設備,如交換機、路由器等,用于連接負載均衡器和后端服務器,以及處理網絡流量。

LVS集群架構的工作流程

  1. 客戶端發送請求到負載均衡器。

  2. 負載均衡器接收到請求后,通過調度器選擇一個后端服務器。

  3. 負載均衡器將請求轉發給選定的后端服務器。

  4. 后端服務器處理請求并生成響應。

  5. 后端服務器將響應發送回負載均衡器。

  6. 負載均衡器將響應返回給客戶端。

LVS的作用

  1. 主要用于多服務器的負載均衡

  2. 工作在網絡層,可實現高性能,高可用的服務集群技術

  3. 廉價, 可以把許多低性能服務器組合在一起形成一個超級服務器

  4. 易用,配置簡單,有多種負載均衡的方式

  5. 穩定可靠,即使在集群的服務器中某臺服務器無法正常工作也不會影響整體效果

  6. 可擴展性好

?LVS負載均衡器的調度算法

? 輪詢
?? ??? ?平等的對待每一臺服務器
??加權輪詢
?? ??? ?根據調度器設置的權重值來分發請求,權重值越高,被分發的請求越多,主要是為了保證性能比較強的服務器接受的請求最多
?最少連接
?? ??? ?根據服務器的已建立的連接數確定分發,收到的請求分發給連接數少的節點
?加權最少連接
?? ??? ?在服務器節點性能有差異時,性能較高的節點承擔更多比例的請求

LVS基于內核態的netfilter框架實現的IPVS功能,工作在內核態用戶配置vip等相關信息并且傳遞

IPVS,就需要用到IPVSadm工具

ipvsadm: IPVSadm是lvs用戶態的配套的工具,可以實現VIP和RS 增刪改查

ipvsadm工具

工具選項
-A:添加虛擬服務器

-D:刪除整個虛擬fuwq

-s:指定負載調度算法(輪詢,加權輪詢,最少連接,加權最少連接,wlc)

-a:表示添加真實服務器(節點服務器)

-d:刪除某一個節點

-t:指定VIP地址及TCP端口

-r:指定RIP地址及TCP端口

-m:表示使用NAT群集模式

-g:表示使用DR模式

-i:表示使用TUN模式

-w:設置權重(權重為0時表示暫停節點)

-p60:表示保持長連接60秒

-l:列表查看LVS虛擬服務器(默認為查看所有)

-n:以數字形式顯示地址,端口等信息,常與“-l”選項組合使用

LVS-NAT部署實戰

?? ?創建虛擬服務器
?? ?添加刪除服務器節點
?? ?查看集群節點情況
?? ?保存負載分配策略

LVS負載調度器:ens33:20.0.0.50?ens37:10.0.0.1(vmnet3)(添加一個新的網卡進行配置)
Web1 節點服務器1:20.0.0.60
Web2 節點服務器2:20.0.0.70
NFS服務器:20.0.0.80
客戶端(win10):10.0.0.12 (Vmnet3)

注意:① win10虛擬機(客戶端)網關設置為10.0.0.1
? ? ? ? ? ?② web服務器 網關設置為 20.0.0.50

部署共享存儲(NFS服務器:20.0.0.80)

#關閉安全機制
systemctl stop firewalld.service?
systemctl disable firewalld.service?
setenforce 0#安裝服務
yum install -y nfs-utils rpcbindsystemctl start nfs.service?
systemctl start rpcbind.service
systemctl enable nfs.service?
systemctl enable rpcbind.service#創建共享目錄
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)      
# 這一行指定了 /usr/share 目錄的共享設置。* 表示允許任何客戶端訪問,(ro,sync) 表示只讀權限,并且同步寫入/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)  
# 指定了 /opt/benet 目錄的共享設置,只允許 20.0.0.0/24 網段的客戶端訪問,具有讀寫和同步寫入。#發布共享
exportfs -rv
showmount -e

配置節點服務器(后端服務器)

20.0.0.60 20.0.0.70
systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0#修改網卡網關為LVS服務器
需要將兩個節點服務器60和70的網關設置為調度器的地址20.0.0.50
20.0.0.60
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.60
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart network20.0.0.70
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.70
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart networkyum install -y httpd
systemctl start httpd.service 
systemctl enable httpd.serviceyum install -y nfs-utils rpcbindsystemctl start rpcbind.service
systemctl enable rpcbind.serviceshowmount -e 20.0.0.80#web1:20.0.0.60
mount.nfs 20.0.0.80:/opt/kgc /var/www/html/
#用于將遠程的NFS共享目錄掛載到本地目錄echo 'this is kgc' > /var/www/html/index.html#永久配置方法
vim /etc/fstab 
20.0.0.80:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a#web2:20.0.0.70
mount.nfs 20.0.0.80:/opt/benet /var/www/html/echo 'this is benet' > /var/www/html/index.html#永久掛載
vim /etc/fstab 
20.0.0.80:/opt/benet /var/www/html nfs defaults,_netdev 0 0mount -a

?配置負載調度器LVS

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0------(1)、配置SNAT轉發規則-------
vim /etc/sysctl.conf
net.ipv4.ip_forward=1sysctl -p
或者:echo '1' > /proc/sys/net/ipv4/ip_forwardiptables -t nat -F
iptables -F
iptables -t nat -nLiptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
#將源IP地址為20.0.0.0/24的數據包的源地址轉換為10.0.0.1 指定接口為ens37轉發-------(2)、加載LVS內核模塊-------------
modprobe ip_vs   #手動加載ip_vs模塊
cat /proc/net/ip_vs    #查看ip_vs版本信息-------(3)、安裝ipvsadm管理工具-------------
yum install -y ipvsadm#注意:啟動服務前必須保存負載分配策略,否則將會報錯
ipvsadm-save > /etc/sysconfig/ipvsadmsystemctl start ipvsadm.service------(4)、配置負載分配策略(NAT模式只要在服務器上配置,節點服務器不需要特殊配置)-------------
ipvsadm -C     #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.60:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.70:80 -m -w 1
#添加一個虛擬服務器的轉發規則
#將來自10.0.0.1:80的請求轉發到20.0.0.60:80的實際服務器上,并使用NAT模式進行轉發。同時,使用權重1來進行負載均衡ipvsadm     #啟動策略ipvsadm -ln    #查看節點狀態,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略

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

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

相關文章

封裝vue2局部組件都要注意什么

一. 關于局部組件組成的三個部分&#xff08;template, script, style&#xff09; template > 組件的模板結構 &#xff08;必選&#xff09; 每個組件對應的模板結構&#xff0c;需要定義到template節點中 <template><!-- 當前組件的dom結構&#xff0c;需…

Java SPI加載機制

SPI加載機制 SPI&#xff08;Service Provider Interface&#xff09;是一種通過外界配置來加載具體代碼內容的技術手段。SPI是JDK內置的一種服務提供發現機制&#xff0c;用于實現框架的擴展和組件替換。 在SPI中&#xff0c;框架提供一整套接口&#xff0c;使用者實現這些接…

React源碼解析18(8)------ 實現單節點的Diff算法

摘要 經過之前的幾篇文章&#xff0c;我們已經實現了一個可以進行更新渲染的假React。但是如果我們把我們的jsx修改成這樣&#xff1a; function App() {const [age, setAge] useState(20)const click function() {setAge(age 1)}return age % 2 0 ? jsx("div"…

學習紅外成像儀開發注意要點

學習紅外成像儀開發注意要點 三河凡科科技飛訊紅外成像儀開發學習注意要點 紅外成像儀是一種高級的光學設備&#xff0c;可用于探測、分析和顯示紅外輻射&#xff0c;它廣泛應用于醫學、軍事、石油、礦產資源勘探等領域。紅外成像儀的開發需要注意以下幾個方面&#xff1a; 1…

(搜索) 劍指 Offer 12. 矩陣中的路徑 ——【Leetcode每日一題】

?劍指 Offer 12. 矩陣中的路徑 難度&#xff1a;中等 給定一個 m * n 二維字符網格 board 和一個字符串單詞 word 。如果 word 存在于網格中&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 單詞必須按照字母順序&#xff0c;通過相鄰的單元格內的字母構…

使用Rust編寫的一款使用遺傳算法、神經網絡、WASM技術的模擬生物進化的程序

模擬生物進化程序 Github地址&#xff1a;FishLife 期待各位的star??? 本項目是一個模擬生物進化的程序&#xff0c;利用遺傳算法、神經網絡技術對魚的眼睛和大腦進行模擬。該項目是使用 Rust 語言編寫的&#xff0c;并編譯為 WebAssembly (Wasm) 格式&#xff0c;使其可以…

QT學習方法

1 .類的學習方法 第一步:從UI文件中,找到界面的類—QMainWindow第二步:在Qt Creator工具中,找到“幫助”按鈕,進入到幫助菜單界面,在選擇"索引",在Look for:輸入類名,找到類名,雙擊條目中的類名,在右側會顯示出來類的詳細內容第三步:在右側,可根據內容目錄…

Spring項目使用Redis限制用戶登錄失敗的次數以及暫時鎖定用戶登錄權限

文章目錄 背景環境代碼實現0. 項目結構圖&#xff08;供參考&#xff09;1. 數據庫中的表&#xff08;供參考&#xff09;2. 依賴&#xff08;pom.xml&#xff09;3. 配置文件&#xff08;application.yml&#xff09;4. 配置文件&#xff08;application-dev.yml&#xff09;5…

Camera Link 接口

Camera Link是一個標準的接口協議&#xff0c;用于高速的圖像數據傳輸&#xff0c;常被用在工業相機和圖像處理系統之間。這個標準由自動視覺協會&#xff08;Automated Imaging Association&#xff0c;簡稱AIA&#xff09;在2000年發布&#xff0c;旨在實現各種廠家之間的高性…

在ubuntu+cpolar+rabbitMQ環境下,實現mq服務端遠程訪問

文章目錄 前言1.安裝erlang 語言2.安裝rabbitMQ3. 內網穿透3.1 安裝cpolar內網穿透(支持一鍵自動安裝腳本)3.2 創建HTTP隧道 4. 公網遠程連接5.固定公網TCP地址5.1 保留一個固定的公網TCP端口地址5.2 配置固定公網TCP端口地址 前言 RabbitMQ是一個在 AMQP(高級消息隊列協議)基…

使用opencv4.7.0部署yolov5

yolov5原理和部署原理就不說了&#xff0c;想了解的可以看看這篇部署原理文章 #include <fstream> #include <sstream> #include <iostream> #include <opencv2/dnn.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp>/…

【Java轉Go】快速上手學習筆記(二)之基礎篇一

目錄 創建項目數據類型變量常量類型轉換計數器鍵盤交互流程控制代碼運算符 創建項目 上篇我們安裝好了Go環境&#xff0c;和用IDEA安裝Go插件來開發Go項目&#xff1a;【Java轉Go】快速上手學習筆記&#xff08;一&#xff09;之環境安裝篇 。 這篇我們開始正式學習Go語言。我…

MyBatis動態SQL:打造靈活可變的數據庫操作

目錄 if標簽trim標簽where標簽set標簽foreach標簽 動態SQL就是根據不同的條件或需求動態地生成查詢語句&#xff0c;比如動態搜索條件、動態表或列名、動態排序等。 if標簽 在我們填寫一些信息時&#xff0c;有些信息是必填字段&#xff0c;有的則是非必填的&#xff0c;這些…

淘寶API接口的實時數據和緩存數據區別

電商API接口實時數據是指通過API接口獲取到的與電商相關的實時數據。這些數據可以包括商品庫存、訂單狀態、銷售額、用戶活躍度等信息。 通過電商API接口&#xff0c;可以實時獲取到電商平臺上的各種數據&#xff0c;這些數據可以幫助企業或開發者做出及時的決策和分析。例如&…

vue動態修改audio地址

問題&#xff1a;點擊后替換url地址&#xff0c;實現了&#xff0c;但是播放器依舊沒有反應。 解決&#xff1a;vue中動態替換只是替換了地址&#xff0c;并沒有告訴audio標簽是否要執行&#xff0c;執行什么操作。要load后才能讓它知道&#xff0c;是在喊他&#xff0c;他需求…

秒懂算法 | 漢諾塔問題與木棒三角形

在數學與計算機科學中&#xff0c;遞歸(recursion)是指一個過程或函數在其定義或說明中又直接或間接調用自身的一種方法。它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解。遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算&#x…

Android性能優化——線程優化

一、線程調度原理 在任意時刻&#xff0c;CPU只能執行一條指令&#xff0c;每個線程獲取到CPU的使用權之后才可以執行指令也就是說在任意時刻&#xff0c;只有一個線程占用CPU 處于運行狀態 多線程并發&#xff0c;實際上是指多個線程輪流獲取CPU 的使用權然后分別執行各自的任…

系統安全測試要怎么做?

進行系統安全測試時&#xff0c;可以按照以下詳細的步驟進行&#xff1a; 1、信息收集和分析&#xff1a; 收集系統的相關信息&#xff0c;包括架構、部署環境、使用的框架和技術等。 分析系統的安全需求、威脅模型和安全策略等文檔。 2、威脅建模和風險評估&#xff1a; 使…

調用被fishhook的原函數

OC類如果通過runtime被hook了&#xff0c;可以通過逆序遍歷方法列表的方式調用原方法。 那系統庫的C函數被fish hook了該怎么辦呢&#xff1f; 原理和OC類異曲同工&#xff0c;即通過系統函數dlopen()獲取動態庫&#xff0c;以動態庫為參數通過系統函數dlsym()即可獲取目標系統…

leetcode292. Nim 游戲(博弈論 - java)

Nim 游戲 Nim 游戲題目描述博弈論 上期經典算法 Nim 游戲 難度 - 簡單 原題鏈接 - Nim游戲 題目描述 你和你的朋友&#xff0c;兩個人一起玩 Nim 游戲&#xff1a; 桌子上有一堆石頭。 你們輪流進行自己的回合&#xff0c; 你作為先手 。 每一回合&#xff0c;輪到的人拿掉 1 -…