公司官網打開慢,優化服務器負載均衡解決方案
隨著公司產品業務(wu)(wu)(wu)的(de)推(tui)廣(guang)發展壯(zhuang)大,對服(fu)務(wu)(wu)(wu)器(qi)的(de)硬件(jian)性(xing)能、相應速度(du)、服(fu)務(wu)(wu)(wu)穩定性(xing)、數(shu)據可(ke)靠性(xing)的(de)要(yao)求(qiu)越來越高。今后服(fu)務(wu)(wu)(wu)器(qi)的(de)負載將難以(yi)承受所(suo)有的(de)訪問。從公司的(de)實際情況(kuang),運營成本網絡安全性(xing)考慮,排除使用(yong)價(jia)格昂貴的(de)大型服(fu)務(wu)(wu)(wu)器(qi)、以(yi)及部(bu)署(shu)價(jia)格高昂的(de)專(zhuan)用(yong)負載均衡(heng)設備。
DNS輪詢負載均衡(heng)解決(jue)方(fang)案雖然(ran)成本低廉但(dan)是(shi)安全性(xing)能(neng)不是(shi)很好,加上公(gong)司產(chan)品的(de)(de)特殊性(xing)需要用(yong)戶(hu)(hu)驗證(zheng)(zheng)的(de)(de)體系,在(zai)會(hui)話(hua)保(bao)持(chi)方(fang)面(mian)是(shi)一大缺(que)陷,會(hui)話(hua)保(bao)持(chi),如果是(shi)需要身份驗證(zheng)(zheng)的(de)(de)網站(zhan),在(zai)不修改(gai)軟件構架的(de)(de)情況下,這點(dian)是(shi)比較致命的(de)(de),因為DNS解析(xi)無(wu)(wu)法將驗證(zheng)(zheng)用(yong)戶(hu)(hu)的(de)(de)訪問持(chi)久(jiu)分(fen)配到(dao)同 一服務(wu)器(qi)。雖然(ran)有(you)一定的(de)(de)本地(di)DNS緩存,但(dan)是(shi)很難保(bao)證(zheng)(zheng)在(zai)用(yong)戶(hu)(hu)訪問期間(jian),本地(di)DNS不過期,而(er)重新(xin)查詢服務(wu)器(qi)并(bing)指向新(xin)的(de)(de)服務(wu)器(qi),那么原服務(wu)器(qi)保(bao)存的(de)(de)用(yong)戶(hu)(hu)信息 是(shi)無(wu)(wu)法被(bei)帶到(dao)新(xin)服務(wu)器(qi)的(de)(de),而(er)且可能(neng)要求被(bei)重新(xin)認證(zheng)(zheng)身份,來回切換時間(jian)長了各臺服務(wu)器(qi)都保(bao)存有(you)用(yong)戶(hu)(hu)不同的(de)(de)信息,對服務(wu)器(qi)資源也是(shi)一種浪費。
企業還有另一種選擇解決難(nan)題,構建集群服務(wu)器----通過整合多臺(tai)相對低廉的(de)(de)普通服務(wu)器,以同一個地址對外(wai)提供相同的(de)(de)服務(wu)。LVS負載(zai)均衡集群解決方案是目前企業最(zui)常見運用范圍最(zui)廣的(de)(de)一種集群技術。
一、Web服務集群負載均衡理論思路
負(fu)(fu)載(zai)(zai)均(jun)衡的(de)思路下多臺(tai)(tai)服(fu)(fu)務(wu)(wu)(wu)器為對(dui)稱(cheng)方(fang)(fang)式,每臺(tai)(tai)服(fu)(fu)務(wu)(wu)(wu)器都(dou)具(ju)備等價的(de)地位,都(dou)可(ke)以單獨對(dui)外提供服(fu)(fu)務(wu)(wu)(wu)而無須其它服(fu)(fu)務(wu)(wu)(wu)器的(de)輔助。然后通過某種負(fu)(fu)載(zai)(zai)分(fen)(fen)擔技(ji)術(shu)(shu),將(jiang)外部發送(song)來(lai)的(de)請求均(jun)勻分(fen)(fen)配到對(dui)稱(cheng)結構中(zhong)的(de)某一(yi)臺(tai)(tai)服(fu)(fu)務(wu)(wu)(wu)器上,而接(jie)收到請求的(de)服(fu)(fu)務(wu)(wu)(wu)器都(dou)獨立響應客戶機的(de)請求。由于(yu)建立內(nei)容完全(quan)一(yi)致的(de)Web服(fu)(fu)務(wu)(wu)(wu)器并不(bu)復(fu)雜,可(ke)以使用服(fu)(fu)務(wu)(wu)(wu)器同步(bu)更新(xin)或者共享存儲空間等方(fang)(fang)法來(lai)完成,因此(ci)負(fu)(fu)載(zai)(zai)均(jun)衡技(ji)術(shu)(shu)就成為建立一(yi)個高負(fu)(fu)載(zai)(zai)Web站點的(de)關鍵性技(ji)術(shu)(shu)。
二、公司外網服務器的網絡環境及工作模式的選擇
Lvs負載均衡的工作模式(shi)一共有(you)三種,分別是
1、network address translation地址(zhi)轉(zhuan)換模式(shi) ;
2、ip tunnel IP隧道模式 ;
3、direct routing直接路(lu)由模式。
這3種(zhong)工作模(mo)(mo)式(shi)(shi)中,NAT模(mo)(mo)式(shi)(shi)只需要一個(ge)公網ip,成(cheng)為最簡(jian)易(yi)的負載(zai)均衡模(mo)(mo)式(shi)(shi),安全性比較好,相(xiang)對(dui)而(er)言DR模(mo)(mo)式(shi)(shi)的負載(zai)能(neng)力(li)更為強大、適用范圍更廣。下(xia)面(mian)我(wo)們對(dui)DR工作模(mo)(mo)式(shi)(shi)進(jin)行(xing)具體(ti)的研究(jiu);
DR工(gong)作(zuo)模式(shi)采用(yong)半開放式(shi)的(de)網(wang)(wang)絡結構,各(ge)節(jie)點服務(wu)(wu)器(qi)(qi)與調(diao)度(du)(du)(du)器(qi)(qi)處在(zai)同一(yi)個物理網(wang)(wang)絡,負載均衡調(diao)度(du)(du)(du)器(qi)(qi)與各(ge)節(jie)點服務(wu)(wu)器(qi)(qi)使用(yong)本地(di)網(wang)(wang)絡相(xiang)連(lian),客(ke)戶端請求訪問會請求調(diao)度(du)(du)(du)器(qi)(qi)的(de)虛擬IP地(di)址,服務(wu)(wu)器(qi)(qi)響(xiang)(xiang)應不經(jing)過(guo)調(diao)度(du)(du)(du)器(qi)(qi),直接(jie)響(xiang)(xiang)應客(ke)戶端。
DirectRouting 工(gong)作模式客戶端請求(qiu)及服務器響(xiang)應(ying)流程(cheng)
基(ji)于DR模式的(de)LVS負載均衡集群的(de)網絡架構(gou)
三、操作流程及實施步驟
針對公司部署的實際情況我(wo)們可以DR直接路由的工作模(mo)式為實施方案,
具體操作(zuo)步驟流程如下:
LVS現在已成(cheng)為(wei)Linux內核的一部(bu)分(fen),默(mo)認編譯為(wei)ip_vs模(mo)(mo)塊(kuai),必要時能夠自動調用。以下(xia)操作可以手動加載ip_vs模(mo)(mo)塊(kuai),并(bing)查看當前(qian)系(xi)統中ip_vs模(mo)(mo)塊(kuai)的版本信息
modprobe ip_vs
//加載ip_vs模塊,
- cat /proc/net/ip_vs
//查(cha)看ip_vs版本信息
---安(an)裝管理(li)軟(ruan)件------
- rpm -ivh /mnt/Packages/ipvsadm-1.25-9.el6.i686.rpm
- service ipvsadm start
//啟動服務
以(yi)上(shang)這些操(cao)作在調度服務器(qi)上(shang)做(zuo)一下就好了,節點服務器(qi)不用安裝這些的
———————————————————————————————————
-----常用(yong)命令(ling)的解釋如下:------
LVS的負載調度算法有四種(zhong)最(zui)常(chang)用的:輪(lun)(lun)詢(xun)算法(rr)、加權輪(lun)(lun)詢(xun)(wrr)、最(zui)少輪(lun)(lun)詢(xun)(lc)、加權最(zui)少輪(lun)(lun)詢(xun)(wlc)
1)創建虛擬(ni)服務器
群集的(de)(de)VIP地(di)址為192.168.0.14,針對TCP 80端口(kou)提供負載(zai)分(fen)流服務,使用的(de)(de)輪詢(xun)調(diao)度(du)算(suan)法(fa)。對于負載(zai)均衡(heng)調(diao)度(du)器來說,VIP必須是本(ben)機實際已啟用的(de)(de)IP地(di)址
ipvsadm -A -t 192.168.0.14:80 -s rr
//選項(xiang) "-A"表示(shi)添(tian)加虛擬服務器,"-t"用來(lai)(lai)指定VIP地址及TCP端口,"-s"用來(lai)(lai)指定負載調度算(suan)法——rr、wrr、lc、wlc
2)添加服務器節點
- 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"表示添加真實服務(wu)器,"-t"用(yong)來指定(ding)VIP地(di)址及TCP端口(kou),"-r"用(yong)來指定(ding)RIP地(di)址及TCP端口(kou),"-m"表示使用(yong)NAT群集(ji)模式("-g"是DR模式,"-i"是TUN模式)
{ -m參數后面還可以跟下-w的(de)參數,這里(li)沒有做的(de)"-w"用(yong)來(lai)設置權(quan)重(權(quan)重為0時表示暫停節點)}
4)刪除服務器節點
- ipvsadm -d -r 192.168.0.14:80 -t 192.168.0.12:80
//需(xu)要(yao)從服務器池中刪除(chu)某一個節(jie)(jie)點時,使用選項"-d"。執行刪除(chu)操作必須指(zhi)定目標對(dui)象,包括節(jie)(jie)點地(di)址、虛擬IP地(di)址。如(ru)上所示(shi)的操作將會刪除(chu)LVS群集192.168.0.14中的節(jie)(jie)點192.168.0.12
若需(xu)要刪除整(zheng)個虛(xu)(xu)擬(ni)(ni)服務(wu)(wu)器時,使用選項-D并指定虛(xu)(xu)擬(ni)(ni)IP地址即可,無(wu)需(xu)要指定節(jie)點。例如(ru):“ipvsadm -D -t 172.16.16.172.24:80",則刪除此虛(xu)(xu)擬(ni)(ni)服務(wu)(wu)器。
- ipvsadm -L
- //
- 查看節點狀態,加個
- "-n"
- 將以數(shu)字形式顯示(shi)地址、端口信息(xi)
- ipvsadm-save > /etc/sysconfig/ipvsadm
- //
- 保(bao)存策略
使用導(dao)(dao)出/導(dao)(dao)入工(gong)具ipvsadm-save/ipvsadm-restore可以保存(cun)、恢復LVS策略,方法(fa)類似(si)于iptables的規則的導(dao)(dao)出、導(dao)(dao)入。
四、腳本化操作實施步驟
------DR模式調度(du)器配置------(調度(du)器與各服務(wu)器之間(jian)要用的都用腳本的形(xing)式)
- 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模式(shi)各(ge)服務(wu)器配置------
- 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提供(gong)共(gong)享(xiang)存儲(chu)空(kong)間和一致的數據(ju)內容(rong)
-------NFS服務器安裝-----
yum install nfs-utils
//nfs在(zai)裝的(de)時候(hou)會(hui)有“rpcbind”這(zhe)個依賴包的(de)
service rpcbind start
//在(zai)啟(qi)動nfs服(fu)務之前先(xian)要啟(qi)動這個(ge)"rpcbind"服(fu)務
service nfs restart
//nfs是(shi)"111"的(de)端(duan)口
---編輯配置文件----
vi /etc/exports
//NFS的配置(zhi)文(wen)(wen)件為/etc/exports,文(wen)(wen)件內容默認(ren)為空(無任何共享)。
/usr/share *(ro,sync)
/opt/test 192.168.80.22(rw,sync)
//將(jiang)文(wen)件夾(jia)/opt/test共享給192.168.80.22網段使用,允(yun)許讀寫(xie)操作。“sync”表示同步寫(xie)入。
注(zhu):rw表(biao)示(shi)允(yun)許讀寫(ro表(biao)示(shi)為只讀),sync表(biao)示(shi)同步寫入,no_root_squash表(biao)示(shi)當客(ke)戶機以root身份(fen)訪問時賦予本地(di)root權(quan)限(默認是root_squash,將作(zuo)為nfsnobody用戶降(jiang)權(quan)對待)
--發布共享---
exportfs -rv
---客戶(hu)端查看、掛載----
//掛載
NFS協議的目標是(shi)提(ti)供一(yi)種網絡文件系統,因此對NFS共(gong)享的訪問也使用mount命令來進(jin)行掛載,對應的文件系統類型為nfs。
若要(yao)正常訪問NFS共享資源(yuan),客戶機中(zhong)也需要(yao)安裝rpcbind軟(ruan)件(jian)包,并(bing)啟動rpcbind系(xi)統服(fu)務;另外,為了使用(yong)showmount查(cha)詢工具,建議將nfs-utils軟(ruan)件(jian)包也一并(bing)裝上。
六、驗證
1、負(fu)載均(jun)衡驗證
192.168.0.12、192.168.0.13 為web服務器(qi)
192.168.0.11 為負載均衡調度器
192.168.0.14 為VIP 是負載均衡調度(du)器虛擬出來的ip地(di)址
客戶(hu)端(duan)用戶(hu)即是(shi)通過訪問192.168.0.14VIP這個虛擬(ni)地址獲得整個由多個物理機服(fu)務(wu)(wu)器(qi)組成的服(fu)務(wu)(wu)器(qi)池提供的同一種web服(fu)務(wu)(wu)。
下(xia)面來模擬客戶(hu)端用戶(hu)訪問web服務
第一次登陸(lu)192.168.0.14
關(guan)掉頁面重(zhong)新登陸192.168.0.14
由此(ci)發現lvs調度已經(jing)開始工作,把(ba)客戶端的請(qing)求均(jun)勻的分發到各個服(fu)務器上。
2、共(gong)享存儲數據同(tong)步一致性驗證
各節點服(fu)務(wu)器掛載共(gong)享存儲的共(gong)享目(mu)錄(lu),修改的內容將在(zai)這個服(fu)務(wu)器集群中同(tong)步開。
