下文給大家?guī)?lái)實(shí)現(xiàn)高可用的思路和負(fù)載均衡的一些解決方案,希望能夠給大家在實(shí)際運(yùn)用中帶來(lái)一定的幫助,負(fù)載均衡涉及的東西比較多,理論也不多,網(wǎng)上有很多書(shū)籍,今天我們就用創(chuàng)新互聯(lián)建站在行業(yè)內(nèi)累計(jì)的經(jīng)驗(yàn)來(lái)做一個(gè)解答。
為石家莊等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及石家莊網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、石家莊網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!一、為什么沒(méi)有DNS?
再翻出第一篇中放出的一張圖來(lái)回顧一下。
之前也有的小伙伴問(wèn)到,為什么沒(méi)有列出DNS?我認(rèn)為,DNS的本質(zhì)是解決「domain name --> ip」的問(wèn)題。雖然DNS除了在公網(wǎng)運(yùn)用的之外,還會(huì)運(yùn)用于做內(nèi)網(wǎng)的自定義domain name解析,但是在程序里單靠它來(lái)做負(fù)載均衡的話(huà),還是太勉強(qiáng)了。
當(dāng)然,基于DNS“智能解析”功能可以做到IP的動(dòng)態(tài)返回,也算起到了負(fù)載均衡的作用。但是,由于其本身是一個(gè)工作在L3(網(wǎng)絡(luò)層)的解決方案,所以無(wú)法對(duì)“端口”進(jìn)行工作。而一般我們程序之間的通訊很多都會(huì)涉及到端口,因此我們本篇先不討論DNS~
二、如何實(shí)施?在清楚了我們應(yīng)該在哪些環(huán)節(jié)考慮做負(fù)載均衡之后,接下去就是思考如何能夠循序漸進(jìn)的進(jìn)行。
古時(shí)候軍隊(duì)打仗的時(shí)候一般都是拿盾的抗在前面,頂住***。而負(fù)載均衡解決方案從某種角度來(lái)說(shuō)也是一個(gè)類(lèi)似盾一般的防御性設(shè)施,因?yàn)榍疤峋褪且艹休d上游過(guò)來(lái)的流量。因此,越往“前”做負(fù)載均衡解決方案,效果肯定會(huì)越好,因?yàn)槭鼙Wo(hù)的應(yīng)用范圍越廣。
如果說(shuō),系統(tǒng)之前沒(méi)有運(yùn)用過(guò)負(fù)載均衡,現(xiàn)在開(kāi)始第一次做,該如何選擇呢?小Z根據(jù)心目當(dāng)中的優(yōu)先級(jí)來(lái)和大家聊一下。
01 硬件負(fù)載均衡硬件這塊名氣大的還屬F5(根據(jù)ZOL的數(shù)據(jù),其在市場(chǎng)占有率51.44%),大大蓋過(guò)了其它幾家硬件商的風(fēng)頭。此類(lèi)硬件負(fù)載均衡器的特點(diǎn)是“壕”,畢竟是純商業(yè)化的東西,投入的資源和精力自然是眾多開(kāi)源軟件負(fù)載均衡所無(wú)法比擬的,所以功能非常強(qiáng)大。包含訪(fǎng)問(wèn)加速、壓縮、安全等等負(fù)載均衡之外的許多附加功能。
題外話(huà):如果用F5組網(wǎng)的話(huà),有兩種結(jié)構(gòu),串行結(jié)構(gòu)和并行結(jié)構(gòu),也稱(chēng)為直連模式和旁路模式。前者的優(yōu)勢(shì)在對(duì)硬件產(chǎn)生壓力較小、且天然安全性高,而后者對(duì)原網(wǎng)絡(luò)架構(gòu)的改動(dòng)較小、且擴(kuò)展性較好。大家在實(shí)際的使用中結(jié)合自身情況來(lái)部署。
“壕”物能夠同時(shí)支持L2~L7的轉(zhuǎn)發(fā),所以上圖中的每一個(gè)標(biāo)注點(diǎn)都可以用硬件來(lái)做負(fù)載均衡。因此,如果在經(jīng)濟(jì)允許的情況下,直接上F5能解決很多原本需要花更多時(shí)間去解決的問(wèn)題。所以當(dāng)“時(shí)間”的重要度大于“金錢(qián)”的時(shí)候,建議優(yōu)先采用硬件方案。
02 軟件負(fù)載均衡(L7)當(dāng)“金錢(qián)”的重要程度大于“時(shí)間”的時(shí)候,我們可以通過(guò)軟件來(lái)達(dá)到我們要的效果。相應(yīng)的,也增加了一些運(yùn)維成本。
一般情況下,只要對(duì)數(shù)據(jù)庫(kù)不濫用,往往我們從「單應(yīng)用 + 單庫(kù)」組合最先需要突破的是應(yīng)用,變成「多應(yīng)用 + 單庫(kù)」。那么針對(duì)Web應(yīng)用的L7負(fù)載均衡,比較主流的產(chǎn)品是2個(gè)Nginx、HAProxy。在L7做負(fù)載均衡,大的特點(diǎn)就是靈活,請(qǐng)求的URL、Header都是我們可以去掌控的,所以我們可以利用其中的任何信息為負(fù)載均衡策略所用。
這一類(lèi)就是前面圖中的「反向代理」。作為「客戶(hù)端」和「Web應(yīng)用」、「前端」和「后端」之間的橋梁。實(shí)際操作中主要做2步:
在公網(wǎng)的域名解析中,配置解析到「反向代理」。記錄類(lèi)型是「A」,記錄值是「反向代理」的IP。
配置真實(shí)提供服務(wù)的Web應(yīng)用IP和端口,和負(fù)載均衡均衡策略。上圖中的配置是Nginx中的示例,負(fù)載均衡策略的缺省值是輪詢(xún)。
當(dāng)「Web應(yīng)用」所依賴(lài)的TCP協(xié)議的「服務(wù)」需要橫向擴(kuò)展,或者需要做「數(shù)據(jù)庫(kù)」、「分布式緩存」的多主、主從集群時(shí),那么就需要一個(gè)支持L4的負(fù)載均衡軟件。這里最知名的就屬LVS了,1998年5月由章文嵩博士建立,2004年底被納入Lunix內(nèi)核。也正因?yàn)樗莾?nèi)核態(tài)的程序,所以相比用Nginx、HAProxy來(lái)做L4的負(fù)載均衡,在性能、資源的消耗上會(huì)更優(yōu)一些。
實(shí)際運(yùn)用中的操作步驟主要也是2步:
1在LVS中添加一個(gè)IP虛擬服務(wù)(IPVS),并指定它的IP、端口和負(fù)載均衡策略。
將IP虛擬服務(wù)關(guān)聯(lián)到真實(shí)的服務(wù)上,并指定模式和權(quán)重的信息。(做L4的負(fù)載均衡可以使用NAT或者FULLNAT模式)
題外話(huà):LVS的模式一共有四種,除了NAT和FULLNAT(NAT的增強(qiáng)版)模式外,它的TUN模式可以在L3做負(fù)載均衡,DR模式可以在L2做負(fù)載均衡,到這個(gè)層面其實(shí)就和做硬件同處于一個(gè)層次了。并且,隨著層次的深入,雖然對(duì)功能性上有所弱化,但是如果不考慮端口的話(huà),單從IP層面的負(fù)載均衡來(lái)說(shuō),用DR模式做,則對(duì)數(shù)據(jù)包的加工介入度會(huì)降到最低,因此也是通過(guò)軟件做負(fù)載均衡能夠達(dá)到的性能極致。
另外,LVS中運(yùn)用的虛擬IP概念,本質(zhì)上和Nginx中的“server”概念一樣,定義了一個(gè)統(tǒng)一入口,作用上并沒(méi)有差別。將Nginx中的upstream關(guān)聯(lián)到server,就如LVS操作步驟第2點(diǎn)中的關(guān)聯(lián)一般。
這些每個(gè)具體的解決方案的使用教程網(wǎng)上比較多,就不展開(kāi)了,大家實(shí)際用到的時(shí)候自行查閱一下,當(dāng)然盡量?jī)?yōu)先看官方的。
三、優(yōu)缺點(diǎn)做了一個(gè)苦差事,把所有同類(lèi)型的產(chǎn)品都整合了一下優(yōu)缺點(diǎn)和使用場(chǎng)景。不過(guò),其中有不少是我沒(méi)用過(guò)的,所以?xún)H供大家參考。順手將一些網(wǎng)上到處充斥的一些過(guò)時(shí)結(jié)論做了更新,如:Nginx不支持session sticky等。
我們可以看到,不同的解決方案有不同的側(cè)重點(diǎn)。因此在單個(gè)解決方案已經(jīng)無(wú)法滿(mǎn)足的情況下,我們可以組合使用,各盡所長(zhǎng)。
負(fù)載均衡這個(gè)領(lǐng)域還是以高可用和性能為2個(gè)最重要因素,下面是小Z推薦的一種組合方式,也是在系統(tǒng)量級(jí)達(dá)到每小時(shí)上億PV之后最被廣泛使用的一種。理論上,利用第一步DNS的域名解析所帶的負(fù)載均衡效果,只要復(fù)制多套LVS主備出來(lái),綁上多個(gè)不同的虛IP,可以做到無(wú)限橫向擴(kuò)展,以支撐不斷增長(zhǎng)的流量。
用到的3個(gè)軟件目前都是開(kāi)源產(chǎn)品,LVS+Keepalived負(fù)責(zé)做Nginx的負(fù)載均衡,而Nginx負(fù)責(zé)分發(fā)到實(shí)際的請(qǐng)求到Http和Tcp協(xié)議的應(yīng)用上。
關(guān)于LVS的模式選擇,如果在同網(wǎng)段內(nèi)的話(huà)優(yōu)先使用DR模式進(jìn)行L2轉(zhuǎn)發(fā),性能最好。否則使用TUN模式進(jìn)行L3分發(fā)。與此同時(shí),在L4、L7的分發(fā)上使用Nginx來(lái)做,可以發(fā)揮其靈活易擴(kuò)展的特點(diǎn)以及其它的一些額外特性如緩存等,也算是物盡其用。
云時(shí)代,service mesh風(fēng)興起。以sidecar模式為核心的后起之秀Linkerd、Conduit、NginMesh、Istio等軟件除了滿(mǎn)足負(fù)載均衡之外,還為高可用相關(guān)的做了眾多的考量,后續(xù)有機(jī)會(huì)小Z和大家一起來(lái)梳理一下。很久之前寫(xiě)過(guò)一篇調(diào)研服務(wù)治理框架的文章,里面順帶有提到一下,有興趣的小伙伴們可以跳過(guò)去看看:《分布式系統(tǒng)中的必備良藥 —— 服務(wù)治理》。
看了以上關(guān)于實(shí)現(xiàn)高可用的思路和負(fù)載均衡的一些解決方案,如果大家還有什么地方需要了解的可以在創(chuàng)新互聯(lián)建站行業(yè)資訊里查找自己感興趣的或者找我們的專(zhuān)業(yè)技術(shù)工程師解答的,創(chuàng)新互聯(lián)建站技術(shù)工程師在行業(yè)內(nèi)擁有十幾年的經(jīng)驗(yàn)了。
分享名稱(chēng):實(shí)現(xiàn)高可用的思路和負(fù)載均衡的一些解決方案-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://www.rwnh.cn/article24/copice.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、做網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站策劃、用戶(hù)體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容