重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
下文給大家帶來DR(直接路由)模式負載均衡配置詳細介紹,希望能夠給大家在實際運用中帶來一定的幫助,負載均衡涉及的東西比較多,理論也不多,網上有很多書籍,今天我們就用創新互聯在行業內累計的經驗來做一個解答。
創新互聯建站主要業務有網站營銷策劃、成都網站設計、網站制作、微信公眾號開發、重慶小程序開發、html5、程序開發等業務。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當客戶,還把客戶視為我們的合作伙伴,在開展業務的過程中,公司還積累了豐富的行業經驗、成都全網營銷資源和合作伙伴關系資源,并逐漸建立起規范的客戶服務和保障體系。
DR(直接路由)是三種負載均衡模式其中之一,也是使用最多的一種模式,關于該模式的介紹,可以參考博文:https://blog.51cto.com/14227204/2436891
環境如下:
1、所有web節點和調度器都配置上VIP:客戶端訪問VIP(群集的虛擬IP地址)時,若是
調度器將請求轉發給web節點,然后由web節點直接去響應客戶端,那么客戶端在收到
數據包后,發現收到的數據包源地址不是200.0.0.254,那么就會直接丟棄web云服務器返回
的數據包,為了解決這一問題,所以需要在所有web節點和調度器的虛接口上配置上200.0.0.254
這個地址,并且通過添加一條路由,將訪問VIP的數據限制在本地,以避免通信紊亂。
.
2、解決關于web節點ARP響應的問題:在所有web節點和調度器上配置上200.0.0.254
這個地址后,當client訪問200.0.0.254這個地址時,所有的web節點都有這個地址,所以
都會去進行ARP響應,那么這樣一來,可能就造成了client略過調度器直接去訪問web節點
了,這樣一來,調度器就沒有存在的意義了,自然也就達不到負載均衡的效果了,所以需要
關閉web節點的部分ARP應答,在廣播200.0.0.254這個地址時,只讓調度器去響應,web
節點不響應該廣播。
.
3、解決調度器內核自帶的ICMP的重定向優化問題:Linux內核有一個ICMP優化功能,
就是在client第一次訪問調度器時,調度器會將請求轉發給某一個web節點,在這時,Linux
自帶的ICMP優化功能會發現,客戶端可以直接和web節點通信,然后就會發送一個數據
包,告訴client,之后所有訪問200.0.0.254的數據包,直接發給那個web節點即可,這樣之
后所有的訪問請求都將直接發送給某一個web節點,而不再經過調度器,這樣肯定也是不可
以的,無法達到負載均衡的效果了。所以需要關閉Linux內核的ICMP重定向參數響應。
準備工作:
1、自行配置除 VIP 以外的地址
2、準備相關軟件包
配置如下:
一、配置負載調度器:
采用虛接口的方式為網卡 ens33 綁定 VIP 地址,以便響應群集訪問。
[root@localhost /]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0 # 修改ens33:0,配置VIP
....................
IPADDR=200.0.0.254 # 修改如下四條,注意網卡名稱一致
NETMASK=255.255.255.0
NAME=ens33:0
DEVICE=ens33:0
....................
[root@localhost network-scripts]# ifup ens33:0 # 啟動虛接口
[root@localhost network-scripts]# ifconfig ens33:0 # 查看相關配置是否成功
ens33:0: flags=4163 mtu 1500
inet 200.0.0.254 netmask 255.255.255.0 broadcast 200.0.0.255
ether 00:0c:29:f1:61:28 txqueuelen 1000 (Ethernet)
root@localhost network-scripts]# ifconfig
ens33: flags=4163 mtu 1500
inet 200.0.0.1 netmask 255.255.255.0 broadcast 200.0.0.255
inet6 fe80::595f:84d:a379:7b6e prefixlen 64 scopeid 0x20
調整/proc響應參數(關閉 Linux 內核的重定向參數響應):
[root@localhost /]# 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@localhost /]# sysctl -p # 刷新配置使之生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
配置負載均衡策略:
[root@localhost /]# modprobe ip_vs # 加載 ip_vs 模塊
[root@localhost /]# yum -y install ipvsadm # 安裝 ipvsadm 工具
[root@localhost /]# ipvsadm -C # 清除原有策略
[root@localhost /]# ipvsadm -A -t 200.0.0.254:80 -s rr # 配置群集VIP及添加相關節點
[root@localhost /]# ipvsadm -a -t 200.0.0.254:80 -r 200.0.0.2:80 -g -w 1
[root@localhost /]# ipvsadm -a -t 200.0.0.254:80 -r 200.0.0.3:80 -g -w 1
[root@localhost /]# ipvsadm-save # 保存策略
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 200.0.0.2:http -g -w 1
-a -t localhost.localdomain:http -r 200.0.0.3:http -g -w 1
[root@localhost /]# ipvsadm-save > /etc/sysconfig/ipvsadm # 導出以備份
[root@localhost /]# ipvsadm -ln # 確認群集當前策略
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節點服務器:
y因為 web 節點服務器的VIP地址僅用來發送web響應數據包的源地址,并不需要監聽客戶機的訪問請求(由調度器監聽并分發)。因此使用虛接口lo:0來承載VIP地址,并添加一條路由記錄,將訪問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 # 編輯此文件
.................
DEVICE=lo:0 # 切記修改網卡名稱
IPADDR=200.0.0.254 # 配置 VIP
NETMASK=255.255.255.255 # 子網掩碼需全為1
ONBOOT=yes
[root@web1 network-scripts]# ifup lo:0 # 啟動虛接口
[root@web1 network-scripts]# ifconfig lo:0 # 確認以生效
lo:0: flags=73 mtu 65536
inet 200.0.0.254 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
[root@web1 /]# route add -host 200.0.0.254 dev lo:0 # 添加 VIP 本地訪問路由
[root@web1 /]# route -n
200.0.0.254 0.0.0.0 255.255.255.255 UH 0 0 0 lo
[root@web1 /]# vim /etc/rc.local #設置為開機自動添加此條路由
/sbin/route add -host 200.0.0.254 dev lo:0
調整 /proc 響應參數:
[root@web1 /]# vim /etc/sysctl.conf
................
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
安裝 httpd 并創建測試網頁:
[root@web1 /]# yum -y install httpd # 安裝httpd
[root@web1 /]# echo test1.com > /var/www/html/index.html # 創建測試文件
[root@web1 /]# systemctl start httpd
[root@web1 /]# systemctl enable httpd
重復以上步驟,配置其他節點服務器,一樣的虛接口,一樣的/proc,一樣的httpd(為了方便驗證是否成功,這里我將另一個首頁文件改為了test2.com)
若訪問到的是同一頁面,在排除配置上錯誤的情況下,可以打開多個網頁,或者稍等一會再刷新,因為它可能有一個保持連接的時間,所以會存在延遲
四、配置NFS共享存儲:
看了以上關于DR(直接路由)模式負載均衡配置詳細介紹,如果大家還有什么地方需要了解的可以在創新互聯行業資訊里查找自己感興趣的或者找我們的專業技術工程師解答的,創新互聯技術工程師在行業內擁有十幾年的經驗了。