溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Centos 7基于DR(直接路由)模式的負(fù)載均衡配置詳解

發(fā)布時(shí)間:2020-02-24 16:40:52 來源:網(wǎng)絡(luò) 閱讀:2524 作者:warrent 欄目:建站服務(wù)器

DR(直接路由)是三種負(fù)載均衡模式其中之一,也是使用最多的一種模式,關(guān)于該模式的介紹,可以參考博文:LVS負(fù)載均衡群集詳解。

DR的工作模式示意圖如下:

Centos 7基于DR(直接路由)模式的負(fù)載均衡配置詳解

該模式的原理已經(jīng)在上面鏈接的博文中寫了下來?,F(xiàn)在直接搭建一個(gè)基于DR模式的負(fù)載均衡群集。

環(huán)境如下:

Centos 7基于DR(直接路由)模式的負(fù)載均衡配置詳解

在上面這個(gè)環(huán)境中,需要解決的問題有下面幾點(diǎn):

1、所有web節(jié)點(diǎn)和調(diào)度器都配置上VIP:客戶端訪問VIP(群集的虛擬IP地址)時(shí),若是

調(diào)度器將請求轉(zhuǎn)發(fā)給web節(jié)點(diǎn),然后由web節(jié)點(diǎn)直接去響應(yīng)客戶端,那么客戶端在收到

數(shù)據(jù)包后,發(fā)現(xiàn)收到的數(shù)據(jù)包源地址不是200.0.0.254,那么就會(huì)直接丟棄web服務(wù)器返回

的數(shù)據(jù)包,為了解決這一問題,所以需要在所有web節(jié)點(diǎn)和調(diào)度器的虛接口上配置上200.0.0.254

這個(gè)地址,并且通過添加一條路由,將訪問VIP的數(shù)據(jù)限制在本地,以避免通信紊亂。

2、解決關(guān)于web節(jié)點(diǎn)ARP響應(yīng)的問題:在所有web節(jié)點(diǎn)和調(diào)度器上配置上200.0.0.254

這個(gè)地址后,當(dāng)client訪問200.0.0.254這個(gè)地址時(shí),所有的web節(jié)點(diǎn)都有這個(gè)地址,所以

都會(huì)去進(jìn)行ARP響應(yīng),那么這樣一來,可能就造成了client略過調(diào)度器直接去訪問web節(jié)點(diǎn)

了,這樣一來,調(diào)度器就沒有存在的意義了,自然也就達(dá)不到負(fù)載均衡的效果了,所以需要

關(guān)閉web節(jié)點(diǎn)的部分ARP應(yīng)答,在廣播200.0.0.254這個(gè)地址時(shí),只讓調(diào)度器去響應(yīng),web

節(jié)點(diǎn)不響應(yīng)該廣播。

3、解決調(diào)度器內(nèi)核自帶的ICMP的重定向優(yōu)化問題:Linux內(nèi)核有一個(gè)ICMP優(yōu)化功能,

就是在client第一次訪問調(diào)度器時(shí),調(diào)度器會(huì)將請求轉(zhuǎn)發(fā)給某一個(gè)web節(jié)點(diǎn),在這時(shí),Linux

自帶的ICMP優(yōu)化功能會(huì)發(fā)現(xiàn),客戶端可以直接和web節(jié)點(diǎn)通信,然后就會(huì)發(fā)送一個(gè)數(shù)據(jù)

包,告訴client,之后所有訪問200.0.0.254的數(shù)據(jù)包,直接發(fā)給那個(gè)web節(jié)點(diǎn)即可,這樣之

后所有的訪問請求都將直接發(fā)送給某一個(gè)web節(jié)點(diǎn),而不再經(jīng)過調(diào)度器,這樣肯定也是不可

以的,無法達(dá)到負(fù)載均衡的效果了。所以需要關(guān)閉Linux內(nèi)核的ICMP重定向參數(shù)響應(yīng)。

配置過程如下:

一、配置負(fù)載調(diào)度器(自行配置環(huán)境中除VIP以外的IP地址):

1、配置虛擬IP地址(VIP)

[root@LVS network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0               #在虛接口配置VIP
[root@LVS network-scripts]# vim ifcfg-ens33:0           #改動(dòng)以下配置項(xiàng)
           .............
IPADDR=200.0.0.254
NETMASK=255.255.255.0           #必須寫子網(wǎng)掩碼信息
NAME=ens33:0              #注意改網(wǎng)卡名稱
DEVICE=ens33:0
ONBOOT=yes
[root@LVS network-scripts]# systemctl restart network            #重啟網(wǎng)卡使更改生效
[root@LVS network-scripts]# ifconfig        #查詢相關(guān)IP是否配置正確
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 200.0.0.1  netmask 255.255.255.0  broadcast 200.0.0.255
        inet6 fe80::2e1e:d068:9c41:c688  prefixlen 64  scopeid 0x20<link>
                           ...........................

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 200.0.0.254  netmask 255.255.255.0  broadcast 200.0.0.255
        ether 00:0c:29:77:2c:03  txqueuelen 1000  (Ethernet)

2、調(diào)整/proc相應(yīng)參數(shù):

[root@LVS ~]# vim /etc/sysctl.conf             #寫入下面三行
                 ................
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@LVS ~]# sysctl -p              #刷新一下配置
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

3、配置負(fù)載分配策略:

[root@LVS ~]# modprobe ip_vs         #加載ip_vs模塊
[root@LVS ~]# yum -y install ipvsadm           #安裝ipvsadm工具
[root@LVS ~]# ipvsadm -C              #清除原有策略
[root@LVS ~]# ipvsadm -A -t 200.0.0.254:80 -s rr        #配置群集VIP及添加相關(guān)節(jié)點(diǎn)
[root@LVS ~]# ipvsadm -a -t 200.0.0.254:80 -r 200.0.0.2:80 -g -w 1
[root@LVS ~]# ipvsadm -a -t 200.0.0.254:80 -r 200.0.0.3:80 -g -w 1
[root@LVS ~]# ipvsadm-save                        #保存策略
[root@LVS ~]# ipvsadm-save > /etc/sysconfig/ipvsadm           #導(dǎo)出策略備份
[root@LVS ~]# ipvsadm -ln             #確認(rèn)群集當(dāng)前策略
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  200.0.0.254:80 rr
  -> 200.0.0.2:80                 Route   1      0          0         
  -> 200.0.0.3:80                 Route   1      0          0         

二、配置web節(jié)點(diǎn)服務(wù)器:

web節(jié)點(diǎn)服務(wù)器的VIP地址僅用來發(fā)送web響應(yīng)數(shù)據(jù)包的源地址,并不需要監(jiān)聽客戶機(jī)的訪問請求(由調(diào)度器監(jiān)聽并分發(fā))。因此使用虛接口lo:0來承載VIP地址,并添加一條路由記錄,將訪問VIP的數(shù)據(jù)包限制在本地。

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

[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0      #編輯該文件,只保留以下四行,并配置VIP
DEVICE=lo:0
IPADDR=200.0.0.254
NETMASK=255.255.255.255               #注意:子網(wǎng)掩碼必須是全為1。也就是4個(gè)255。
ONBOOT=yes
[root@LVS network-scripts]# systemctl restart network            #重啟網(wǎng)卡使更改生效
[root@LVS network-scripts]# ifconfig        #查詢VIP是否配置正確 
                ............................
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 200.0.0.254  netmask 255.255.255.255
        loop  txqueuelen 1000  (Local Loopback)
[root@web1 ~]# route add -host 200.0.0.254 dev lo:0              #添加VIP本地訪問路由記錄
[root@web1 ~]# vim /etc/rc.local               #設(shè)置開機(jī)自動(dòng)添加這條路由記錄              
                ................................
/sbin/route add -host 200.0.0.254 dev lo:0

2、調(diào)整/proc響應(yīng)參數(shù):

[root@web1 ~]# vim /etc/sysctl.conf                  #調(diào)整/proc響應(yīng)參數(shù),寫入下面六行
                    ...................
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@web1 ~]# sysctl -p                #刷新一下
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

3、安裝并啟動(dòng)httpd服務(wù)(可根據(jù)需求選擇搭建Nginx還是apache):

[root@web1 ~]# yum -y install httpd             #安裝http服務(wù)
[root@web1 ~]# echo 1111111111111 > /var/www/html/index.html          
#準(zhǔn)備測試網(wǎng)頁,等看到負(fù)載均衡的效果后,再掛載共享存儲(chǔ)設(shè)備。
[root@web1 ~]# systemctl start httpd               #啟動(dòng)http服務(wù)
[root@web1 ~]# systemctl enable httpd           #設(shè)置為開機(jī)自啟動(dòng)

重復(fù)以上三個(gè)步驟,配置其他web節(jié)點(diǎn)服務(wù)器(我這里將另一個(gè)web節(jié)點(diǎn)的首頁文件改為了:2222222222222222)。

三、client訪問VIP,以便測試LVS群集:

Centos 7基于DR(直接路由)模式的負(fù)載均衡配置詳解

Centos 7基于DR(直接路由)模式的負(fù)載均衡配置詳解

若訪問到的是同一頁面,在排除配置上錯(cuò)誤的情況下,可以打開多個(gè)網(wǎng)頁,或者稍等一會(huì)再刷新,因?yàn)樗赡苡幸粋€(gè)保持連接的時(shí)間,所以會(huì)存在延遲。

四、配置NFS共享存儲(chǔ):

測試出群集效果后,就需要部署共享存儲(chǔ),以便所有的web節(jié)點(diǎn)可以向客戶機(jī)提供同樣的網(wǎng)頁文件,具體配置過程已經(jīng)寫在了這篇博文的末尾:Centos 7基于NAT(地址轉(zhuǎn)換)模式的負(fù)載均衡配置詳解。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI