LVS負載均衡DR(直接路由)模式

在這里插入圖片描述

在LVS(Linux Virtual Server)負載均衡中的DR(Direct Routing)模式下,數據包的流向如下:

  1. 客戶端發送請求到負載均衡器(LVS)的虛擬IP(VIP)。
  2. 負載均衡器(LVS)接收到請求后,根據負載均衡算法選擇一個后端服務器(Real Server)。
  3. 負載均衡器(LVS)將請求的目標MAC地址修改為所選后端服務器(Real Server)的MAC地址,并將數據包轉發給后端服務器。
  4. 后端服務器接收到請求后,處理請求并生成響應。
  5. 后端服務器將響應發送回負載均衡器(LVS)。
  6. 負載均衡器(LVS)接收到響應后,將響應的源MAC地址修改為負載均衡器(LVS)的MAC地址,并將響應轉發給客戶端。
  7. 客戶端接收到響應并處理。

在DR模式下,負載均衡器(LVS)只負責將請求轉發給后端服務器,并將響應轉發回客戶端,而不會修改數據包的IP地址。這意味著后端服務器和客戶端直接通信,負載均衡器(LVS)只在請求和響應的轉發過程中起到中間轉發的作用,減少了負載均衡器的處理負擔,提高了性能和吞吐量。

需要注意的是,在DR模式下,后端服務器必須配置正確的網絡路由,以確保響應數據包能夠正確返回給客戶端。此外,負載均衡器(LVS)和后端服務器之間需要通過網絡隔離,以避免數據包循環和沖突。

DR 模式的特點:
(1)Director Server 和 Real Server 必須在同一個物理網絡中。
(2)Real Server 可以使用私有地址,也可以使用公網地址。如果使用公網地址,可以通過互聯網對 RIP 進行直接訪問。
(3)Director Server作為群集的訪問入口,但不作為網關使用。
(4)所有的請求報文經由 Director Server,但回復響應報文不能經過 Director Server。
(5)Real Server 的網關不允許指向 Director Server IP,即Real Server發送的數據包不允許經過 Director Server。
(6)Real Server 上的 lo 接口配置 VIP 的 IP 地址。

DR模式中需要解決的問題:
在這里插入圖片描述
問題一:
在局域網中具有相同的IP地址,勢必會造成各服務器ARP通信的紊亂。
當ARP廣播發送到LVS-DR集群時,因為負載均衡器和節點服務器都是連接到相同的網絡上,它們都會接收到ARP廣播。
只有前端的負載均衡器進行響應,其他節點服務器不應該響應ARP廣播。
解決方式:
對節點服務器進行處理,使其不響應針對VIP的ARP請求。
使用虛擬接口lo:0承載VIP地址,設置內核參數arp_ignore=1
作用:系統只響應目的IP為本地lP的ARP請求。
在這里插入圖片描述
問題二:
Real Server返回報文(源IP是VIP)經網關路由器轉發,重新封裝報文時,需要先獲取路由器的MAC地址。
發送ARP請求時,Linux默認使用IP包的源IP地址(即VIP)作為ARP請求包中的源IP地址,而不使用發送接口的IP地址
解決方式:
使用Real Server 的物理網卡地址(即RIP)作為響應報文的IP,這樣就不會導致網關服務器的ARP緩存表的紊亂。
設置內核參數arp_announce=2 使系統不使用IP包的源地址(VIP)來作為本機進行ARP請求的源IP地址,而選擇發送接口的IP地址。
在這里插入圖片描述
配置步驟:
-----------------DR模式 LVS負載均衡群集部署-----------------------------------
配置所需主機:
DR 服務器:20.0.0.102
Web 服務器1:20.0.0.103
Web 服務器2:20.0.0.104
vip:20.0.0.12
NFS共享服務器:20.0.0.101

一.配置負載調度器(20.0.0.102)

systemctl stop firewalld.service  #關閉防火墻
setenforce 0 #將selinx 安全機制調為0
modprobe ip_vs #加載ip_vs內核模塊,啟用IPVS(IP Virtual Server)功能。
cat /proc/net/ip_vs #顯示當前系統中的IPVS配置。列出IPVS的相關信息,如虛擬服務器、真實服務器和負載均衡算法等。
yum -y install ipvsadm #使用yum包管理器安裝ipvsadm工具。ipvsadm是一個命令行工具,用于配置和管理IPVS。

(1)配置虛擬 IP 地址(VIP:20.0.0.12)

cd /etc/sysconfig/network-scripts/:切換到網絡配置文件目錄。cp ifcfg-ens33 ifcfg-ens33:0:復制名為ifcfg-ens33的網絡配置文件為ifcfg-ens33:0。這將創建一個名為ens33:0的虛擬網絡接口配置文件。vim ifcfg-ens33:0:使用vim編輯器打開ifcfg-ens33:0配置文件。在ifcfg-ens33:0配置文件中,添加以下內容:DEVICE=ens33:0
ONBOOT=yes
IPADDR=20.0.0.12
NETMASK=255.255.255.255
這些配置將設置虛擬網絡接口ens33:0的設備名稱、啟動時自動激活、IP地址和子網掩碼。ifup ens33:0:激活ens33:0虛擬網絡接口。這將使配置的IP地址生效。ifconfig ens33:0:顯示ens33:0虛擬網絡接口的詳細信息,包括IP地址、子網掩碼等。

(2)調整 proc 響應參數

#由于 LVS 負載調度器和各節點需要共用 VIP 地址,需要關閉 icmp 的重定向,不充當路由器。
vim /etc/sysctl.conf  使用vim編輯器打開sysctl.conf文件
在sysctl.conf文件中,添加以下內容:
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
以上這些配置將禁用IP轉發和發送重定向sysctl -p  重新加載sysctl.conf文件中的配置。使新的配置生效

(3)配置負載分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm  將當前的IPVS配置保存到/etc/sysconfig/ipvsadm文件中。這將創建一個名為ipvsadm的配置文件,其中包含當前的IPVS規則
systemctl start ipvsadm  啟動ipvsadm服務。這將加載之前保存的IPVS配置,并開始使用IPVS進行負載均衡。
ipvsadm -C  清空當前的IPVS配置。刪除所有的虛擬服務器和真實服務器配置。
ipvsadm -A -t 20.0.0.12:80 -s rr  添加一個名為20.0.0.12:80的虛擬服務器,并使用輪詢(round-robin)算法進行負載均衡。這將創建一個新的虛擬服務器配置
ipvsadm -a -t 20.0.0.12:80 -r 20.0.0.103:80 -g			
ipvsadm -a -t 20.0.0.12:80 -r 20.0.0.104:80 -g 將真實服務器20.0.0.104:80添加到虛擬服務器20.0.0.12:80的后端組中。這將進一步擴展負載均衡,將流量分發到多個真實服務器,并使用源IP散列(source IP hash)算法進行負載均衡。請注意,如果您使用的是隧道模式,應將-g替換為-i。
ipvsadm  顯示當前的IPVS配置。這將列出所有的虛擬服務器、真實服務器和負載均衡算法等詳細信息ipvsadm -ln					#查看節點狀態,Route代表 DR模式

二.部署共享存儲(NFS服務器:20.0.0.101)

systemctl stop firewalld.service
setenforce 0yum -y install nfs-utils rpcbind  用yum包管理器安裝nfs-utils和rpcbind軟件包。這些軟件包提供了NFS(Network File System)和RPC(Remote Procedure Call)的相關工具和服務。
mkdir /opt/kgc /opt/benet 創建/opt/kgc和/opt/benet目錄。這些目錄將用于共享文件系統
chmod 777 /opt/kgc /opt/benet 將/opt/kgc和/opt/benet目錄的權限設置為777。這將允許任何用戶對這些目錄進行讀取、寫入和執行操作。vim /etc/exports  使用vim編輯器打開/etc/exports文件。這個文件用于配置NFS共享。
在/etc/exports文件中,添加以下內容:
/usr/share *(ro,sync)
/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)
這些配置將定義NFS共享的目錄和訪問權限。第一行將/usr/share目錄以只讀方式共享給所有主機。第二行將/opt/kgc目錄以讀寫方式共享給20.0.0.0/24網段的主機。第三行將/opt/benet目錄以讀寫方式共享給20.0.0.0/24網段的主機。systemctl start nfs.service 啟動nfs服務。這將啟動NFS服務器,并開始共享配置的目錄。
systemctl start rpcbind.service 啟動rpcbind服務。這將啟動RPC綁定服務,以便NFS服務器可以與客戶端進行通信。

三.配置節點服務器(20.0.0.103、20.0.0.104)

systemctl stop firewalld.service 
setenforce 01)配置虛擬 IP 地址(VIP:20.0.0.12)
#此地址僅用作發送 Web響應數據包的源地址,并不需要監聽客戶機的訪問請求(改由調度器監聽并分發)。因此使用虛接口 lo∶0 來承載 VIP 地址,并為本機添加一條路由記錄,將訪問 VIP 的數據限制在本地,以避免通信紊亂。
cd /etc/sysconfig/network-scripts/   切換到/etc/sysconfig/network-scripts/目錄
cp ifcfg-lo ifcfg-lo:0		復制ifcfg-lo文件為ifcfg-lo:0。這將創建一個名為ifcfg-lo:0的新文件,用于配置虛擬接口
vim ifcfg-lo:0 使用vim編輯器打開ifcfg-lo:0文件。
在ifcfg-lo:0文件中,添加以下內容:DEVICE=lo:0
ONBOOT=yes
IPADDR=20.0.0.12
NETMASK=255.255.255.255						#注意:子網掩碼必須全為 1
以上這些配置將定義虛擬接口lo:0的設備名稱、啟動時自動激活、IP地址和子網掩碼。ifup lo:0  激活虛擬接口lo:0。這將啟用新配置的虛擬接口。
ifconfig lo:0 顯示虛擬接口lo:0的配置信息。這將列出虛擬接口的IP地址、子網掩碼等詳細信息
route add -host 20.0.0.12 dev lo:0  添加一個路由規則,將主機20.0.0.12的流量通過虛擬接口lo:0發送。這將確保流量正確地通過虛擬接口。vim /etc/rc.local  使用vim編輯器打開/etc/rc.local文件
在/etc/rc.local文件中,添加以下內容:
/sbin/route add -host 20.0.0.12 dev lo:0chmod +x /etc/rc.d/rc.local  將/etc/rc.local文件設置為可執行。這將確保在系統啟動時自動執行其中的命令。(2)調整內核的 ARP 響應參數以阻止更新 VIP 的 MAC 地址,避免發生沖突
vim /etc/sysctl.conf  使用vim編輯器打開/etc/sysctl.conf文件
....../etc/sysctl.conf文件中,添加以下內容:
net.ipv4.conf.lo.arp_ignore = 1			#系統只響應目的IP為本地IP的ARP請求
net.ipv4.conf.lo.arp_announce = 2		#系統不使用IP包的源地址來設置ARP請求的源地址,而選擇發送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
以上這些配置將設置系統的ARP參數,以確保系統只響應目的IP為本地IP的ARP請求,并使用發送接口的IP地址作為ARP請求的源地址。
sysctl -p  重新加載sysctl.conf文件中的配置。這將使新的ARP參數生效或者
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore:將虛擬接口lo的arp_ignore參數設置為1。echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce:將虛擬接口lo的arp_announce參數設置為2。echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore:將所有接口的arp_ignore參數設置為1。echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce:將所有接口的arp_announce參數設置為2。sysctl -p:重新加載sysctl.conf文件中的配置。這將使新的ARP參數生效。yum -y install nfs-utils rpcbind httpd:使用yum包管理器安裝nfs-utils、rpcbind和httpd軟件包。這些軟件包提供了NFS、RPC和HTTP服務的相關工具和服務。systemctl start rpcbind:啟動rpcbind服務。這將啟動RPC綁定服務,以便NFS服務器可以與客戶端進行通信。systemctl start httpd:啟動httpd服務。這將啟動Apache HTTP服務器。--20.0.0.103---mount.nfs 20.0.0.101:/opt/kgc /var/www/html 將20.0.0.101主機上的/opt/kgc目錄掛載到本地的/var/www/html目錄。這將使20.0.0.103主機上的Apache HTTP服務器可以訪問/opt/kgc目錄中的文件
echo 'this is kgc web!' > /var/www/html/index.html 將一條消息寫入/var/www/html/index.html文件,以顯示在瀏覽器中。--20.0.0.104---
mount.nfs 20.0.0.101:/opt/benet /var/www/html 將20.0.0.101主機上的/opt/benet目錄掛載到本地的/var/www/html目錄。這將使20.0.0.104主機上的Apache HTTP服務器可以訪問/opt/benet目錄中的文件
echo 'this is benet web!' > /var/www/html/index.html 將一條消息寫入/var/www/html/index.html文件,以顯示在瀏覽器中。

4.測試 LVS 群集
在客戶端使用瀏覽器訪問 http://20.0.0.12/

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

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

相關文章

基于C++ 的OpenCV繪制多邊形,多邊形多條邊用不用的顏色繪制

使用基于C的OpenCV庫來繪制多邊形&#xff0c;并且為多邊形的不同邊使用不同的顏色&#xff0c;可以按照以下步驟進行操作&#xff1a; 首先&#xff0c;確保你已經安裝了OpenCV庫并配置好了你的開發環境。 導入必要的頭文件&#xff1a; #include <opencv2/opencv.hpp&g…

Bryntum Scheduler Pro 5.5.1 Crack

BRYNTUM 調度程序專業版,專業的日程安排小部件 Bryntum Scheduler Pro 5.5.1 一個專業有大腦的調度UI組件。Scheduler Pro 可幫助您安排任務&#xff0c;同時考慮資源和任務的可用性。 連接您的任務 讓 Scheduler Pro 處理剩下的事情。它將根據您定義的鏈接安排您的任務并遵守任…

BNC連接器市場分析:全球BNC連接器市場規模不斷增長

產品定義及統計范圍 BNC&#xff08;Bayonet-Neill-Concelman&#xff09;連接器是一種通常用于視頻和音頻信號傳輸的電連接器。它是以其兩位發明者Paul Neill和Carl Concelman的名字命名的&#xff0c;他們在20世紀40年代末開發了這種連接器。BNC連接器是一種設計用于同軸電纜…

ansible 修改遠程主機nginx配置文件

安裝ansible brew install ansible 或者 pip3 install ansible 添加遠程主機 設置秘鑰 mac登錄遠程主機 ssh -p 5700 root192.168.123.211 ssh localhost #設置雙機信任 ssh-kyegen -t rsa #設置主機兩邊的ssh配置文件 vi /etc/ssh/sshd_config/ PermitRootL…

UniApp 制作高德地圖插件

1、下載Uni插件項目 在Uni官網下載Uni插件項目&#xff0c;并參考官網插件項目創建插件項目. 開發者須知 | uni小程序SDK 如果下載下來項目運行不了可以參考下面鏈接進行處理 UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客 2、引入高德SDK 2.1 在高德官網下載對應SD…

207. 課程表

思路 首先要完全理解題意&#xff0c;這道題的[a,b]并不是b滿足了a就可以真正的學習a這門課了&#xff0c;因為a還有可能需要其他選修課的條件。類似下圖。 ??這題的思路在于使用合適的數據結構來存儲&#xff0c;這里用hash表來存儲如果1這門課可以修了之后&#xff0c;可以…

docker pull 設置代理 centos

On CentOS the configuration file for Docker is at: /etc/sysconfig/docker 用 root 權限打開 text editor sudo gedit 注意 加引號 Adding the below line helped me to get the Docker daemon working behind a proxy server: HTTP_PROXY“http://<proxy_host>:&…

linux下shell編寫軟件看門狗

遇到一個問題&#xff0c;就是軟件崩潰&#xff0c;可以讓軟件自動重啟&#xff0c;而且數據庫必須是軟件崩潰之前的 #!/bin/sh while true do /app/app/record -qws cp -pr /msata/db/db_record.db /data/log/db_record.db mv /msata/db/db_record1.db /msata/db/db_record.d…

ubuntu20.04磁盤滿了 /dev/mapper/ubuntu--vg-ubuntu--lv 占用 100%

問題 執行 mysql 大文件導入任務&#xff0c;最后快完成了&#xff0c;查看結果發現錯了&#xff01;悲催&#xff01;都執行了 兩天了 The table ‘XXXXXX’ is full &#xff1f; 磁盤滿了&#xff1f; 剛好之前另一個 centos 服務器上也出現過磁盤滿了&#xff0c;因此&a…

神經網絡基礎-神經網絡補充概念-30-搭建神經網絡塊

概念 搭建神經網絡塊是一種常見的做法&#xff0c;它可以幫助你更好地組織和復用網絡結構。神經網絡塊可以是一些相對獨立的模塊&#xff0c;例如卷積塊、全連接塊等&#xff0c;用于構建更復雜的網絡架構。 代碼實現 import numpy as np import tensorflow as tf from tens…

LeetCode 38題:外觀數列

題目 給定一個正整數 n &#xff0c;輸出外觀數列的第 n 項。 「外觀數列」是一個整數序列&#xff0c;從數字 1 開始&#xff0c;序列中的每一項都是對前一項的描述。 你可以將其視作是由遞歸公式定義的數字字符串序列&#xff1a; countAndSay(1) "1"countAnd…

Linux后門大全-inetd后門(一)

環境 靶機&#xff1a;Ubuntu 16.04.7 LTS &#xff08;最好使用相同的版本或更老的版本&#xff0c;inetd是非常老的系統服務管理工具&#xff09; 192.17.0.4 攻擊機&#xff1a; 安裝inetd apt update apt-get install openbsd-inetd #檢查是否安裝成功,如果文件存在就安…

【使用群暉遠程鏈接drive掛載電腦硬盤】

文章目錄 前言1.群暉Synology Drive套件的安裝1.1 安裝Synology Drive套件1.2 設置Synology Drive套件1.3 局域網內電腦測試和使用 2.使用cpolar遠程訪問內網Synology Drive2.1 Cpolar云端設置2.2 Cpolar本地設置2.3 測試和使用 3. 結語 前言 群暉作為專業的數據存儲中心&…

《TCP IP網絡編程》第十六章

第 16 章 關于 I/O 流分離的其他內容 16.1 分離 I/O 流 「分離 I/O 流」是一種常用表達。有 I/O 工具可區分二者&#xff0c;無論采用哪種方法&#xff0c;都可以認為是分離了 I/O 流。 2次 I/O 流分離&#xff1a; 第一種是第 10 章的「TCP I/O 過程」分離。通 shutdown(soc…

C++STL——deque容器詳解

縱有疾風起&#xff0c;人生不言棄。本文篇幅較長&#xff0c;如有錯誤請不吝賜教&#xff0c;感謝支持。 &#x1f4ac;文章目錄 一.deque容器的基本概念二.deque容器常用操作①deque構造函數②deque元素操作③deque賦值操作④deque交換操作⑤deque大小操作⑥deque插入和刪除…

el-form組件相關的一些基礎使用

el-checkbox 01.description 多選單選框 02.場景舉例 需要對每一條數據展示她的某些狀態是否存在 03.代碼展示 <el-checkbox v-model"query.isAutoAccptncsign" true-label1 false-label0 :disabled"ifReview?true:false">自動發起承兌應答</…

直方圖均衡化和自適應直方圖均衡化

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 均衡化是數字圖像處理中常用的一種技術&#xff0c;用于增強圖像的視覺效果和對比度。&#xff0c;今天我們將實現對同一張圖像的直方圖均衡化和自適應直方圖均衡化處理&#xff0c;學習一下兩者的的基本原理和實現過程&a…

MFC中的窗體繪制事件函數:OnCtlColor、OnPaint、OnNcPaint、OnDrawItem、OnEraseBkgnd、OnDraw

文章目錄 CWnd::OnCtlColorCWnd::OnPaintCWnd::OnNcPaintCWnd::OnDrawItemCWnd::OnEraseBkgndCWnd::InvalidateRectCView::OnDraw 參考&#xff1a;https://learn.microsoft.com/ CWnd::OnCtlColor 即將繪制子控件時&#xff0c;框架會調用此成員函數。 afx_msg HBRUSH OnCt…

React 高階組件(HOC)

React 高階組件(HOC) 高階組件不是 React API 的一部分&#xff0c;而是一種用來復用組件邏輯而衍生出來的一種技術。 什么是高階組件 高階組件就是一個函數&#xff0c;且該函數接受一個組件作為參數&#xff0c;并返回一個新的組件。基本上&#xff0c;這是從 React 的組成…

Mongodb 更新集合的方法到底有幾種 (中) ?

更新方法 Mongodb 使用以下幾種方法來更新文檔 &#xff0c; Mongodb V5.0 使用 mongosh 客戶端&#xff1a; db.collection.updateOne(<filter>, <update>, <options>) db.collection.updateMany(<filter>, <update>, <options>) db.c…