LVS負載均衡群集部署之——DR模式的介紹及搭建步驟

  • 一、LVS-DR集群介紹
  • 1.1 LVS-DR 工作原理
  • 1.2 數據包流向分析
  • 1.3 LVS-DR 模式的特點
  • 1.4 LVS-DR中的ARP問題
  • 1.4.1 問題一
  • 1.4.2 問題二
  • 二、構建LVS-DR集群
  • 2.1 構建LVS-DR集群的步驟(理論)
  • 1.配置負載調度器(192.168.80.30)
  • (1)配置虛擬 IP 地址(VIP:192.168.80.188)
  • (2)調整 proc 響應參數
  • (3)配置負載分配策略
  • 2.部署共享存儲(NFS服務器:192.168.80.40)
  • 3.配置節點服務器(192.168.80.10、192.168.80.20)
  • (1)配置虛擬 IP 地址(VIP:192.168.80.188)
  • (2)調整 proc 響應參數
  • 4.測試 LVS 群集
  • 2.2 構建LVS-DR集群操作的具體步驟(實操)
  • 1.web1配置如下

一、LVS-DR集群介紹

LVS-DR(Linux Virtual Server Director Server)工作模式,是生產環境中最常用的一 種工作模式。

1.1 LVS-DR 工作原理

LVS-DR 模式,Director Server 作為群集的訪問入口,不作為網關使用,節點 Director Server 與 Real Server 需要在同一個網絡中,返回給客戶端的數據不需要經過 Director Server。為了響應對整個群集的訪問,Director Server 與 Real Server 都需要配置 VIP 地址。

工作原理如下圖所示:

1.2 數據包流向分析

客戶端發送請求到 Director Server,請求的數據報文(源 IP 是 CIP,目標 IP 是 VIP) 到達內核空間。
Director Server 和 Real Server 在同一個網絡中,數據通過二層數據鏈路層來傳輸。
內核空間判斷數據包的目標 IP 是本機 VIP,此時 IPVS 比對數據包請求的服務是否是集群服務,是集群服務就重新封裝數據包。修改源 MAC 地址為 Director Server 的 MAC 地址,修改目標 MAC 地址為 Real Server 的 MAC 地址,源 IP 地址與目標 IP 地址沒有改 變,然后將數據包發送給 Real Server。
到達 Real Server 的請求報文的 MAC 地址是自身的 MAC 地址,就接收此報文。數 據包重新封裝報文(源 IP 地址為 VIP,目標 IP 為 CIP),將響應報文通過 lo 接口傳送給物理 網卡然后向外發出。
Real Server 直接將響應報文傳送到客戶端。

1.3 LVS-DR 模式的特點

Director Server 和 Real Server 必須在同一個物理網絡中。
Real Server 可以使用私有地址,也可以使用公網地址。如果使用公網地址,可以通過 互聯網對 RIP 進行直接訪問。
所有的請求報文經由 Director Server,但回復響應報文不能經過 Director Server。
Real Server 的網關不允許指向 Director Server IP,即不允許數據包經過 Director S erver。
Real Server 上的 lo 接口配置 VIP 的 IP 地址。

1.4 LVS-DR中RP問題

1.4.1 問題一

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

當ARP廣播發送到LVS-DR集群時,因為負載均衡器和節點服務器都是連接到相同的網絡上,它們都會接收到ARP廣播
只有前端的負載均衡器進行響應,其他節點服務器不應該響應ARP廣播
解決方法:
對節點服務器進行處理,使其不響應針對VIP的ARP請求

使用虛接口lo:0承載VIP地址
設置內核參數arp_ ignore=1: 系統只響應目的IP為本地IP的ARP請求

回到頂部

1.4.2 問題二

問題說明:RealServer返回報文(源IP是VIP)經路由器轉發,重新封裝報文時,需要先獲取路由器的MAC地址,發送ARP請求時,Linux默認使用IP包的源IP地址(即VIP)作為ARP請求包中的源IP地址,而不使用發送接口的IP地址,路由器收到ARP請求后,將更新ARP表項,原有的VIP對應Director的MAC地址會被更新為VIP對應RealServer的MAC地址。

路由器根據ARP表項,會將新來的請求報文轉發給RealServer,導致Director的VIP失效
解決方法:

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

二、構建LVS-DR集群

2.1 構建LVS-DR集群的步驟(理論)

實驗環境準備:
DR 服務器:192.168.80.30
Web 服務器1:192.168.80.10
Web 服務器2:192.168.80.20
NFS共享服務器:192.168.80.40
vip:192.168.80.188
客戶端:192.168.80.200

1.配置負載調度器(192.168.80.30)

systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm


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

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0 #若隧道模式,復制為ifcfg-tunl0(小寫字母l)
vim ifcfg-ens33:0


DEVICE=ens33:0
ONBOOT=yes #開機自動激活
IPADDR=192.168.80.188
NETMASK=255.255.255.255


ifup ens33:0
ifconfig ens33:0
route add -host 192.168.80.188 dev ens33:0


(2)調整 proc 響應參數

由于 LVS 負載調度器和各節點需要共用 VIP 地址,應該關閉Linux 內核的重定向參數響應。

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1
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-save > /etc/sysconfig/ipvsadm? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#保存策略
systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t 192.168.98.70:80 -s rr? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #添加虛擬服務器
ipvsadm -a -t 192.168.98.70:80 -r 192.168.80.80:80 -g? ? ? ? ? #若隧道模式,-g替換為-i
ipvsadm -a -t 192.168.98.70:80 -r 192.168.80.90:80 -g? ? ? ? ? #添加真實服務器
ipvsadm? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#激活

ipvsadm -ln? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #查看節點狀態,Route代表 DR模式


2.部署共享存儲(NFS服務器:192.168.80.40)

systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet

vim /etc/exports


/opt/kgc 192.168.80.0/24(rw,sync)
/opt/benet 192.168.80.0/24(rw,sync)


systemctl start nfs.service
systemctl start rpcbind.service


3.配置節點服務器(192.168.80.10、192.168.80.20)

systemctl stop firewalld.service
setenforce 0


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

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

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-lo:0
vim ifcfg-lo:0


DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.80.188 #和VIP保持一致
NETMASK=255.255.255.255 #注意:子網掩碼必須全為 1


ifup lo:0
ifconfig lo:0
route add -host 192.168.80.188 dev lo:0 #添加VIP本地訪問路由,將訪問VIP的數據限制在本地,以避免通信紊亂

vim /etc/rc.local


/sbin/route add -host 192.168.80.188 dev lo:0


(2)調整 proc 響應參數

vim /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


sysctl -p


或者 臨時添加

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

sysctl -p

yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd


--192.168.80.10---
mount.nfs 192.168.80.40:/opt/kgc /var/www/html
echo 'this is kgc web!' > /var/www/html/index.html

--192.168.80.20---
mount.nfs 192.168.80.40:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html


4.測試 LVS 群集

在客戶端使用瀏覽器訪問 http://192.168.80.188/,默認網關指向192.168.80.188

2.2 構建LVS-DR集群操作的具體步驟(實操)

環境搭建工作:

1.web1配置如下

6.關閉所有服務器的防護墻和selinux

第一步:配置負載調度器(192.168.98.70)

1)加載模塊并安裝管理工具

2)配置虛擬ip

3)開啟虛擬網卡并添加主機路由

4)關閉Linux 內核的重定向參數響應

5)刷新設置

?

6)配置負載分配策略

第二步:部署共享存儲(NFS服務器:192.168.80.40)
1)安裝nfs-utils rpcbind程序(yum源提前配置好)并配置發布目錄和策略

2)發布共享

3)開啟服務并設置開機自啟動

第三步:配置節點服務器(192.168.80.10和192.168.80.20)
1)web1服務器配置如下:

2)開啟接口并為本機添加路由記錄

3)調整 proc 響應參數

4)刷新配置

5)安裝nfs-utils rpcbind httpd

6)開啟服務并查看狀態確認

7)掛載共享目錄并創建本機的html文件

8)在瀏覽器中輸入本機ip進行確認

9)web2服務器配置步驟和web1一致

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

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

相關文章

5分鐘教你用AI把老照片動起來,別再去花49塊9的冤枉錢了

文章目錄 需要的工具 最近,AI視頻在各大平臺上,又火了。 只是火的形式,變成了將老照片動起來,打情感牌,或者做很多經典電視劇的再整活。 直接把可靈的生成時間,從以前的4分鐘,生生的干成了20分鐘…

鴻蒙應用筆記

安裝就跳過了,一直點點就可以了 配置跳過,就自動下了點東西。 鴻蒙那個下載要12g個內存,大的有點嚇人。 里面跟idea沒區別 模擬器或者真機運行 真機要鴻蒙4.0,就可以實機調試 直接在手機里面跑,這個牛逼&#xf…

國標GB/T 28181詳解:國標GBT28181-2022 SIP服務器發起廣播的命令流程

目錄 一、定義 二、作用 1、實現信息的集中管理和分發 (1)信息集中 (2)信息分發 2、提高信息傳輸的可靠性和效率 (1)可靠性 (2)提高效率 3、支持多種設備和系統的互通 &am…

mongdb學習與使用

1. 基礎概念 MongoDB簡介: MongoDB是一個基于文檔的NoSQL數據庫,具有高性能、高可用性和易擴展性。數據存儲在類似JSON的BSON格式中。 基本術語: Database(數據庫): 集合的容器。Collection(集合…

國產強大免費WAF, 社區版雷池動態防護介紹

雷池WAF,基于智能語義分析的下一代 Web 應用防火墻 使用情況 我司于2023年4月23日對雷池進行測試,測試一個月后,于2023年5月24日對雷池進行正式切換,此時版本為1.5.1。 里程碑紀念 后續一直跟隨雷池進行版本升級,當前…

QT_GUI

1、QT安裝 一個跨平臺的應用程序和用戶界面框架,用于開發圖形用戶界面(GUI)應用程序以及命令行工具。QT有商業版額免費開源版,一般使用免費開源版即可,下面安裝的是QT5,因為出來較早,使用較多&…

Python特征工程 — 1.4 特征歸一化方法詳解

目錄 1 Min-Max歸一化 方法1:自定義的Min-Max歸一化封裝函數 方法2: scikit-learn庫中的MinMaxScaler 2 Z-score歸一化 方法1:自定義的Z-score歸一化封裝函數 方法2: scikit-learn庫中的StandardScaler 3 最大值歸一化 4 L…

考研生活day1--王道課后習題2.2.1、2.2.2、2.2.3

2.2.1 題目描述: 解題思路: 這是最基礎的操作,思路大家應該都有,缺少的應該是如何下筆,很多同學都是有思路但是不知道如何下筆,這時候看思路的意義不大,可以直接看答案怎么寫,最好…

Java項目:基于SSM框架實現的游戲攻略網站系統分前后臺【ssm+B/S架構+源碼+數據庫+畢業論文+任務書】

一、項目簡介 本項目是一套基于SSM框架實現的游戲攻略網站系統 包含:項目源碼、數據庫腳本等,該項目附帶全部源碼可作為畢設使用。 項目都經過嚴格調試,eclipse或者idea 確保可以運行! 該系統功能完善、界面美觀、操作簡單、功能…

redhat7.x 升級openssh至openssh-9.8p1

1.環境準備: OS系統:redhat 7.4 2.備份配置文件: cp -rf /etc/ssh /etc/ssh.bak cp -rf /usr/bin/openssl /usr/bin/openssl.bak cp -rf /etc/pam.d /etc/pam.d.bak cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.bak 3.安裝…

UB9A0全系統全頻高精度板卡性能指標

UB9A0 板卡是基于和芯星通自主研發的新一代射頻基帶及高精度算法一體化 GNSS SoC 芯片—Nebulas Ⅳ開發的全系統全頻點高精 OEM 板卡 ,支持 BDS,GPS, GLONASS,Galileo,QZSS,NavIC,SBAS&#xff…

linux c 應用編程定時器函數

在 Linux C 應用編程中,對于多線程編程中的定時器函數使用,通常可以借助 pthread 庫和系統提供的定時器相關的函數來實現。 首先,常見的定時器函數有 setitimer() 和 alarm() 。setitimer() 函數可以更精確地設置定時器,它可以設…

JAVA學習-練習試用Java實現“螺旋矩陣 II”

問題: 給定一個正整數 n ,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1: 輸入:n 3 輸出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2: 輸入&…

C++標準模板(STL)- 迭代器庫 - 流迭代器- 寫入 std::basic_streambuf 的輸出迭代器(二)

迭代器庫-流迭代器 迭代器庫提供了五種迭代器的定義,同時還提供了迭代器特征、適配器及相關的工具函數。 迭代器分類 迭代器共有五 (C17 前)六 (C17 起)種:遺留輸入迭代器 (LegacyInputIterator) 、遺留輸出迭代器 (LegacyOutputIterator) 、遺留向前迭代…

MySQL環境搭配

下載版本37滴 下載第二個 之后進行安裝 進入安裝界面 next 選擇默認的 進行下一步 安裝成功后,進行一系列配置,成功界面如下: 配置 MySQL8.0 環境變量 如果不配置 MySQL 環境變量,就不能在命令行直接輸入 MySQL 登錄命令。 步…

強烈推薦!12 組超驚艷的 Midjourney 風格提示詞!

前言 Midjourney 的 --sref random 隨機風格功能推出之后,出現了很多對不同代碼生成效果的探索。今天就為大家推薦 12 組我覺得非常驚艷的風格代碼,將它們添加在提示詞中,不需要寫復雜的關鍵詞就能得到高質量的指定風格,并且效果…

CUDA編譯配置中來自 CUDA 12.1.targets 的MSB3721錯誤和核函數調用語法錯誤‘<’解決及可用的代碼示例框架

今天開始整cuda編程處理圖像,好久沒玩cuda,又從小白開始。情況不妙,第一個工程坑不少,記錄一下如下2個重要的錯誤: (1)來自 CUDA 12.1.targets 的MSB3721錯誤 錯誤 命令““C:\Program Files\N…

Scrapy框架的基本使用教程

1、創建scrapy項目 首先在自己的跟目錄文件下執行命令: PS D:\BCprogram\python_pro\bigdata> scrapy startproject theridion_grallatorscrapy startproject 項目名 具體執行操作如下:1、創建項目目錄:Scrapy會在當前工作目錄下創建一…

Git 操作總結

1. 安裝、Git 環境配置 1.1 安裝 Git 官方版本可以在 Git 官方網站下載:打開 https://git-scm.com/download/win,選擇相應版本即可。 Git 安裝完成后,可以在開始菜單中看到 Git 的三個啟動圖標(Git Bash、Git CMD、Git GUI&…

koa導出數據為csv文件給前端下載

后端代碼 async userActivityExport(ctx) {const limit ctx.query.limit || 2const offset ctx.query.offset || 0const UserActivity ctx.module.db().entity(userActivity)const findOption {}const ret await UserActivity.findMany_(findOption)const firtCol Objec…