全局服务器负载均衡(GSLB)简介(牢固树立全局观念的几点思考)
引言
在過去的幾年中,隨著互聯(lián)網(wǎng)的快速發(fā)展和企業(yè)應(yīng)用WEB化,服務(wù)器負(fù)載均衡(SLB)技術(shù)已經(jīng)不再陌生。
服務(wù)器負(fù)載均衡根據(jù)用戶數(shù)據(jù)請求中的4-7層信息將其智能轉(zhuǎn)發(fā)到后端少則數(shù)臺多則成百上千臺應(yīng)用服務(wù)器,
并且確保根據(jù)事先定義的策略選擇最佳的服務(wù)器進(jìn)行轉(zhuǎn)發(fā),從而一定程度上解決了應(yīng)用的可用性、擴(kuò)展性等問題。
但是,隨著用戶對應(yīng)用可用性和擴(kuò)展性需求的進(jìn)一步增加,越來越多的用戶不滿足于在單一數(shù)據(jù)中心提供服務(wù),開始考慮容災(zāi)、用戶就近訪問等問題。
這正是負(fù)載均衡設(shè)備中的全局服務(wù)器負(fù)載均衡技術(shù)(GSLB)所要解決的問題。盡管GSLB技術(shù)早在數(shù)年前就是大部分負(fù)載均衡設(shè)備提供的必備功能,
但由于用戶需求較小、功能不夠完善、性能不足、價(jià)格高昂等因素,目前部署GSLB的用戶在負(fù)載均衡整個(gè)用戶群中所占比例還是很小。相信在未來幾年中,GSLB的應(yīng)用比例將快速增加。
本文針對GSLB相關(guān)技術(shù)及解決方案進(jìn)行介紹。
GSLB技術(shù)
市場上存在的GSLB技術(shù)可以歸納為以下幾類:
基于DNS的GSLB
絕大部分使用負(fù)載均衡技術(shù)的應(yīng)用都通過域名來訪問目的主機(jī),在用戶發(fā)出任何應(yīng)用連接請求時(shí),首先必須通過DNS請求獲得服務(wù)器的IP地址,基于DNS的GSLB正是在返回DNS解析結(jié)果的過程中進(jìn)行智能決策,
給用戶返回一個(gè)最佳的服務(wù)IP。用戶應(yīng)用流程與沒有GSLB時(shí)未發(fā)生任何變化。這也是市場上主流的GSLB技術(shù)。
基于應(yīng)用重定向的GSLB
基于應(yīng)用重定向的GSLB是在負(fù)載均衡設(shè)備收到用戶應(yīng)用請求并選擇最佳服務(wù)IP后,通過應(yīng)用層協(xié)議將用戶請求重定向到所選擇的最佳服務(wù)IP。這種方式只適用于支持應(yīng)用重定向的協(xié)議(如HTTP、MMS),且性能較差。
基于IP地址偽裝(三角傳輸)的GSLB
有個(gè)別負(fù)載均衡設(shè)備廠商采用這種技術(shù)來實(shí)現(xiàn)GSLB。當(dāng)用戶應(yīng)用請求到達(dá)一臺負(fù)載均衡設(shè)備時(shí),這臺負(fù)載均衡設(shè)備計(jì)算出對于該用戶最佳的服務(wù)IP(定義在另一臺同一廠商負(fù)載均衡設(shè)備上)并將用戶請求轉(zhuǎn)發(fā)給該IP。
第二臺負(fù)載均衡設(shè)備直接將響應(yīng)返回用戶,但必須將源地址修改為第一臺負(fù)載均衡設(shè)備的服務(wù)IP。這種方式要求所有站點(diǎn)必須為同一廠家的負(fù)載均衡設(shè)備,另外地址偽裝的數(shù)據(jù)包會可能被互聯(lián)網(wǎng)中的路由設(shè)備過濾掉。
因?yàn)樗杏脩粽埱蠖家?jīng)過廣域網(wǎng)三角方式傳輸而不是發(fā)到最佳的負(fù)載均衡設(shè)備,用戶訪問效果和性能都比較差。
基于主機(jī)路由注入的GSLB(Anycast)
在多個(gè)站點(diǎn)定義相同的服務(wù)IP,并由負(fù)載均衡設(shè)備或路由器將該IP的主機(jī)路由發(fā)送出去,這樣網(wǎng)絡(luò)中會存在多條到達(dá)該主機(jī)地址的路由。由于路由設(shè)備總是選擇最近(Metric最小)的路由轉(zhuǎn)發(fā)數(shù)據(jù),
用戶的訪問請求總是被轉(zhuǎn)發(fā)到最近的負(fù)載均衡設(shè)備。這種方式要在不同站點(diǎn)廣播相同的主機(jī)路由,由于運(yùn)營商的限制問題很難實(shí)現(xiàn)。另外這種方式策略非常簡單,只能根據(jù)最短路由選擇,客戶無法定義靈活的選擇策略。
根據(jù)上面的分析,后面的三種方式都有很多局限性或性能較差,這也是為什么基于DNS的GSLB成為主流技術(shù)的原因。在基于DNS的GSLB具體實(shí)現(xiàn)中,不同廠家的功能會有所不同,也有部分用戶自己開發(fā)智能DNS實(shí)現(xiàn)類似功能。
總體來說,一個(gè)完善的基于DNS的GSLB設(shè)備可以滿足以下需求:
支持任何IP應(yīng)用。
各服務(wù)站點(diǎn)可以使用不同廠家的本地服務(wù)器負(fù)載均衡設(shè)備或直接使用真實(shí)服務(wù)器。
GSLB控制設(shè)備可直接作為授權(quán)DNS,也可以配置為DNS代理方式。DNS代理方式在做GSLB決策控制同時(shí)可以對后端DNS服務(wù)器進(jìn)行負(fù)載均衡。當(dāng)業(yè)務(wù)量增加時(shí)可以通過增加后端的真實(shí)DNS服務(wù)器數(shù)量進(jìn)行擴(kuò)展。
內(nèi)置國際IANA機(jī)構(gòu)提供的全球各區(qū)域地址分配表,且用戶自定義區(qū)域可以包含足夠多的IP前綴。同時(shí)區(qū)域定義支持樹狀分層結(jié)構(gòu),如China.Beijing.HaiDian。這些功能在GSLB控制設(shè)備進(jìn)行靜態(tài)基于區(qū)域選擇服務(wù)站點(diǎn)時(shí)是必須的。
支持返回A記錄和CNAME等記錄。尤其在多級GSLB控制時(shí),返回CNAME是必須具備的。
支持豐富的GSLB策略,常見的如往返時(shí)間(RTT)、權(quán)重、活動服務(wù)器等。
具有靈活的自定義腳本用于過濾各種非法DNS請求或攻擊。
強(qiáng)大的DDoS攻擊防護(hù)功能。一旦GSLB控制設(shè)備被攻擊癱瘓,所有業(yè)務(wù)都無法提供。
基于DNS的GSLB工作原理
下面我們對基于DNS的GSLB的工作原理進(jìn)行簡單介紹。
上圖中,中心控制節(jié)點(diǎn)配置一臺GSLB Controller及數(shù)臺指定域名(abc.com)的授權(quán)DNS服務(wù)器,GSLB Controller除了進(jìn)行GSLB控制外還可以對DNS服務(wù)器及其他應(yīng)用服務(wù)器進(jìn)行負(fù)載均衡。
設(shè)置2個(gè)站點(diǎn)(以中國電信和中國網(wǎng)通為例)提供應(yīng)用服務(wù)。其工作流程如下:
1) 用戶發(fā)起請求訪問http://www.abc.com,關(guān)于www.abc.com 的DNS請求被送往 Local DNS服務(wù)器;
2) Local DNS通過根DNS服務(wù)器查詢到abc.com 的授權(quán)DNS服務(wù)器,Local DNS向授權(quán)DNS服務(wù)器發(fā)DNS請求。
3) GSLB Controller 截獲DNS服務(wù)器返回的應(yīng)答,并基于一組策略選擇最佳的站點(diǎn)VIP 地址,返回給Local DNS服務(wù)器。
GSLB Controller也可以根據(jù)事先定義的策略返回CNAME記錄,在大規(guī)模的多級GSLB設(shè)計(jì)中會用到這種方式。Local DNS會遞歸發(fā)送DNS請求到負(fù)責(zé)指定CNAME域的下一級GSLB Controller。
4) Local DNS服務(wù)器返回該DNS應(yīng)答到用戶。
5) 用戶根據(jù)解析到的IP地址建立連接進(jìn)行正常訪問。
從GSLB處理流程可以看出,其核心在GSLB策略。接下來簡單介紹一下常用的一些GSLB策略。
1) 各內(nèi)容站點(diǎn)的“健康狀況”
GSLB Controller對各內(nèi)容站點(diǎn)負(fù)載均衡設(shè)備上定義的VIP或服務(wù)器(沒有本地負(fù)載均衡的情況)進(jìn)行第四層TCP/UDP健康檢查和第七層應(yīng)用健康檢查。未能通過健康檢查的站點(diǎn)不會被選為最佳的內(nèi)容節(jié)點(diǎn)。
2) 地理區(qū)域或用戶自定義區(qū)域
一個(gè)區(qū)域?yàn)槿舾蓷lIP地址前綴。根據(jù)用戶本地DNS的IP地址,將特定IP范圍的用戶優(yōu)先分配到某個(gè)通過健康檢查的站點(diǎn)。值得一提的是,由于DNS本身的工作原理所限,GSLB Controller只能看到用戶本地DNS的IP地址,
而不是用戶終端的IP地址。當(dāng)用戶使用錯(cuò)誤的本地DNS(如教育網(wǎng)用戶配置網(wǎng)通的DNS服務(wù)器)時(shí),GSLB Controller返回的DNS應(yīng)答將不是最佳的站點(diǎn)。這是基于DNS的GSLB的一個(gè)弱點(diǎn),
但由于絕大部分運(yùn)營商現(xiàn)在限制其他運(yùn)營商的客戶使用自己的DNS,出現(xiàn)這種錯(cuò)誤配置的比例非常小。
3) IP地址權(quán)重
可以為DNS應(yīng)答中的每個(gè)IP地址分配權(quán)重,權(quán)重決定與其他候選IP相比分配到該IP的流量比例。
4) 站點(diǎn)(Site)權(quán)重
可以為每個(gè)Site分配權(quán)重,權(quán)重決定與其他候選Site相比分配到該Site的流量比例。
5) 會話能力閾值
通過廠商自由的GSLB協(xié)議,GSLB Controller可以獲得每個(gè)站點(diǎn)負(fù)載均衡設(shè)備當(dāng)前可用會話數(shù)和會話表大小的最大值,當(dāng)前會話數(shù)/最大會話數(shù)比值超過定義的閾值時(shí),該站點(diǎn)不再被選擇。
6) 活動服務(wù)器
指一個(gè)GSLB節(jié)點(diǎn)綁定到一個(gè)VIP上的活動真實(shí)服務(wù)器數(shù)量。可以配置策略優(yōu)先選擇活動服務(wù)器最多的IP地址。
7) 往返時(shí)間(RTT)
RTT策略是基于區(qū)域之外最常用的策略。有兩種模式的RTT測量:Active RTT測量與Passive RTT測量。在實(shí)際部署中,由于網(wǎng)絡(luò)限制和性能原因,Active RTT往往無法使用,Passive RTT更實(shí)用一些。
a) Active RTT 測量
– 當(dāng)GSLB Controller收到來自LDNS的DNS請求時(shí),GSLB Controller會通知所有站點(diǎn)負(fù)載均衡設(shè)備對該LDNS進(jìn)行RTT測量。根據(jù)采集到的RTT值,GSLB Controller會選擇RTT值最小的站點(diǎn)的VIP返回給LDNS。
– 由于Active RTT采用DNS Query或ICMP進(jìn)行RTT測量,在有些網(wǎng)絡(luò)中可能會被安全策略所過濾而無法工作。
– Active RTT測量會產(chǎn)生額外的DNS Query或ICMP流量,在有些網(wǎng)絡(luò)中用戶不希望有太多類似的非用戶流量。
b) Passive RTT測量
– Passive RTT測量不會主動去進(jìn)行測量,也不會產(chǎn)生額外的數(shù)據(jù)流量,而是在用戶向返回的VIP建立連接時(shí)進(jìn)行采集。
– Passive RTT測量指從內(nèi)容站點(diǎn)收到一個(gè)用戶發(fā)出連接請求(發(fā)送TCN SYN)到接收到用戶的確認(rèn)(收到TCP ACK)所經(jīng)歷的時(shí)間。而不是簡單的PING的響應(yīng)時(shí)間,可以更精確的衡量訪問最快的站點(diǎn)。
– Passive RTT的測量值真正反映了用戶的上網(wǎng)感受 ,在運(yùn)營商網(wǎng)絡(luò)中也不會產(chǎn)生額外流量。也不會受到其他運(yùn)營商或網(wǎng)絡(luò)的安全策略的影響。
與基于區(qū)域的策略相同,用戶配置錯(cuò)誤的DNS時(shí),基于RTT的選擇也將不是最佳的。
8) 當(dāng)前可用會話數(shù)
9) 站點(diǎn)管理優(yōu)先級(Admin Preference)
為每個(gè)站點(diǎn)預(yù)設(shè)優(yōu)先級,選擇優(yōu)先級較高的站點(diǎn)。
10) 最少選擇
選擇從前被選擇的次數(shù)最少的節(jié)點(diǎn)。
11) 輪詢(Round Robin)
采用輪詢方式選擇站點(diǎn)。
總結(jié)
盡管基于DNS的GSLB在特殊情況下(用戶配置錯(cuò)誤DNS)準(zhǔn)確性會降低,但其豐富的策略、可擴(kuò)展的性能、適用任何IP應(yīng)用協(xié)議、不受互聯(lián)網(wǎng)訪問策略影響以及無改變的業(yè)務(wù)流程等優(yōu)勢使其成為最主流的GSLB技術(shù),
諸多廠家也都在這一技術(shù)上不斷進(jìn)行完善。
總結(jié)
以上是生活随笔為你收集整理的全局服务器负载均衡(GSLB)简介(牢固树立全局观念的几点思考)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习实验中的编程技术(part1)-
- 下一篇: 机器学习实验中的编程技术(part2)-