全局負載均衡GSLB之“部署篇”


http://virtualadc.blog.51cto.com/3027116/875622

前言

隨着web應用的不斷發展,客戶對於業務的穩定性、可靠性等也提出更高的要求,已不再局限於IDC內部的服務器虛擬化。很多人都清楚,國內各大運營商之間數據互訪的效果不盡如意,而作為使用者,特別是要求業務及時響應的企業用戶,一方面要考慮異地IDC的數據容災,另一方面要實現就近性訪問,提高客戶訪問體驗,這時,全局負載均衡GSLB是一個很好的解決方案。

 

GSLB的實現原理

大部分人只知道DNS的作用,就是幫助客戶端去“記住”每個在互聯網發布的服務IP,畢竟有關聯性的單詞比32位的數字更方便記憶。GSLB的作用也類似於DNS,可以把GSLB設備當作一台DNS server,所有設置在這台設備上的域名都能解析出A記錄(服務IP)。但比普通服務器多了一個重要的功能,就是“智能”。在做出解析之前,GSLB設備會根據請求包的“出處”,各A記錄的響應效率,后台服務器的可用性等進行分析判斷,所以在很多時候,人們將GSLB也稱為“iDNS”,即智能DNS。

關於GSLB的解析過程,大家可去搜索一下之前也有文章提及,此處不再贅述。

 

 

GSLB的部署

需要實現智能解析,就需要將域名的解析權轉交給GSLB設備,更具DNS的遞歸查詢原理,只要域名的解析請求能最終到達GSLB設備上,GSLB設備就能作出合適的響應。這里看看DNS服務器上的解析配置:

a10test.com  NS  dns1.chinadns.com

a10test.com  NS  dns2.chinadns.com

www.a10test.com  A  222.222.222.222

 

委派授權解析有兩種常用方式,以適應不同的DNS服務器

1)NS直接委派

把原A紀錄刪掉

a10test.com  NS  dns1.chinadns.com

a10test.com  NS  dns2.chinadns.com

dns1.chinadns.com  A  GSLB設備ISP1接口dns偵聽地址

dns2.chinadns.com  A  GSLB設備ISP2接口dns偵聽地址

2)別名方式委派

a10test.com  NS  dns1.chinadns.com

a10test.com  NS  dns2.chinadns.com

www. a10test.com   CNAME  www.ax. a10test.com.

ax. a10test.com  NS  dns1. ax. a10test.com

ax. a10test.com  NS  dns2. ax. a10test.com m

dns1. ax. a10test.com  A  GSLB設備ISP1接口dns偵聽地址

dns2. ax. a10test.com   A  GSLB設備ISP2接口dns偵聽地址

以下是萬網上的圖例

 

 

 

采用NS直接委派的方式最方便,但會將整個授權域轉交給GSLB設備,如果GSLB設備不能完整支持DNS server的所有記錄,如MX/SOA等,就會有問題,而且DNS切換需要花費一天左右的時間才能基本完成,業務的斷網時間是必須考慮到的。而別名方式影響的是單個域名,影響面比較小,但也要求原域名維護商能夠提供別名的更改權限(有些域名維護商只提供A記錄和NS記錄的更改)。


完成了域名的解析委派后,在GSLB設備上做上相應的域名解析配置就行。需要注意的是,如果是直接委派,域名與互聯網上訪問的域名相同:

gslb zone a10test.com

   service http www

 

 

如果是別名方式,域名則是別名后的子域域名。

gslb zone ax.a10test.com


   service http www

 

 

要驗證GSLB設備能否實現解析,可先將客戶端的nslookup server設置成GSLB的DNS偵聽地址,只要有記錄返回便表明設備的解析功能是正常的。然后就是等待互聯網上的各級DNS服務器的記錄更新,這個過程是相對漫長的,需要做的是耐心等待。。。

nginx+web服務器 可以實現負載均衡,但是一台nginx也是有限的,如果並非量高的話,在他的上層如何實現負載均衡。       如果是DNS 或者 CDN的話,建多個機房,勢必有多個機房數據同步的問題。       有什么這方面的好的資料嗎?
 
這方面的資料,基本都是一塊一塊不完整的。我大概跟你說一個基本架構:
1、DNS服務器,如果資金充足的話,建議使用BGP機房,2-3台DNS服務器均衡,通常使用bind軟件。如果資金緊的話,可以購買專業的dns服務,比如國內的dnspod。
2、CDN服務器,一開始如果想省事,可以買專業公司的服務,如chinacache,但隨着發展成本會越來越高。自建的話,可能分別搭建,放電信、聯通、移動等不同機房的服務器,通過dns做動態解析。超大網站的話,可以用Squid,普通中至大型用nginx,內部玩玩用varnish。
3、前端均衡,資金充足的話,可以使用硬件設備,幾十萬一台。自已有技術隊伍的話,就用nginx/haproxy+keepalived等自已組建前端。均衡的方式都比較靈活,隨機、權重、ip、url都有。
4、同步的問題要看同步什么東西,普通的可以實時文件同步。但數據庫的話,要看具體類型選擇同步方式了。
5、后端的應用服務器和數據庫集群,要看流量規划了。
追問:
好像還沒有具體的說,如果多台 nginx 如何實現負載均衡。  看你說的意思,是不是就是用DNS和CDN建立多套程序每個程序 使用nginx    做反向代理。   假如考慮到成本等其他原因,不想建立多套系統,就是一個機房或者私有雲里面,建立這套系統,實現多個nginx之間的負載均衡,有什么好的辦法?
追答:
多台nginx實現均衡,有幾種方法:
1、每台nginx都有公網地址,在域名處設置同個域名多個指向,最簡單實現輪洵。但故障切負會慢一點。
2、一台公網nginx通過upstream功能,輪洵、ip、url多方式分發到內網多台nginx。但公網的nginx如果down機的話,內網全段。
3、一對公網nginx加三個公網ip,通過keepalive實現高可用,再upstream到內網。
4、一台硬件均衡服務器在前端,再通過硬件均衡到內容的其它服務器。

你所說的那個假如,可以通過 2 、3、 4的方法實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM