【LVS】2、部署LVS-DR群集

LVS-DR數據包的流向分析

1.客戶端發送請求到負載均衡器,請求的數據報文到達內核空間;

2.負載均衡服務器和正式服務器在同一個網絡中,數據通過二層數據鏈路層來傳輸;

3.內核空間判斷數據包的目標IP是本機VIP,此時IP虛擬服務器比對數據包請求的服務是否是集群服務,是、則重新封裝數據包;修改源MAC地址為負載均衡服務器的MAC地址,目標MAC地址為真實服務器的MAC地址,源IP地址和目標IP地址不變,然后將數據包發送給真實服務器

4.如果到達真實服務器的請求報文的MAC地址是自身的MAC地址,就接收此報文;數據包重新封裝報文(源 IP 地址為 VIP,目標 IP 為 CIP),將響應報文通過 lo 接口傳送給物理網卡然后向外發出

5.真實服務器直接將響應報文傳送到客戶端

????Clint向目標VIP發出請求,Director(負載均衡器)接收
?? ?IP包頭及數據幀頭部信息

LVS-DR中的ARP故障

1.ARP通信紊亂
防止網關路由器發送ARP廣播時調度器和節點都進行響應,導致ARP通信紊亂;
可以不對非本地物理網卡的arp請求進行響應,使用虛擬接口lo:0承載VIP地址

????????在LVS-DR負載均衡群集中,負載均衡器與節點服務器都要配置相同的VIP地址,在局域網中具有相同的IP地址,會造成各服務器ARP通信的紊亂;

????????當ARP廣播發送到LVS-DR集群時,因為負載均衡器和節點服務器都是連接到相同的網絡上,它們都會接收到ARP廣播;現實應該只有前端的負載均衡器進行響應,其他節點服務器不應該響應ARP廣播。

對節點服務器進行處理,使其不響應針對VIP的ARP請求:

????????使用虛擬接口lo:0承載VIP地址

? ? ? ? 設置內核參數arp_ignore=1:代表系統只響應目的IP為本地IP的ARP請求

2.ARP_announce-2
系統不使用響應數據的源IP地址(VIP)來作為本機進行的arp請求報文的源IP地址,
而是使用發送報文的物理網卡的IP地址作為ARP請求報文的源IP地址,
這樣可以防止網關路由器接收到源IP地址為VIP的ARP請求,報文后的又去更新ARP緩存表,導致外網再去發送請求時,數據包無法到達調度器

RS返回報文(源IP是VIP)經路由器轉發,重新封裝報文時,需要想獲取路由器的MAC地址,發送ARP請求時,Linux默認使用IP包的源IP地址(即VIP)作為ARP請求包中的源IP地址,此時路由器的路由表進行更新,VIP的MAC地址由原先的均衡器變為節點服務器,路由器根據ARP表項,會將新來的請求報文轉發給節點服務器,導致均衡器的VIP失效,又會造成VIP的紊亂

解決辦法:

????????對節點服務器進行處理,設置內核參數arp_announce=2:代表不使用IP包的源地址來設置ARP請求的源地址,而選擇發送ens33接口的IP地址

修改/etc/sysctl.conf文件
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce =2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce =2

LVS-DR的特性

1.負載均衡服務器(DS)和真實服務器(RS)必須在同一個物理網絡中

2.RS可以使用私有地址,也可以使用公網地址,如果使用公網地址,可以通過互聯網對RIP直接進行訪問

3.DS作為群記得訪問入口,但不作為網關使用

4.所有請求報文經由DS,但回復響應報文不能經過DS

5.RS的網關不允許指向DS IP,即RS發送的數據包不允許經過DS

6.RS上的lo接口配置VIP的IP地址

LVS的優點:負載均衡器只負責將請求包分發給物理服務器,而物理服務器將響應包直接發送給用戶,所以負載均衡器能處理很巨大的請求流量;這種方式,一臺負載均衡能為超過100M的物理服務器服務,負載均衡器不再是系統瓶頸;使用LVS-DR方式,如果你的負載均衡器擁有100M全雙工網卡的話,使用LVS就能達到1G甚至更高的吞吐量

5萬以內用Nginx,5-10萬使用

LVS的缺點:所有的調度器和節點服務器在同一個廣播域,必須在同一個物理網絡中,不支持異地容災

.

LVS-DR負載均衡群集部署

流程圖:(待修改ing)

設備準備:
DR 服務器:192.168.220.130
Web 服務器1:192.168.220.111      
Web 服務器2:192.168.220.112      
vip:192.168.220.135
NFS共享存儲:192.168.220.131
1.配置負載調度器(192.168.220.130)
#關閉防火墻和安全機制
systemctl stop firewalld.service
setenforce 0#安裝加載ip_vs
modprobe ip_vs
cat /proc/net/ip_vs
#安裝ipvsadm服務
yum -y install ipvsadm
(1)配置虛擬 IP 地址(VIP:192.168.220.135)?
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.220.135
NETMASK=255.255.255.255#啟動虛擬網卡ens33:0
ifup ens33:0
#查看虛擬網卡ens33:0當前狀態
ifconfig ens33:0#ifup 與 ifdown 會直接到 /etc/ sysconfig/network-scripts 目錄下搜索對應的配置文件,進行啟動與關閉
(2)調整 proc 響應參數

#由于 LVS 負載調度器和各節點需要共用 VIP 地址,需要關閉 icmp 的重定向,不充當路由器。

vim /etc/sysctl.confnet.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#刷新
sysctl -p
(3)配置負載分配策略
#保存重定向,開啟ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadmipvsadm -C        #清空所有規則
ipvsadm -A -t 192.168.220.135:80 -s rr        #配置虛擬IP;rr為普通輪詢
ipvsadm -a -t 192.168.220.135:80 -r 192.168.220.111:80 -g			#-g表示DR模式;若隧道模式,-g替換為-i
ipvsadm -a -t 192.168.220.135:80 -r 192.168.220.112:80 -g#啟動ipvsadm
ipvsadm
#查看節點狀態,Route代表 DR模式
ipvsadm -ln
2.部署共享存儲(NFS服務器:192.168.220.131)
systemctl stop firewalld.service
setenforce 0yum -y install nfs-utils rpcbind
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.220.0/24(rw,sync)
/opt/benet 192.168.220.0/24(rw,sync)systemctl start nfs.service
systemctl start rpcbind.service

3.配置節點服務器(192.168.220.111、192.168.220.112)

#此地址僅用作發送 Web響應數據包的源地址,并不需要監聽客戶機的訪問請求(改由調度器監聽并分發)。因此使用虛接口 lo∶0 來承載 VIP 地址,并為本機添加一條路由記錄,將訪問 VIP 的數據限制在本地,以避免通信紊亂。

systemctl stop firewalld.service
setenforce 0
(1)配置虛擬 IP 地址(VIP:192.168.220.135)
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0		
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.220.135
NETMASK=255.255.255.255						#注意:子網掩碼必須全為 1
#開啟虛擬網卡lo:0,查看虛擬網卡lo:0的狀態
ifup lo:0
ifconfig lo:0
#添加規則
route add -host 192.168.220.135 dev lo:0vim /etc/rc.local
/sbin/route add -host 192.168.220.135 dev lo:0#給文件執行權限
chmod +x /etc/rc.d/rc.local
(2)調整內核的 ARP 響應參數以阻止更新 VIP 的 MAC 地址,避免發生沖突
vim /etc/sysctl.confnet.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#刷新
sysctl -pyum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd
--192.168.220.111---
#掛載
mount.nfs 192.168.220.111:/opt/kgc /var/www/html
echo 'this is kgc web!' > /var/www/html/index.html
--192.168.220.112---
#掛載
mount.nfs 192.168.220.112:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html
4.測試 LVS 群集

在客戶端使用瀏覽器訪問 http://192.168.220.135

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

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

相關文章

批量將Excel中的第二列內容從拼音轉換為漢字

要批量將Excel中的第二列內容從拼音轉換為漢字,您可以使用Python的openpyxl庫來實現。下面是一個示例代碼,演示如何讀取Excel文件并將第二列內容進行拼音轉漢字: from openpyxl import load_workbook from xpinyin import Pinyin # 打開Exce…

Android kotlin系列講解(入門篇)使用Intent在Activity之間穿梭

<<返回總目錄 上一篇:Android kotlin系列講解(入門篇)Activity的理解與基本用法 文章目錄 1、使用顯式Intent2、使用隱式Intent3、更多隱式Intent的用法4、向下一個Activity傳遞數據5、返回數據給上一個Activity1、使用顯式Intent 你應該已經對創建Activity的流程比較…

SASS 學習筆記

SASS 學習筆記 總共會寫兩個練手項目&#xff0c;成品在 https://goldenaarcher.com/scss-study 可以看到&#xff0c;代碼在 https://github.com/GoldenaArcher/scss-study。 什么是 SASS SASS 是 CSS 預處理&#xff0c;它提供了變量&#xff08;雖然現在 CSS 也提供了&am…

C++ 面向對象三大特性——繼承

?<1>主頁&#xff1a;我的代碼愛吃辣 &#x1f4c3;<2>知識講解&#xff1a;C 繼承 ??<3>開發環境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;面向對象三大特性的&#xff0c;封裝&#xff0c;繼承&#xff0c;多態&#xff…

【數倉建設系列之一】什么是數據倉庫?

一、什么是數據倉庫&#xff1f; 數據倉庫(Data Warehouse&#xff0c;簡稱DW)簡單來講&#xff0c;它是一個存儲和管理大量結構化和非結構化數據的存儲集合&#xff0c;它以主題為向導&#xff0c;通過整合來自不同數據源下的數據(比如各業務數據&#xff0c;日志文件數據等)…

內網穿透和服務器+IP 實現公網訪問內網的區別

內網穿透和服務器IP 實現公網訪問內網的區別在于實現方式和使用場景。 內網穿透&#xff08;Port Forwarding&#xff09;&#xff1a;內網穿透是一種通過網絡技術將公網用戶的請求通過中轉服務器傳輸到內網設備的方法。通過在路由器或防火墻上進行配置&#xff0c;將公網請求…

MySQL- sql語句基礎

文章目錄 1.select后對表進行修改&#xff08;delete&#xff09;2.函數GROUP_CONCAT()3.使用正則表達式3.DATE_FORMAT()4.count() 加條件 1.select后對表進行修改&#xff08;delete&#xff09; 報錯&#xff1a;You can’t specify target table ‘Person’ for update in …

proteus結合keil-arm編譯器構建STM32單片機項目進行仿真

proteus是可以直接創建設計圖和源碼的&#xff0c;但是源碼編譯它需要借助keil-arm編譯器&#xff0c;也就是我們安裝keil-mdk之后自帶的編譯器。 下面給出一個完整的示例&#xff0c;主要是做一個LED燈閃爍的效果。 新建工程指定路徑&#xff0c;Schematic,PCB layout都選擇默…

【Docker】 使用Docker-Compose 搭建基于 WordPress 的博客網站

引 本文將使用流行的博客搭建工具 WordPress 搭建一個私人博客站點。部署過程中使用到了 Docker 、MySQL 。站點搭建完成后經行了發布文章的體驗。 WordPress WordPress 是一個廣泛使用的開源內容管理系統&#xff08;CMS&#xff09;&#xff0c;用于構建和管理網站、博客和…

單例設計模式精講(餓漢式和懶漢式實現的重要方法)

目錄 什么叫做單例模式&#xff1f; 餓漢式和懶漢式的區別&#xff1f; 餓漢式-方式1&#xff08;靜態變量方式&#xff09; 餓漢式-方式2&#xff08;靜態代碼塊方式&#xff09; 懶漢式-方式1&#xff08;線程不安全&#xff09; 懶漢式-方式2&#xff08;線程安全&…

FifthOne:用于矢量搜索的計算機視覺接口

一、說明 數據太多了。數據湖和數據倉庫;廣闊的像素牧場和充滿文字的海洋。找到正確的數據就像大海撈針一樣&#xff01;如果你喜歡開源機器學習庫 FiftyOne&#xff0c;矢量搜索引擎通過將復雜數據&#xff08;圖像的原始像素值、文本文檔中的字符&#xff09;轉換為稱為嵌入矢…

PHP報錯:未定義常量的解決方法!

PHP報錯&#xff1a;未定義常量的解決方法&#xff01; 在PHP編程中&#xff0c;我們經常會遇到常量未定義的錯誤。這種錯誤通常會在代碼中使用未定義的常量時發生。本文將介紹常量的概念以及如何解決未定義常量的問題。 首先&#xff0c;讓我們來了解什么是常量。在PHP中&am…

大數據平臺運維實訓室建設方案

一、概況 本實訓室的主要目的是培養大數據平臺運維項目的實踐能力,以數據計算、分析、挖掘和可視化的案例訓練為輔助。同時,實訓室也承擔相關考評員與講師培訓考試、學生認證培訓考試、社會人員認證培訓考試、大數據技能大賽訓練、大數據專業課程改革等多項任務。 實訓室旨在培…

無人機跟隨一維高度避障場景--邏輯分析

無人機跟隨一維高度避障場景--邏輯分析 1. 源由2. 視頻3. 問題3.1 思維發散3.2 問題收斂 4. 圖示4.1 水平模式4.2 下坡模式4.3 上坡模式4.4 碰撞分析 5. 總結5.1 一維高度避障場景5.2 業界跟隨產品5.3 APM集成跟隨示意圖一&#xff1a;示意圖二&#xff1a;示意圖三&#xff1a…

Java算法_ 驗證二叉搜索樹(LeetCode_Hot100)

題目描述&#xff1a; 給你一個二叉樹的根節點 &#xff0c;判斷其是否是一個有效的二叉搜索樹。root 有效 二叉搜索樹定義如下&#xff1a; 節點的左子樹只包含 小于 當前節點的數。 節點的右子樹只包含 大于 當前節點的數。 所有左子樹和右子樹自身必須也是二叉搜索樹。 獲得…

【TypeScript】tsc -v 報錯 —— 在此系統上禁止運行腳本

在 VS Code 終端中執行 tsc -v &#xff0c;報錯 —— 在此系統上禁止運行腳本 然后 windows x &#xff0c;打開終端管理員&#xff0c;出現同樣的問題 解決方法&#xff1a; 終端&#xff08;管理員&#xff09;執行以下命令&#xff1a; 出現 RemoteSigned 則代表更改成功…

11,模板泛化、模板特化、所占字節數、繼承實現模板展開、using循環命名展開可變參數

模板泛化、模板特化、所占字節數、繼承實現模板展開、using循環命名展開可變參數 模板泛化模板特化模板全特化通過模板偏特化獲取類型所占字節數通過模板偏特化和宏獲取類型所占字節數...ParamTypes和ParamTypes...的區別 通過繼承實現模板展開using 通過using循環命名的方式來…

開發一個文生圖的功能

文章目錄 效果開發環境原理核心代碼代碼倉庫問題效果 開發環境 Python 3.10PyCharm原理 借助開源項目stable-diffusion,通過該項目封裝python庫diffusers,可以輕易的實現文生圖的功能。 關于更多diffusers的功能請訪問:https://huggingface.co/docs/diffusers/index 核心代…

css樣式表屬性

文章目錄 css樣式表屬性colorbackground-colorfont-sizefont-weightfont-familyfont-styletext-decorationtext-indentline-height(line-height的概念)width、heightletter-spacingtext-aligndirectionwriting-modefont-variantborder-radiusopacitycursorvertical-alignmin-wi…

【數據結構與算法】十大經典排序算法-歸并排序

&#x1f31f;個人博客&#xff1a;www.hellocode.top &#x1f3f0;Java知識導航&#xff1a;Java-Navigate &#x1f525;CSDN&#xff1a;HelloCode. &#x1f31e;知乎&#xff1a;HelloCode &#x1f334;掘金&#xff1a;HelloCode ?如有問題&#xff0c;歡迎指正&#…