http請求的典型執行流程是什么?可以看出,典型的過程是:(1)客戶端請求dns-server并發起域名解析;(2)dns服務器返回域名對應的外地網絡IP(1.2.3.4);(3)客戶端通過外網ip訪問反向代理(1 . 2 . 3 . 4);(4)反向代理將請求分發給網絡服務器;通過內部網IP(192.168 . x . x);(5)網絡服務器處理請求;
將域名轉換為ip的過程,發生在應用系統之外,通過DNS實現。
除了域名解析,DNS在架構設計上還能做什么?
一是用戶可以就近訪問DNS,用戶需要就近訪問資源:(1)電信用戶想要訪問某個服務器資源;(2)瀏覽器向dns服務器發起域名解析請求;(3)dns服務器識別訪問者是電信用戶;(4)dns服務器將電信機房nginx外網ip返回給訪客;(5)游客就近參觀;
根據用戶的ip,返回最近的服務器ip稱為“智能DNS”,最常用的是CDN和多機房。
二、反向代理的橫向擴展在典型的互聯網架構中,web層的性能可以通過增加web-server來擴展,但是反向代理nginx仍然是整個系統的唯一入口。如果系統吞吐量超過nginx的性能極限,難以擴展,需要dns-server配合水平擴展。
具體方法是:在dns-server中,同一個域名可以配置多個nginx外部ip,每次dns解析請求都會通過輪詢返回不同的ip,這樣nginx就可以橫向擴展。這種方法叫做“DNS輪詢”。
三、web服務器負載均衡由于“dns輪詢”可以將同一個域名的流量平均分配給不同的nginx,所以也可以用來均衡web服務器的負載:(1)從架構上去掉nginx層;(2)直接將多個網絡服務器的內部網絡ip改為外部網絡IP;(3)在dns服務器中輪詢并分析域名對應的外地網絡IP;
通過DNS實現負載均衡有哪些優缺點?
優點:(1)采用第三方DNS實現,服務器架構不需要移動;(2)缺少一層網絡請求;
缺點:(1)DNS只有解析功能,不能保證對應外網ip的可用性。nginx作為反向代理時,與web-server有保活檢測機制,web-server掛機時,可以自動遷移流量;(2)當web-server需要擴展時,通過DNS擴展需要很長時間才能生效,nginx是服務器完全可控的部分,所以web-server的擴展更加實時方便;