公司官網(wǎng)打開慢,優(yōu)化服務(wù)器負(fù)載均衡解決方案
隨著公司產(chǎn)品業(yè)務(wù)的推廣發(fā)展壯大,對服務(wù)器的硬件性能、相應(yīng)速度、服務(wù)穩(wěn)定性、數(shù)據(jù)可靠性的要求越來越高。今后服務(wù)器的負(fù)載將難以承受所有的訪問。從公司的實際情況,運營成本網(wǎng)絡(luò)安全性考慮,排除使用價格昂貴的大型服務(wù)器、以及部署價格高昂的專用負(fù)載均衡設(shè)備。
DNS輪詢負(fù)載均衡解決方案雖然成本低廉但是安全性能不是很好,加上公司產(chǎn)品的特殊性需要用戶驗證的體系,在會話保持方面是一大缺陷,會話保持,如果是需要身份驗證的網(wǎng)站,在不修改軟件構(gòu)架的情況下,這點是比較致命的,因為DNS解析無法將驗證用戶的訪問持久分配到同 一服務(wù)器。雖然有一定的本地DNS緩存,但是很難保證在用戶訪問期間,本地DNS不過期,而重新查詢服務(wù)器并指向新的服務(wù)器,那么原服務(wù)器保存的用戶信息 是無法被帶到新服務(wù)器的,而且可能要求被重新認(rèn)證身份,來回切換時間長了各臺服務(wù)器都保存有用戶不同的信息,對服務(wù)器資源也是一種浪費。
企業(yè)還有另一種選擇解決難題,構(gòu)建集群服務(wù)器----通過整合多臺相對低廉的普通服務(wù)器,以同一個地址對外提供相同的服務(wù)。LVS負(fù)載均衡集群解決方案是目前企業(yè)最常見運用范圍最廣的一種集群技術(shù)。
一、Web服務(wù)集群負(fù)載均衡理論思路
負(fù)載均衡的思路下多臺服務(wù)器為對稱方式,每臺服務(wù)器都具備等價的地位,都可以單獨對外提供服務(wù)而無須其它服務(wù)器的輔助。然后通過某種負(fù)載分擔(dān)技術(shù),將外部發(fā)送來的請求均勻分配到對稱結(jié)構(gòu)中的某一臺服務(wù)器上,而接收到請求的服務(wù)器都獨立響應(yīng)客戶機的請求。由于建立內(nèi)容完全一致的Web服務(wù)器并不復(fù)雜,可以使用服務(wù)器同步更新或者共享存儲空間等方法來完成,因此負(fù)載均衡技術(shù)就成為建立一個高負(fù)載Web站點的關(guān)鍵性技術(shù)。
二、公司外網(wǎng)服務(wù)器的網(wǎng)絡(luò)環(huán)境及工作模式的選擇
Lvs負(fù)載均衡的工作模式一共有三種,分別是
1、network address translation地址轉(zhuǎn)換模式 ;
2、ip tunnel IP隧道模式 ;
3、direct routing直接路由模式。
這3種工作模式中,NAT模式只需要一個公網(wǎng)ip,成為最簡易的負(fù)載均衡模式,安全性比較好,相對而言DR模式的負(fù)載能力更為強大、適用范圍更廣。下面我們對DR工作模式進(jìn)行具體的研究;
DR工作模式采用半開放式的網(wǎng)絡(luò)結(jié)構(gòu),各節(jié)點服務(wù)器與調(diào)度器處在同一個物理網(wǎng)絡(luò),負(fù)載均衡調(diào)度器與各節(jié)點服務(wù)器使用本地網(wǎng)絡(luò)相連,客戶端請求訪問會請求調(diào)度器的虛擬IP地址,服務(wù)器響應(yīng)不經(jīng)過調(diào)度器,直接響應(yīng)客戶端。
DirectRouting 工作模式客戶端請求及服務(wù)器響應(yīng)流程
基于DR模式的LVS負(fù)載均衡集群的網(wǎng)絡(luò)架構(gòu)
三、操作流程及實施步驟
針對公司部署的實際情況我們可以DR直接路由的工作模式為實施方案,
具體操作步驟流程如下:
LVS現(xiàn)在已成為Linux內(nèi)核的一部分,默認(rèn)編譯為ip_vs模塊,必要時能夠自動調(diào)用。以下操作可以手動加載ip_vs模塊,并查看當(dāng)前系統(tǒng)中ip_vs模塊的版本信息
modprobe ip_vs
//加載ip_vs模塊,
- cat /proc/net/ip_vs
//查看ip_vs版本信息
---安裝管理軟件------
- rpm -ivh /mnt/Packages/ipvsadm-1.25-9.el6.i686.rpm
- service ipvsadm start
//啟動服務(wù)
以上這些操作在調(diào)度服務(wù)器上做一下就好了,節(jié)點服務(wù)器不用安裝這些的
———————————————————————————————————
-----常用命令的解釋如下:------
LVS的負(fù)載調(diào)度算法有四種最常用的:輪詢算法(rr)、加權(quán)輪詢(wrr)、最少輪詢(lc)、加權(quán)最少輪詢(wlc)
1)創(chuàng)建虛擬服務(wù)器
群集的VIP地址為192.168.0.14,針對TCP 80端口提供負(fù)載分流服務(wù),使用的輪詢調(diào)度算法。對于負(fù)載均衡調(diào)度器來說,VIP必須是本機實際已啟用的IP地址
ipvsadm -A -t 192.168.0.14:80 -s rr
//選項 "-A"表示添加虛擬服務(wù)器,"-t"用來指定VIP地址及TCP端口,"-s"用來指定負(fù)載調(diào)度算法——rr、wrr、lc、wlc
2)添加服務(wù)器節(jié)點
- ipvsadm -a -t 192.168.0.14:80 -r 192.168.0.12:80 -m
- ipvsadm -a -t 192.168.0.14:80 -r 192.168.0.13:80 -m
//選項 "-a"表示添加真實服務(wù)器,"-t"用來指定VIP地址及TCP端口,"-r"用來指定RIP地址及TCP端口,"-m"表示使用NAT群集模式("-g"是DR模式,"-i"是TUN模式)
{ -m參數(shù)后面還可以跟下-w的參數(shù),這里沒有做的"-w"用來設(shè)置權(quán)重(權(quán)重為0時表示暫停節(jié)點)}
4)刪除服務(wù)器節(jié)點
- ipvsadm -d -r 192.168.0.14:80 -t 192.168.0.12:80
//需要從服務(wù)器池中刪除某一個節(jié)點時,使用選項"-d"。執(zhí)行刪除操作必須指定目標(biāo)對象,包括節(jié)點地址、虛擬IP地址。如上所示的操作將會刪除LVS群集192.168.0.14中的節(jié)點192.168.0.12
若需要刪除整個虛擬服務(wù)器時,使用選項-D并指定虛擬IP地址即可,無需要指定節(jié)點。例如:“ipvsadm -D -t 172.16.16.172.24:80",則刪除此虛擬服務(wù)器。
- ipvsadm -L
- //
- 查看節(jié)點狀態(tài),加個
- "-n"
- 將以數(shù)字形式顯示地址、端口信息
- ipvsadm-save > /etc/sysconfig/ipvsadm
- //
- 保存策略
使用導(dǎo)出/導(dǎo)入工具ipvsadm-save/ipvsadm-restore可以保存、恢復(fù)LVS策略,方法類似于iptables的規(guī)則的導(dǎo)出、導(dǎo)入。
四、腳本化操作實施步驟
------DR模式調(diào)度器配置------(調(diào)度器與各服務(wù)器之間要用的都用腳本的形式)
- vi dr.sh
- ifconfig eth0:0 192.168.0.14 broadcast 192.168.0.14 netmask 255.255.255.255 up
- route add -host 192.168.0.14 dev eth0:0
- ipvsadm -C
- ipvsadm -A -t 192.168.0.14:80 -s rr
- ipvsadm -a -t 192.168.0.14:80 -r 192.168.0.12:80 -g
- ipvsadm -a -t 192.168.0.14:80 -r 192.168.0.13:80 -g
- ipvsadm
------DR模式各服務(wù)器配置------
- vi web.sh
- ifconfig lo:0 192.168.0.14 broadcast 192.168.0.14 netmask 255.255.255.255 up
- route add -host 192.168.0.14 dev lo:0
- 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 &>/dev/null
- sh dr.sh start
- sh web.sh start
- sh web.sh start
五、Shared Storage(共享存儲):
Shared Storage為所有Real Server提供共享存儲空間和一致的數(shù)據(jù)內(nèi)容
-------NFS服務(wù)器安裝-----
yum install nfs-utils
//nfs在裝的時候會有“rpcbind”這個依賴包的
service rpcbind start
//在啟動nfs服務(wù)之前先要啟動這個"rpcbind"服務(wù)
service nfs restart
//nfs是"111"的端口
---編輯配置文件----
vi /etc/exports
//NFS的配置文件為/etc/exports,文件內(nèi)容默認(rèn)為空(無任何共享)。
/usr/share *(ro,sync)
/opt/test 192.168.80.22(rw,sync)
//將文件夾/opt/test共享給192.168.80.22網(wǎng)段使用,允許讀寫操作!皊ync”表示同步寫入。
注:rw表示允許讀寫(ro表示為只讀),sync表示同步寫入,no_root_squash表示當(dāng)客戶機以root身份訪問時賦予本地root權(quán)限(默認(rèn)是root_squash,將作為nfsnobody用戶降權(quán)對待)
--發(fā)布共享---
exportfs -rv
---客戶端查看、掛載----
//掛載
NFS協(xié)議的目標(biāo)是提供一種網(wǎng)絡(luò)文件系統(tǒng),因此對NFS共享的訪問也使用mount命令來進(jìn)行掛載,對應(yīng)的文件系統(tǒng)類型為nfs。
若要正常訪問NFS共享資源,客戶機中也需要安裝rpcbind軟件包,并啟動rpcbind系統(tǒng)服務(wù);另外,為了使用showmount查詢工具,建議將nfs-utils軟件包也一并裝上。
六、驗證
1、負(fù)載均衡驗證
192.168.0.12、192.168.0.13 為web服務(wù)器
192.168.0.11 為負(fù)載均衡調(diào)度器
192.168.0.14 為VIP 是負(fù)載均衡調(diào)度器虛擬出來的ip地址
客戶端用戶即是通過訪問192.168.0.14VIP這個虛擬地址獲得整個由多個物理機服務(wù)器組成的服務(wù)器池提供的同一種web服務(wù)。
下面來模擬客戶端用戶訪問web服務(wù)
第一次登陸192.168.0.14
關(guān)掉頁面重新登陸192.168.0.14
由此發(fā)現(xiàn)lvs調(diào)度已經(jīng)開始工作,把客戶端的請求均勻的分發(fā)到各個服務(wù)器上。
2、共享存儲數(shù)據(jù)同步一致性驗證
各節(jié)點服務(wù)器掛載共享存儲的共享目錄,修改的內(nèi)容將在這個服務(wù)器集群中同步開。