http://virtualadc.blog.51cto.com/3027116/875622前端
前言nginx
隨着web應用的不斷髮展,客戶對於業務的穩定性、可靠性等也提出更高的要求,已再也不侷限於IDC內部的服務器虛擬化。不少人都清楚,國內各大運營商之間數據互訪的效果不盡如意,而做爲使用者,特別是要求業務及時響應的企業用戶,一方面要考慮異地IDC的數據容災,另外一方面要實現就近性訪問,提升客戶訪問體驗,這時,全局負載均衡GSLB是一個很好的解決方案。web
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.comui
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的話,建多個機房,勢必有多個機房數據同步的問題。 有什麼這方面的好的資料嗎?
這方面的資料,基本都是一塊一塊不完整的。我大概跟你說一個基本架構:
一、DNS服務器,若是資金充足的話,建議使用BGP機房,2-3臺DNS服務器均衡,一般使用bind軟件。若是資金緊的話,能夠購買專業的dns服務,好比國內的dnspod。
二、CDN服務器,一開始若是想省事,能夠買專業公司的服務,如chinacache,但隨着發展成本會愈來愈高。自建的話,可能分別搭建,放電信、聯通、移動等不一樣機房的服務器,經過dns作動態解析。超大網站的話,能夠用Squid,普通中至大型用nginx,內部玩玩用varnish。
三、前端均衡,資金充足的話,可使用硬件設備,幾十萬一臺。自已有技術隊伍的話,就用nginx/haproxy+keepalived等自已組建前端。均衡的方式都比較靈活,隨機、權重、ip、url都有。
四、同步的問題要看同步什麼東西,普通的能夠實時文件同步。但數據庫的話,要看具體類型選擇同步方式了。
五、後端的應用服務器和數據庫集羣,要看流量規劃了。
好像尚未具體的說,若是多臺 nginx 如何實現負載均衡。 看你說的意思,是否是就是用DNS和CDN創建多套程序每一個程序 使用nginx 作反向代理。 假如考慮到成本等其餘緣由,不想創建多套系統,就是一個機房或者私有云裏面,創建這套系統,實現多個nginx之間的負載均衡,有什麼好的辦法?
多臺nginx實現均衡,有幾種方法:一、每臺nginx都有公網地址,在域名處設置同個域名多個指向,最簡單實現輪洵。但故障切負會慢一點。二、一臺公網nginx經過upstream功能,輪洵、ip、url多方式分發到內網多臺nginx。但公網的nginx若是down機的話,內網全段。三、一對公網nginx加三個公網ip,經過keepalive實現高可用,再upstream到內網。四、一臺硬件均衡服務器在前端,再經過硬件均衡到內容的其它服務器。你所說的那個假如,能夠經過 2 、三、 4的方法實現。