新聞中心
隨著信息技術(shù)的快速發(fā)展,互聯(lián)網(wǎng)應(yīng)用的數(shù)量不斷增長,為了滿足用戶的需求,同時(shí)提高系統(tǒng)的可用性和穩(wěn)定性,引入負(fù)載均衡成為了必然趨勢(shì)。在負(fù)載均衡方案中,三層負(fù)載均衡技術(shù)已成為主流的選項(xiàng)之一,尤其是在 Linux 系統(tǒng)中,得到了廣泛的應(yīng)用。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的安化網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
一、三層負(fù)載均衡技術(shù)的概念及工作原理
三層負(fù)載均衡技術(shù)是指在網(wǎng)絡(luò)架構(gòu)中,分為三個(gè)層次:應(yīng)用層、傳輸層和網(wǎng)絡(luò)層。其中,應(yīng)用層主要負(fù)責(zé)處理用戶請(qǐng)求和響應(yīng);傳輸層主要負(fù)責(zé)負(fù)載均衡策略的實(shí)現(xiàn)和協(xié)議轉(zhuǎn)發(fā);網(wǎng)絡(luò)層主要負(fù)責(zé)路由選擇和數(shù)據(jù)交換。三層負(fù)載均衡技術(shù)將負(fù)載均衡策略實(shí)現(xiàn)在傳輸層,通過分配連接給不同的后端服務(wù)器,并將請(qǐng)求轉(zhuǎn)發(fā)到指定的服務(wù)器上,從而實(shí)現(xiàn)了負(fù)載均衡的目的。
實(shí)現(xiàn)三層負(fù)載均衡技術(shù)有多種方式,其中 Nginx、HAProxy、LVS 等常見的負(fù)載均衡軟件都是基于三層負(fù)載均衡技術(shù)實(shí)現(xiàn)的。它們的工作流程主要包括以下幾個(gè)步驟:
1. 通過監(jiān)聽端口接收客戶端請(qǐng)求,按照負(fù)載均衡策略選擇一臺(tái)后端服務(wù)器;
2. 將客戶端請(qǐng)求轉(zhuǎn)發(fā)到選擇的后端服務(wù)器;
3. 后端服務(wù)器處理請(qǐng)求并返回響應(yīng);
4. 負(fù)載均衡軟件將響應(yīng)返回給客戶端。
二、實(shí)現(xiàn)高效響應(yīng)的優(yōu)化技術(shù)
三層負(fù)載均衡技術(shù)可以有效提高系統(tǒng)的性能和穩(wěn)定性,但是如何實(shí)現(xiàn)高效響應(yīng)是構(gòu)建高可用系統(tǒng)的關(guān)鍵所在。以下是一些三層負(fù)載均衡技術(shù)的優(yōu)化措施:
1. 使用SNAT或DNAT
服務(wù)器直接返回的響應(yīng)報(bào)文可能無法識(shí)別源 IP,這將使負(fù)載均衡器無法將客戶端響應(yīng)正確地路由回去。因此,我們需要使用SNAT或DNAT技術(shù),將服務(wù)器返回的響應(yīng)報(bào)文重寫為負(fù)載均衡器的 IP 地址,并將負(fù)載均衡器的 IP 地址替換為源 IP 地址,這樣才能確保客戶端能夠正確地接收響應(yīng)。
2. 負(fù)載均衡算法
負(fù)載均衡算法直接決定了系統(tǒng)的性能和穩(wěn)定性,根據(jù)不同的業(yè)務(wù)場景選擇不同的負(fù)載均衡算法對(duì)于提升系統(tǒng)性能非常重要。目前常用的負(fù)載均衡算法有輪詢、加權(quán)輪詢、最小連接數(shù)、源 IP 哈希等。
3. 設(shè)置連接超時(shí)時(shí)間
負(fù)載均衡器可以設(shè)置連接超時(shí)時(shí)間,防止后端服務(wù)器出現(xiàn)連接請(qǐng)求超時(shí)的問題。通過設(shè)置連接超時(shí)時(shí)間,可以及時(shí)釋放空閑的連接,避免浪費(fèi)服務(wù)器資源,提高系統(tǒng)的性能和穩(wěn)定性。
4. 健康檢查機(jī)制
健康檢查機(jī)制可以根據(jù)后端服務(wù)器的狀態(tài)判斷服務(wù)器是否可用,并且在發(fā)現(xiàn)不可用的服務(wù)器時(shí),做出相應(yīng)的調(diào)度,將請(qǐng)求分發(fā)到其他可用的服務(wù)器。目前常見的健康檢查方式主要有 TCP、HTTP、ICMP 等多種方式。
三、穩(wěn)定性優(yōu)化技術(shù)
穩(wěn)定性是構(gòu)建高可用系統(tǒng)的重要指標(biāo)之一,要想構(gòu)建高穩(wěn)定性的系統(tǒng),就需要引入一些技術(shù)手段,如下:
1. 避免單點(diǎn)故障
系統(tǒng)中的單點(diǎn)故障會(huì)導(dǎo)致整個(gè)系統(tǒng)失效。要避免單點(diǎn)故障,可以采用雙機(jī)熱備或者多機(jī)集群的方式,保證系統(tǒng)中的每個(gè)節(jié)點(diǎn)都能夠正常工作。
2. 防止故障擴(kuò)散
故障難免會(huì)發(fā)生,如何避免故障擴(kuò)散是提高系統(tǒng)穩(wěn)定性的關(guān)鍵所在。在負(fù)載均衡系統(tǒng)中,可以采用多副本備份、故障切換、自動(dòng)恢復(fù)等方式解決故障,并且對(duì)于不可避免的故障,需要提前做好足夠的預(yù)案,確保系統(tǒng)能夠快速恢復(fù)。
3. 監(jiān)控系統(tǒng)運(yùn)行狀態(tài)
通過實(shí)時(shí)監(jiān)控系統(tǒng)的運(yùn)行狀態(tài),能夠快速發(fā)現(xiàn)系統(tǒng)中存在的問題,并及時(shí)做出相應(yīng)的調(diào)整。在負(fù)載均衡系統(tǒng)中,需要采用多樣化的監(jiān)控手段,如郵件、短信、微信等多種方式實(shí)現(xiàn)監(jiān)控告警,確保及時(shí)發(fā)現(xiàn)和處理問題。
三層負(fù)載均衡技術(shù)在實(shí)現(xiàn)高效響應(yīng)和穩(wěn)定性方面都有很好的優(yōu)勢(shì)。在構(gòu)建高可用系統(tǒng)時(shí),我們需要根據(jù)實(shí)際業(yè)務(wù)場景選擇不同的負(fù)載均衡解決方案,并結(jié)合實(shí)際運(yùn)維經(jīng)驗(yàn),逐步完善系統(tǒng)優(yōu)化措施,以提升系統(tǒng)的性能和穩(wěn)定性,為用戶提供更好的體驗(yàn)。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
lvs負(fù)載均衡(簡介,三種工作模式,四種常用算法)
一,lvs簡介
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務(wù)器,是一個(gè)由章文嵩博士發(fā)起的自由軟件項(xiàng)目,官方站點(diǎn)是:
?,F(xiàn)在LVS已經(jīng)是Linux標(biāo)準(zhǔn)內(nèi)核的一部分,在Linux2.4內(nèi)核以前,使用LVS時(shí)必須重新編譯內(nèi)核以支持LVS功能模塊,但是從Linux2.4內(nèi)核心之后,已經(jīng)完全內(nèi)置了LVS的各個(gè)功能模塊,無需給內(nèi)核打任何補(bǔ)丁,可以直接使用LVS提供的各種功能。使用LVS技術(shù)要達(dá)到的目標(biāo)是:通過LVS提供的負(fù)載均衡技術(shù)和Linux操作系統(tǒng)實(shí)現(xiàn)一個(gè)高性能,高可用的服務(wù)器群集,它具有良好的可靠性、可擴(kuò)展性和可操作性。從而以兄棚野低廉的成本實(shí)現(xiàn)更優(yōu)的服務(wù)性能。
二,三種工作模式
1、基于NAT的LVS模式負(fù)載均衡
也就是網(wǎng)絡(luò)地址翻譯技術(shù)實(shí)現(xiàn)虛擬服務(wù)器,當(dāng)用戶請(qǐng)求到達(dá)調(diào)度器時(shí),調(diào)度器將請(qǐng)求報(bào)文的目標(biāo)地址(即虛擬IP地址)改寫成選定的Real Server地址,同時(shí)報(bào)文的目標(biāo)端口也改成選定的Real Server的相應(yīng)端口,***將報(bào)文請(qǐng)求發(fā)送到選定的Real Server。在服務(wù)器端得到數(shù)據(jù)后,Real Server返回?cái)?shù)據(jù)給用戶時(shí),需要再次經(jīng)過負(fù)載調(diào)度器將報(bào)文的源地址和源端口改成虛擬IP地址和相應(yīng)端口,然后把數(shù)據(jù)發(fā)送給用戶,完成整個(gè)負(fù)載調(diào)度過程??梢钥闯觯贜AT方式下,用戶請(qǐng)求和響應(yīng)報(bào)文都必須經(jīng)過Director Server地址重寫,當(dāng)用戶請(qǐng)求越來越多時(shí),調(diào)度器的處理能力將稱為瓶頸。
2,基于TUN的LVS負(fù)載均衡
也就是IP隧道技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與VS/NAT方式一樣,只是它的報(bào)文轉(zhuǎn)發(fā)方法不同,VS/TUN方式中,調(diào)度器采用IP隧道技術(shù)將用戶請(qǐng)求轉(zhuǎn)發(fā)到某個(gè)Real Server,而這個(gè)Real Server將直接響應(yīng)用戶的請(qǐng)求,不再經(jīng)過前端調(diào)度器,此外,對(duì)Real Server的地域位置沒有要求,可以和Director Server位于同一個(gè)網(wǎng)段,也可以是獨(dú)立的一個(gè)網(wǎng)絡(luò)。因此,在TUN方式中,調(diào)度器將只處理用戶的報(bào)文請(qǐng)求,集群系統(tǒng)的吞吐量大大提高。
用的很少,圖省略
3,基于DR的LVS負(fù)載均衡
也就是用直接路由技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。它的連接調(diào)度和管理與VS/NAT和VS/TUN中的一樣,但它的報(bào)文轉(zhuǎn)發(fā)方法又有不同,VS/DR通過改寫請(qǐng)求報(bào)文的MAC地址,將請(qǐng)求發(fā)送到Real Server,而Real Server將響應(yīng)直接返回給客戶,免去了VS/TUN中的IP隧道開銷。這種方式是三種負(fù)載調(diào)度機(jī)制中性能更好的,但是必須要求Director Server與Real Server都有一塊網(wǎng)卡連在同一物理網(wǎng)段上。
三,LVS負(fù)載均衡調(diào)度算法
上面我們談到,負(fù)載調(diào)度器是根據(jù)各 個(gè)服務(wù)器的負(fù)載情況,動(dòng)和或態(tài)地選擇一臺(tái)Real Server響應(yīng)用戶請(qǐng)求,那么動(dòng)態(tài)選擇是如何實(shí)現(xiàn)呢,其實(shí)也就是我們這里要說的負(fù)載調(diào)度算法,根據(jù)不同的網(wǎng)絡(luò)服務(wù)需求和服務(wù)器配置,IPVS實(shí)現(xiàn)了如下 八種負(fù)載調(diào)度算法,這里我們?cè)敿?xì)講述最常用的四種調(diào)度算法,剩余的四種調(diào)度算法請(qǐng)參考其它資料。
3.1 輪叫調(diào)度(Round Robin)
“輪叫”調(diào)度也叫1:1調(diào)度,調(diào)度器通過羨喊“輪叫”調(diào)度算法將外部用戶請(qǐng)求按順序1:1的分配到集群中的每個(gè)Real Server上,這種算法平等地對(duì)待每一臺(tái)Real Server,而不管服務(wù)器上實(shí)際的負(fù)載狀況和連接狀態(tài)。
3.2 加權(quán)輪叫調(diào)度(Weighted Round Robin)
“加 權(quán)輪叫”調(diào)度算法是根據(jù)Real Server的不同處理能力來調(diào)度訪問請(qǐng)求??梢詫?duì)每臺(tái)Real Server設(shè)置不同的調(diào)度權(quán)值,對(duì)于性能相對(duì)較好的Real Server可以設(shè)置較高的權(quán)值,而對(duì)于處理能力較弱的Real Server,可以設(shè)置較低的權(quán)值,這樣保證了處理能力強(qiáng)的服務(wù)器處理更多的訪問流量。充分合理的利用了服務(wù)器資源。同時(shí),調(diào)度器還可以自動(dòng)查詢Real Server的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。
3.3 最少鏈接調(diào)度(Least Connections)
“最少連接”調(diào)度算法動(dòng)態(tài)地將網(wǎng)絡(luò)請(qǐng)求調(diào)度到已建立的鏈接數(shù)最少的服務(wù)器上。如果集群系統(tǒng)的真實(shí)服務(wù)器具有相近的系統(tǒng)性能,采用“最小連接”調(diào)度算法可以較好地均衡負(fù)載。
3.4 加權(quán)最少鏈接調(diào)度(Weighted Least Connections)
“加權(quán)最少鏈接調(diào)度”是“最少連接調(diào)度”的超集,每個(gè)服務(wù)節(jié)點(diǎn)可以用相應(yīng)的權(quán)值表示其處理能力,而系統(tǒng)管理員可以動(dòng)態(tài)的設(shè)置相應(yīng)的權(quán)值,缺省權(quán)值為1,加權(quán)最小連接調(diào)度在分配新連接請(qǐng)求時(shí)盡可能使服務(wù)節(jié)點(diǎn)的已建立連接數(shù)和其權(quán)值成正比。
其它四種調(diào)度算法分別為:基于局部性的最少鏈接(Locality-Based Least Connections)、帶復(fù)制的基于局部性最少鏈接(Locality-Based Least Connections with Replication)、目標(biāo)地址散列(Destination Hashing)和源地址散列(Source Hashing),對(duì)于這四種調(diào)度算法的含義,本文不再講述,如果想深入了解這其余四種調(diào)度策略的話,可以登陸LVS中文站點(diǎn) zh.linuxvirtualserver.org,查閱更詳細(xì)的信息。
負(fù)載均衡:F5,Haproxy,lvs, nginx
閱讀本文前,需熟悉OSI七層參考模型。
常見的負(fù)載均衡設(shè)備,有F5,Haproxy,lvs, nginx等。
F5是商用硬件負(fù)載均衡,性能很好,但是價(jià)格昂貴,除了負(fù)載均衡,還有應(yīng)用交換、會(huì)話交換、狀態(tài)監(jiān)控等眾多功能。
F5一般做四層負(fù)載均衡,但也支持七層負(fù)載均衡。
Haproxy(以下簡稱ha)是軟嘩唯歲件負(fù)載均衡,開源,一般做七層負(fù)載均衡,但也支持四層負(fù)載均衡。
Linux Virtual Server(以下簡稱lvs)是軟件負(fù)載均衡,開源,二層或四層負(fù)載均衡,已集成到linux內(nèi)核,自身有完備的熱備方案(keepalived+lvs),穩(wěn)定性極強(qiáng)。
nginx也是軟件負(fù)載均衡,開源,通過反向代理實(shí)現(xiàn)負(fù)載均衡,是七層負(fù)載均衡,性能不如上面的幾個(gè)。
tips1
有些公司,測試環(huán)境用ha/lvs/nginx,生產(chǎn)環(huán)境用F5。
tips2
nginx做web服務(wù)器時(shí),一般做靜態(tài)資源服務(wù)器和php的web服務(wù)器,所以很多公司,會(huì)采用F5+nginx或者h(yuǎn)a+nginx的架構(gòu)
tips3
微服務(wù)中的ribbon屬于客戶端負(fù)載均衡,上面的幾種都是服務(wù)端負(fù)載均衡
二層負(fù)載均衡
在數(shù)據(jù)鏈路層通過修改mac地址實(shí)現(xiàn),如lvs的DR模式(直接路由模式)
三層負(fù)載均衡
在網(wǎng)絡(luò)層通過DNAT協(xié)議修改目標(biāo)地址實(shí)現(xiàn)
四層負(fù)載均衡
用ip+端口實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)
備注:tcp報(bào)文里并沒有ip,但是四層負(fù)載均衡可以用ip+端口,是因?yàn)閟erver可以拿到ip
七層負(fù)載均衡
通過重新發(fā)起http請(qǐng)求實(shí)現(xiàn),即client把請(qǐng)求發(fā)給lb,lb把請(qǐng)求代發(fā)給server,再把server的響應(yīng)返回給client,因此七層負(fù)載均衡也經(jīng)常被稱為代理,七層負(fù)載均衡設(shè)備也被稱為代理設(shè)備。
七層負(fù)載均衡常用于內(nèi)網(wǎng)與外網(wǎng)的通信,比如內(nèi)網(wǎng)無法直接訪問外網(wǎng),需要通過代理設(shè)備代發(fā)http請(qǐng)求,這種情況下,代理設(shè)備需要配置雙網(wǎng)卡,以同時(shí)與內(nèi)外網(wǎng)絡(luò)通信。
由于山寬需要重發(fā)http請(qǐng)求,七層負(fù)載均衡性能較差,但是更智能和安全,因?yàn)閼?yīng)用層可以獲取甚至修改請(qǐng)求的真實(shí)內(nèi)容(即應(yīng)用數(shù)據(jù)),比如cookie、url等,可以做一些智能的操作,比如根據(jù)cookie/url轉(zhuǎn)發(fā)請(qǐng)求,也可以做一些安全操作,比如過濾特定報(bào)文、防止SYN Flood攻擊等。
使用七層負(fù)載均衡時(shí),服務(wù)的性能受限于代理設(shè)備的網(wǎng)卡帶寬。
常見的負(fù)載均衡策略,有輪詢、加權(quán)輪詢、ip_hash、cookie、url_hash,根據(jù)服務(wù)器響應(yīng)時(shí)間轉(zhuǎn)發(fā)、根據(jù)最少連接轉(zhuǎn)發(fā)等等。
備注:nginx可以安裝第三方插件,使用第三方實(shí)現(xiàn)的策略
輪詢:按服務(wù)器列表順序轉(zhuǎn)發(fā)請(qǐng)求,輪詢是nginx默認(rèn)的策略,本策略適合服務(wù)器配置相當(dāng)、請(qǐng)求無狀態(tài)(即不依賴session)的場景
加權(quán)輪詢:如果不同服務(wù)器配置不同,可以為配亂睜置高的服務(wù)器增加權(quán)重
ip_hash:根據(jù)ip哈希結(jié)果轉(zhuǎn)發(fā),可以實(shí)現(xiàn)同一用戶持續(xù)請(qǐng)求同一服務(wù)器(即會(huì)話保持),適合有狀態(tài)(即依賴session)的場景,對(duì)png、jpg、js、css等靜態(tài)資源的請(qǐng)求,不適合使用本策略
cookie:根據(jù)特定cookie轉(zhuǎn)發(fā)請(qǐng)求,一般也是用于實(shí)現(xiàn)會(huì)話保持,比如為服務(wù)器A、B分別增加service-flag=a、service-flag=b的cookie,后續(xù)請(qǐng)求根據(jù)cookie轉(zhuǎn)發(fā)
可以參考 haproxy實(shí)現(xiàn)會(huì)話保持
url_hash:根據(jù)url哈希結(jié)果轉(zhuǎn)發(fā),同一個(gè)接口始終請(qǐng)求同一臺(tái)服務(wù)器,一般配合緩存使用,緩存接口返回結(jié)果
根據(jù)服務(wù)器響應(yīng)時(shí)間轉(zhuǎn)發(fā):優(yōu)先轉(zhuǎn)發(fā)到響應(yīng)時(shí)間較快的服務(wù)器
根據(jù)最少連接轉(zhuǎn)發(fā):優(yōu)先轉(zhuǎn)發(fā)到連接數(shù)較少的服務(wù)器
F5有一些特有的負(fù)載均衡策略:利用從應(yīng)用程序和服務(wù)器收集到的各項(xiàng)性能指標(biāo),分析并轉(zhuǎn)發(fā)
負(fù)載均衡有兩個(gè)步驟:
1.根據(jù)什么算法選擇真實(shí)服務(wù)端,即負(fù)載均衡策略,如輪詢、加權(quán)輪詢、ip_hash、cookie、url_hash等;
2.把請(qǐng)求轉(zhuǎn)發(fā)到真實(shí)服務(wù)器,轉(zhuǎn)發(fā)方式有二層到七層負(fù)載均衡
keepalived軟件一開始是專為lvs設(shè)計(jì)的,后來加入了可以實(shí)現(xiàn)高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗余協(xié)議)功能,因此,keepalived還可以作為nginx、haproxy、mysql等服務(wù)的高可用解決方案。
以nginx為例,為了防止nginx本身由于宕機(jī)等原因?qū)е戮W(wǎng)站不可用,一般會(huì)搭兩套nginx反向代理,用keepalived提供一個(gè)VIP。
一般情況下,VIP只在nginx主節(jié)點(diǎn)上工作,如果nginx主節(jié)點(diǎn)不可用了,VIP會(huì)自動(dòng)漂移到從節(jié)點(diǎn),自動(dòng)漂移的原理即VRRP協(xié)議。
VIP漂移到從節(jié)點(diǎn)后,如果主節(jié)點(diǎn)恢復(fù)正常了,VIP是否漂移回主節(jié)點(diǎn),取決于當(dāng)前模式是搶占模式還是非搶占模式。
下圖是一張簡單的架構(gòu)圖,解釋如下:
以上觀點(diǎn)純屬個(gè)人意見,如果錯(cuò)誤,歡迎指出,有些地方寫的很簡單,是因?yàn)槲乙膊欢畘
linux 三層負(fù)載均衡的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux 三層負(fù)載均衡,實(shí)現(xiàn)高效響應(yīng)與穩(wěn)定性:探究 Linux 三層負(fù)載均衡技術(shù),lvs負(fù)載均衡(簡介,三種工作模式,四種常用算法),負(fù)載均衡:F5,Haproxy,lvs, nginx的信息別忘了在本站進(jìn)行查找喔。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動(dòng)服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長,共創(chuàng)價(jià)值。
當(dāng)前題目:實(shí)現(xiàn)高效響應(yīng)與穩(wěn)定性:探究Linux三層負(fù)載均衡技術(shù)(linux三層負(fù)載均衡)
文章鏈接:http://m.fisionsoft.com.cn/article/cohoiji.html


咨詢
建站咨詢
