場景:
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實現均衡,有幾種方法:
1、每台Nginx都有公網地址,在域名處設置同個域名多個指向,最簡單實現輪洵。但故障切負會慢一點。
2、一台公網Nginx通過upstream功能,輪洵、IP、url多方式分發到內網多台nginx。但公網的nginx如果Down機的話,內網全斷。
3、一對公網Nginx加三個公網IP,通過Keepalive實現高可用,再upstream到內網。
4、一台硬件均衡服務器在前端,再通過硬件均衡到內容的其它服務器。
你所說的那個假如,可以通過 2 、3、 4的方法實現。