DNS
域名系統(tǒng)(英文:Domain Name System,縮寫:DNS)是互聯(lián)網(wǎng)的一項服務遣鼓。
它作為將域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能夠使人更方便地訪問互聯(lián)網(wǎng)硼瓣。DNS使用UDP端口53。當前埃疫,對于每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符孩哑。
DNS負載均衡一般用于地理級別的負載栓霜。
優(yōu)點:實現(xiàn)簡單透明。
缺點一横蜒,對改動有一定延遲胳蛮,因為有dns緩存;缺點二丛晌,靈活度低仅炊,因為無法感知后端服務器的狀態(tài)并基于此做負載 。
app端訪問可以實現(xiàn)私有http-dns協(xié)議澎蛛,優(yōu)缺點和正常的dns負載相反抚垄。
【如何查看系統(tǒng)DNS服務器地址】https://jingyan.baidu.com/article/c74d6000cc0a1e0f6b595d77.html
負載均衡
(知乎 Hevin 的解釋通俗易懂 https://zhuanlan.zhihu.com/p/32841479)
負載均衡是網(wǎng)絡基礎架構(gòu)的關鍵組件。通常用于將工作負載分布到多個服務器來提高網(wǎng)站谋逻、應用呆馁、數(shù)據(jù)庫或其他服務的性能和可靠性。
在這里用戶是直接連到web服務器毁兆,如果這個服務器宕機了浙滤,那么用戶自然也就沒辦法訪問了。
另外荧恍,如果有很多用戶試圖訪問服務器瓷叫,超過了其能處理的極限,就會出現(xiàn)加載速度緩慢或根本無法連接的情況送巡。
- 在后端引入一個負載均衡器和至少一個額外的web服務器可以緩解這個故障。通常情況下盒卸,所有后端服務器能保證提供相同的內(nèi)容骗爆,以便用戶無論哪個服務器響應,都能收到一致的內(nèi)容蔽介。
【腦洞1:把服務器比作一臺筆記本摘投,筆記本只有1個usb接口,然而要外接鍵盤還要接鼠標的藍牙接收器虹蓄,還要插其他的東西吩翻,需要4個接口塔嬉。怎么辦?在現(xiàn)有的usb接口上鏈接一個分線器,上面可以容納很多usb接口精绎。這里的分線器就相當于負載均衡器。
從后端引入一個負載均衡器,后端仍然只需要開一個門,如果從后端引入兩個服務器不用負載均衡器貌矿,后端需要開兩個門。聽研發(fā)說罪佳,給后端開門挺麻煩的逛漫。
腦洞2:有住院的人應該有過這樣的體驗,護士每天都會給病人抽血赘艳,由于抽血的次數(shù)比較多酌毡,一般會在抽血處放一個類似『后門』的東西,下次抽血只需要打開這個『后門』接著抽血就可以了蕾管。不需要戳得手臂上都是洞枷踏,方便快捷。
原理應該都差不多娇掏∨磺蓿】
『“阿里云負載均衡SLB采用集群部署,可實現(xiàn)會話同步婴梧,以消除服務器單點故障下梢,提升冗余,保證服務的穩(wěn)定性塞蹭。其中四層負載均衡通過LVS(Linux Virtual Server)+ keepalived的方式實現(xiàn)孽江,七層負載均衡通過Tengine(淘寶網(wǎng)發(fā)起的Web服務器項目,在Nginx的基礎上番电,針對有大訪問量的網(wǎng)站需求進行了優(yōu)化)實現(xiàn)岗屏。云技術網(wǎng)提供負載均衡技術支持服務∈欤”』
從圖里可以看到这刷,用戶訪問負載均衡器,再由負載均衡器將請求轉(zhuǎn)發(fā)給后端服務器娩井。在這種情況下暇屋,單點故障現(xiàn)在轉(zhuǎn)移到負載均衡器上了。這里又可以通過引入第二個負載均衡器來緩解洞辣,但在討論之前咐刨,我們先探討下負載均衡器的工作方式。
負載均衡器可以處理什么樣的請求扬霜?
負載均衡器的管理員能主要為下面四種主要類型的請求設置轉(zhuǎn)發(fā)規(guī)則:
HTTP
HTTPS
TCP
UDP
負載均衡器如何選擇要轉(zhuǎn)發(fā)的后端服務器定鸟?
【準備工作:預先配置一個規(guī)則,有一個健康服務器池著瓶,判斷后端服務器是否「健康」的方法】
負載均衡器一般根據(jù)兩個因素來決定要將請求轉(zhuǎn)發(fā)到哪個服務器联予。首先,確保所選擇的服務器能夠?qū)φ埱笞龀鲰憫缓蟾鶕?jù)預先配置的規(guī)則從健康服務器池(healthy pool)中進行選擇躯泰。
因為谭羔,負載均衡器應當只選擇能正常做出響應的后端服務器,因此就需要有一種判斷后端服務器是否「健康」的方法麦向。為了監(jiān)視后臺服務器的運行狀況瘟裸,運行狀態(tài)檢查服務會定期嘗試使用轉(zhuǎn)發(fā)規(guī)則定義的協(xié)議和端口去連接后端服務器。如果诵竭,服務器無法通過健康檢查话告,就會從池中剔除,保證流量不會被轉(zhuǎn)發(fā)到該服務器卵慰,直到其再次通過健康檢查為止沙郭。
負載均衡算法
負載均衡算法決定了后端的哪些健康服務器會被選中。幾個常用的算法:
Round Robin(輪詢):為第一個請求選擇列表中的第一個服務器裳朋,然后按順序向下移動列表直到結(jié)尾病线,然后循環(huán)。
Least Connections(最小連接):優(yōu)先選擇連接數(shù)最少的服務器鲤嫡,在普遍會話較長的情況下推薦使用送挑。
Source:根據(jù)請求源的 IP 的散列(hash)來選擇要轉(zhuǎn)發(fā)的服務器。這種方式可以一定程度上保證特定用戶能連接到相同的服務器暖眼。
如果你的應用需要處理狀態(tài)而要求用戶能連接到和之前相同的服務器惕耕。可以通過 Source 算法基于客戶端的 IP 信息創(chuàng)建關聯(lián)诫肠,或者使用粘性會話(sticky sessions)司澎。
最后,想要解決負載均衡器的單點故障問題栋豫,可以將第二個負載均衡器連接到第一個上挤安,從而形成一個集群。
【什么是ip_hash?
ip_hash是根據(jù)用戶請求過來的ip丧鸯,然后映射成hash值漱受,然后分配到一個特定的服務器里面;
使用ip_hash這種負載均衡以后骡送,可以保證用戶的每一次會話都只會發(fā)送到同一臺特定的Tomcat里面,它的session不會跨到其他的tomcat里面去的絮记;】
當主負載均衡器發(fā)生了故障摔踱,就需要將用戶請求轉(zhuǎn)到第二個負載均衡器。因為 DNS 更改通常會較長的時間才能生效怨愤,因此需要能靈活解決 IP 地址重新映射的方法派敷,比如浮動 IP(floating IP)。這樣域名可以保持和相同的 IP 相關聯(lián),而 IP 本身則能在服務器之間移動篮愉。
一個使用浮動 IP 的負載均衡架構(gòu)示意圖:
參考資料:
知乎 Hevin? https://zhuanlan.zhihu.com/p/32841479
《淘寶技術這十年》