廣域網(wǎng)負(fù)載均衡原理簡(jiǎn)單介紹
廣域網(wǎng)負(fù)載均衡多鏈路廣域網(wǎng)負(fù)載均衡(1) Inbound 多鏈路負(fù)載均衡算法策略:RTT Topology RoundRobin具體描述:當(dāng)外部用戶訪問九州夢(mèng)網(wǎng)網(wǎng)站時(shí),首先由F5的3DNS 對(duì)客戶端的
廣域網(wǎng)負(fù)載均衡
多鏈路廣域網(wǎng)負(fù)載均衡
(1) Inbound 多鏈路負(fù)載均衡算法策略:RTT Topology RoundRobin
具體描述:
當(dāng)外部用戶訪問九州夢(mèng)網(wǎng)網(wǎng)站時(shí),首先由F5的3DNS 對(duì)客戶端的LDNS 進(jìn)行RTT (Round Trip Time)探測(cè),對(duì)比從兩條鏈路返回的探測(cè)結(jié)果(可以從統(tǒng)計(jì)列表中看到),選擇一條返回值小的鏈路IP 地址返回給客戶端,從而客戶端再發(fā)起訪問請(qǐng)求;當(dāng)F5的3DNS 探測(cè)不到客戶端的LDNS (由于LDNS 安全防護(hù)等原因)時(shí),F(xiàn)5的3DNS 自動(dòng)啟用Topology 算法,來靜態(tài)匹配客戶端的LDNS 地理位置,從而根據(jù)客戶端的來源,返回正確的A 記錄;當(dāng)探測(cè)不到的LDNS 又不在地址列表中時(shí),F(xiàn)5 3DNS自動(dòng)啟用Global Availability 算法作為默認(rèn)算法,將所有無法計(jì)算結(jié)果并且不在Topology 范圍之內(nèi)的LocalDNS 請(qǐng)求,定義到系統(tǒng)的默認(rèn)線路上。
F5 的3DNS 具備二十多種Inbound 算法,可以根據(jù)需要進(jìn)行組合。 ① RTT 算法運(yùn)行機(jī)制:
通過3DNS 的RTT 就近性算法會(huì)自動(dòng)運(yùn)算生成一個(gè)ldns 就近分布表,通過這個(gè)動(dòng)態(tài)的表,每個(gè)客戶上來都會(huì)提供一個(gè)最快速的鏈路進(jìn)行訪問,由于站點(diǎn)有ISP1和ISP2的兩條廣域網(wǎng)線路。在3DNS 上會(huì)針對(duì)站點(diǎn)服務(wù)器(以www.f5.com.cn 為例) 解析ISP1和ISP2的兩個(gè)不同的公網(wǎng)地址。
對(duì)應(yīng)于www.f5.com.cn 域名,在3DNS 上配置wideip :www.f5.com.cn ,對(duì)應(yīng)兩個(gè)Virtual Server:VS1:202.106.83.177,VS2:219.17.66.100。分別屬于ISP1和ISP2兩條線路分配的IP 地址段。在3DNS 內(nèi)部,同時(shí)定義兩個(gè)DataCenter 分別與ISP1和ISP2相對(duì)應(yīng)。
用戶的訪問流程如下:
,訪問的用戶在發(fā)起DNS 請(qǐng)求時(shí)
(1) 首先向其所在運(yùn)營商的Local DNS 發(fā)起www.f5.com.cn 域名的
DNS 請(qǐng)求。步驟2
(2) 運(yùn)營商的Local DNS 服務(wù)器通過遞歸算法查找到工行的主、輔
DNS 服務(wù)器。步驟3和4。
(3) 接受到請(qǐng)求的3DNS 首先查詢?cè)诒镜厥欠裼性揕ocalDNS 的就近
性表項(xiàng),如果存在,則直接給LocalDNS 返回速度最快的服務(wù)器地址。如果不存在,則通知另外一臺(tái)3DNS 發(fā)起對(duì)該LocalDNS 的查詢。步驟5。
(4) 兩臺(tái)3DNS 分別對(duì)LocalDNS 進(jìn)行Probe 。例如ISP1側(cè)3DNS 查
詢?cè)揕ocalDNS 的RTT 時(shí)間為150ms ,而ISP2側(cè)3DNS 查詢同一LocalDNS 的RTT 時(shí)間為300ms ,則此時(shí)在兩臺(tái)3DNS 內(nèi)都形成了該LocalDNS 的對(duì)應(yīng)就近性表記錄。
(5) 接受到LocalDNS 請(qǐng)求得3DNS 根據(jù)系統(tǒng)的就近性表返回相應(yīng)的
DataCenter 內(nèi)的WEB 服務(wù)器地址。步驟6。
(6) 在用戶LocalDNS 獲得地址后,將該地址返回給用戶。步驟7
(7) 用戶向www.f5.com.cn 網(wǎng)站發(fā)起訪問。步驟8。
,通過以上流程可以看出,通過動(dòng)態(tài)計(jì)算方式,可以最為準(zhǔn)確的估算出用戶LocalDNS 與兩條線路之間的速度。通過3DNS 之間的信息交互,在兩臺(tái)3DNS 上形成就近性表,并根據(jù)該表返回用戶的最佳訪問地址。
3DNS 可以選擇多種測(cè)試方法判斷對(duì)local DNS的RTT 時(shí)間, 包括:
● DNS_Dot: 向local DNS發(fā)起一個(gè)包含”. ”的測(cè)試, 也就是向目標(biāo)
LocalDNS 請(qǐng)求root 清單,該解析一般默認(rèn)配置的DNS 服務(wù)器均提供支持。
● DNS_REV: 向local DNS發(fā)起LocalDNS 本機(jī)IP 的PTR 請(qǐng)求
● UDP:發(fā)起一個(gè)UDP 的包, 看是否回應(yīng)
● TCP:發(fā)起一個(gè)TCP 的包看是否回應(yīng)
● ICMP:發(fā)起一個(gè)ICMP 的ping 包, 看是否回應(yīng)
在以上各檢測(cè)方式中,無論目標(biāo)系統(tǒng)返回那種類型的數(shù)據(jù)包,3DNS 均可認(rèn)為是有效數(shù)據(jù)包而記錄數(shù)據(jù)包往返時(shí)間,最終形成就近性表。
針對(duì)一個(gè)local DNS 的RTT 結(jié)果:
ldns {
address 61.136.178.229
cur_target_state 419446729
ttl 2419199
probe_protocol tcp
path {
datacenter "CNC"
cur_rtt 189850
cur_hops 0
cur_completion_rate 10000
cur_last_hops 0
}
,path {
datacenter "TEL"
cur_rtt 57209
cur_hops 0
cur_completion_rate 10000
cur_last_hops 0
}
}
通常情況下,我們選擇RTT 動(dòng)態(tài)算法作為優(yōu)選算法,只要是
到的地址,一律按照動(dòng)態(tài)算法分配,保證系統(tǒng)最大的靈活性。
在實(shí)際的運(yùn)行環(huán)境中,可能存在某些LocalDNS 無法檢測(cè)的情況,
可以采用地理分布算法作為動(dòng)態(tài)RTT 算法的有效補(bǔ)充。
② 地理分布算法
在3DNS 上,可以根據(jù)用戶的LocalDNS 地址來決定給用戶返回那個(gè)地址。在3DNS 上可配置多個(gè)自定義區(qū)域,并將這些區(qū)域與鏈路相對(duì)應(yīng)。當(dāng)用戶的LocalDNS 發(fā)起請(qǐng)求連接3DNS 的時(shí)候,3DNS 將根據(jù)LocalDNS 所位于的區(qū)域返回給LocalDNS 適當(dāng)?shù)逆溌穫?cè)服務(wù)器地址,引導(dǎo)用戶從正確的線路進(jìn)行訪問。
在該算法下,需要收集各運(yùn)營商的IP 地址網(wǎng)段表。將網(wǎng)段進(jìn)行整理后輸入到3DNS 內(nèi)形成自定義區(qū)域表。
一個(gè)典型的topology 表結(jié)構(gòu)如下:
topology { // 4 Items
// server ldns score
dc."CNC" 202.106.0.0/16 100
dc."TEL" 219.172.0.0/16 100
dc."CNC" 200.100.0.0/16 100
}
這樣,就將所有從表中l(wèi)dns 網(wǎng)段內(nèi)的LocalDNS 請(qǐng)求有限定一到相應(yīng)的表中對(duì)應(yīng)的鏈路上。 3DNS 所以我們能檢測(cè)
,通常,我們采用地理分布算法作為第二算法。當(dāng)動(dòng)態(tài)檢測(cè)機(jī)制無法檢到LocalDNS 就進(jìn)性的時(shí)候,將啟動(dòng)靜態(tài)算法,將在地址范圍列表之內(nèi)的用戶定義到正確的線路上去。
如果用戶的LocalDNS 即不可被動(dòng)態(tài)RTT 計(jì)算所檢測(cè),又不在本機(jī)對(duì)應(yīng)的地理分布表中。此時(shí)就需要采用全球可用性算法引導(dǎo)用戶到默認(rèn)的線路上。 ③ 全球可用性算法
全球可用性算法主要用于災(zāi)難備份系統(tǒng)。通過3DNS 的健康檢查算法,可判斷各站點(diǎn)或線路的健康狀態(tài)。并在配置的時(shí)候,將同一域名所對(duì)應(yīng)的IP 地址進(jìn)行排序,在系統(tǒng)正常的時(shí)候,僅會(huì)有排名第一的服務(wù)器對(duì)外提供服務(wù)。只有在排名第一的服務(wù)器無法對(duì)外提供服務(wù)的時(shí)候,由排名第二的服務(wù)器接管服務(wù)。如果有多線路或者多站點(diǎn)則依次類推。
通常,我們采用全球可用性算法作為第三選擇算法。在動(dòng)態(tài)計(jì)算和地理分布均沒有命中的時(shí)候,將所有的用戶定義到默認(rèn)的線路上。
(2) 鏈路健康檢查機(jī)制
兩臺(tái)3DNS 分別檢查本地端的服務(wù)器地址和對(duì)端線路的服務(wù)器地址。這些服務(wù)器地址實(shí)際上為BIGIP 上配置的內(nèi)部服務(wù)器的對(duì)外服務(wù)地址(如下示意圖)。
當(dāng)一條線路出現(xiàn)故障的時(shí)候,兩臺(tái)3DNS 服務(wù)器均無法檢測(cè)到對(duì)端線路的地 址。所以在每臺(tái)3DNS 服務(wù)器上均只解析本側(cè)線路對(duì)應(yīng)的服務(wù)器地址(如下示意圖)。
,但在此時(shí)故障線路的
所有的用戶請(qǐng)求均會(huì)發(fā)送到正常線路側(cè)的
正常的線路進(jìn)行訪問。
(3) 系統(tǒng)切換時(shí)間
在采用
時(shí)間設(shè)置。在
生存時(shí)間。在用戶的
間內(nèi)將該域名解析對(duì)應(yīng)紀(jì)錄進(jìn)行
行域名解析的用戶均將獲得該紀(jì)錄。在
LocalDNS
應(yīng)紀(jì)錄。
因此,
自行定義)內(nèi)檢查到線路的故障,并只解析正常的線路側(cè)地址。但此時(shí)在LocalDNS
LocalDNS
通過正常的線路進(jìn)行訪問。系統(tǒng)檢測(cè)間隔加上
長(zhǎng)時(shí)間。通常,系統(tǒng)檢測(cè)間隔設(shè)置為
統(tǒng)切換的整體時(shí)間為
(4) 根據(jù)帶寬負(fù)載情況,限制流量3DNS 服務(wù)器無法接受請(qǐng)求,根據(jù)DNS 的冗余機(jī)制, 3DNS ,所以此時(shí)所有的用戶均將通過 DNS 實(shí)現(xiàn)鏈路切換時(shí),系統(tǒng)的切換時(shí)間主要取決于每個(gè)域名的TTL 3DNS 系統(tǒng)里,每個(gè)域名如www.f5.com.cn 均可設(shè)置對(duì)應(yīng)的TTL LocalDNS 得到域名解析紀(jì)錄后,將在本地在TTL 設(shè)定時(shí)Cache ,在Cache 期間所有到該LocalDNS 上進(jìn)TTL 時(shí)間timeout 之后,如果有用戶到LocalDNS 將重新發(fā)起一次請(qǐng)求到3DNS 上獲得相當(dāng)單條線路出現(xiàn)故障時(shí),3DNS 將在系統(tǒng)定義的檢查間隔(該時(shí)間可Cache 紀(jì)錄。在TTL 時(shí)間timeout 之后,該3DNS 上獲得正確的解析,從而引導(dǎo)用戶TTL 時(shí)間之和則為系統(tǒng)切換的最60秒,而TTL 時(shí)間設(shè)置為600秒,所以系11分鐘。 上請(qǐng)求解析,則此上可能還有未過時(shí)的重新發(fā)起請(qǐng)求的時(shí)候就將從
,當(dāng)每條鏈路上Inbound 的流量超過預(yù)先設(shè)定的閥值時(shí),會(huì)分配流量給其它鏈路。