摘要:負(fù)載均衡算法輪詢(xún),加權(quán)輪詢(xún)。參考三負(fù)載均衡負(fù)載均衡由服務(wù)提供廠(chǎng)商提供。之后,集群內(nèi)再采用其他的負(fù)載均衡方案。參考五負(fù)載均衡工作在層,它會(huì)與分別建立連接,需要維護(hù)這兩個(gè)連接的狀態(tài)。
運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 施洪寶
一. 基礎(chǔ)知識(shí) 1.1 基礎(chǔ)什么是負(fù)載均衡?
當(dāng)單機(jī)提供的并發(fā)量不能滿(mǎn)足需求時(shí),我們需要多臺(tái)服務(wù)器同時(shí)服務(wù)。當(dāng)客戶(hù)請(qǐng)求到達(dá)時(shí),如何為客戶(hù)選擇最合適的服務(wù)器?這個(gè)問(wèn)題就是負(fù)載均衡問(wèn)題。
負(fù)載均衡主要需要解決的問(wèn)題是哪些?
1.2 負(fù)載均衡分類(lèi)從客戶(hù)端的角度上看,客戶(hù)需要最快速的得到服務(wù)器的相應(yīng),負(fù)載均衡時(shí)需要找出能最快相應(yīng)客戶(hù)需求的服務(wù)器進(jìn)行服務(wù)。
從服務(wù)端來(lái)看如何使得每臺(tái)服務(wù)器都能達(dá)到較高的利用率,最大限制的為用戶(hù)提供快速、可靠的服務(wù)是服務(wù)端需要考慮的主要問(wèn)題。
硬件
F5
軟件
二. F5負(fù)載均衡dns負(fù)載均衡
LVS負(fù)載均衡(4層)
nginx, haproxy(7層)
F5是一家美國(guó)的公司,該公司生產(chǎn)一些硬件設(shè)備可以作為負(fù)載均衡器使用(例如:big-ip), 本文后續(xù)部分所說(shuō)的F5是指其負(fù)載均衡器產(chǎn)品。
不同的產(chǎn)品實(shí)現(xiàn)的功能不一致,具體情況需要根據(jù)產(chǎn)品說(shuō)明書(shū)。
F5可以在4-7層內(nèi)做負(fù)載均衡,用戶(hù)可以根據(jù)需求進(jìn)行配置。
由于F5可以做7層負(fù)載均衡,故而可以實(shí)現(xiàn)會(huì)話(huà)管理,http處理等。
2.1 數(shù)據(jù)轉(zhuǎn)發(fā)模式standard類(lèi)型, 這種模式下,客戶(hù)端與F5服務(wù)器建立連接,F(xiàn)5服務(wù)器與真實(shí)服務(wù)器建立連接,F(xiàn)5服務(wù)器將客戶(hù)需求轉(zhuǎn)發(fā)給真實(shí)服務(wù)器,并將真實(shí)服務(wù)器的相應(yīng)轉(zhuǎn)發(fā)給客戶(hù)端,此時(shí)F5可以查看請(qǐng)求和相應(yīng)的所有信息。
四層轉(zhuǎn)發(fā)模式(performance L4), 這種模式下,F(xiàn)5只處理4層以下的數(shù)據(jù)。客戶(hù)端將數(shù)據(jù)發(fā)送給F5, F5僅將數(shù)據(jù)轉(zhuǎn)發(fā)給真實(shí)服務(wù)器,包括TCP的握手?jǐn)?shù)據(jù)包以及揮手?jǐn)?shù)據(jù)包,真實(shí)服務(wù)器需要先將數(shù)據(jù)發(fā)送給F5服務(wù)器,F(xiàn)5將其轉(zhuǎn)發(fā)給客戶(hù)端。
路由模式, 這種模式與LVS的DR模式類(lèi)似。
...
2.2 負(fù)載均衡算法輪詢(xún),加權(quán)輪詢(xún)。
源地址哈希
...
2.3 小結(jié)F5的優(yōu)勢(shì)在于功能強(qiáng)大,并發(fā)量高,能滿(mǎn)足客戶(hù)的大多數(shù)需求,但其成本較高,一般大型國(guó)企可能會(huì)使用。
2.4 參考https://f5.com/zh
https://www.jianshu.com/p/2b5...
https://wenku.baidu.com/view/...
三. dns負(fù)載均衡dns負(fù)載均衡由dns服務(wù)提供廠(chǎng)商提供。
最初的dns負(fù)載均衡提供簡(jiǎn)單輪詢(xún),不能根據(jù)客戶(hù)端或者服務(wù)端狀態(tài)進(jìn)行選擇。
目前,有些dns服務(wù)廠(chǎng)商可以提供智能dns服務(wù),用戶(hù)可以設(shè)置負(fù)載均衡方案,例如:根據(jù)客戶(hù)端ip地址,選擇就近的服務(wù)器。
對(duì)于目前大多數(shù)的公司而言,為了更好的服務(wù)用戶(hù),通常會(huì)使用dns負(fù)載均衡,將用戶(hù)按照就近原則,分配到某個(gè)集群服務(wù)器上。之后,集群內(nèi)再采用其他的負(fù)載均衡方案。
四. Linux Virtual Server(LVS)LVS通過(guò)修改數(shù)據(jù)包Ip地址,Mac地址實(shí)現(xiàn)負(fù)載均衡。
LVS由ipvs(內(nèi)核中), ipvsadm(用戶(hù)態(tài))組成。LVS需要理解tcp,ip頭部。
當(dāng)tcp握手信號(hào),SYN數(shù)據(jù)包達(dá)到時(shí),ipvs選擇一個(gè)后端服務(wù)器,將數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)。在此之后,所有包含相同的ip,tcp頭部的數(shù)據(jù)包都會(huì)被轉(zhuǎn)發(fā)到之前選擇的服務(wù)器上。很明顯,ipvs無(wú)法感知數(shù)據(jù)包內(nèi)容。
4.1 分類(lèi)LVS-NAT
LVS-DR
LVS-TUN
4.2 基本原理 4.2.1 LVS-DRLVS-DR模式的基本原理如下圖所示:
LVS-NAT模式的基本原理如下圖所示:
輪詢(xún)(Round Robin, RR)
加權(quán)輪詢(xún)(Weight Round Robin, WRR)
源地址Hash(Source Hash, SH)
目的地址Hash(Destination Hash, DH), 可以設(shè)置多個(gè)VIP
4.3.2 動(dòng)態(tài)算法最少連接(Least Connections, LC),找出當(dāng)前連接數(shù)最小的服務(wù)器
加權(quán)最少連接(Weighted Least Connections, WLC)
最短期望延遲(Shortest Expected Delay Scheduling, SED) 基于WLC。例如: 現(xiàn)有A, B, C三臺(tái)服務(wù)器,權(quán)重分別為100,200,300,當(dāng)前的連接數(shù)分別為1,2,3,下一個(gè)連接到達(dá)時(shí),通過(guò)計(jì)算期望時(shí)延選擇服務(wù)器(1+1)/100, (2+1)/200, (3+1)/300, 故而選擇C服務(wù)器。
永不排隊(duì)(Never Queue Scheduling, NQ), 改進(jìn)的sed, 如果某臺(tái)服務(wù)器連接數(shù)為0,直接連接過(guò)去,不在進(jìn)行sed計(jì)算。
基于局部性的最少連接(locality-Based Least Connections, LBLC),根據(jù)目標(biāo)ip, 找出目標(biāo)ip最近使用的服務(wù)器,如果服務(wù)器存在并且負(fù)載沒(méi)有大于一個(gè)閾值,則將新的連接分配到這個(gè)服務(wù)器上,否則按照最少連接找出一個(gè)服務(wù)器處理該請(qǐng)求。
帶復(fù)制的基于局部性最少連接(Locality-Based Least Connections with Replication, LBLCR),根據(jù)目標(biāo)ip,維護(hù)一個(gè)服務(wù)器組,每次從組中挑選服務(wù)器,如果服務(wù)器不可以處理,則從所有服務(wù)器中按照最少連接挑選出一臺(tái)服務(wù)器,并將其加入到目標(biāo)ip的處理組服務(wù)器中。
4.3 參考https://liangshuang.name/2017...
五. Nginx Load Balancenginx負(fù)載均衡工作在7層,它會(huì)與client、upstream分別建立tcp連接,nginx需要維護(hù)這兩個(gè)連接的狀態(tài)。
nginx的stream模塊可以用于4層負(fù)載均衡,但一般很少使用。
5.1 基本原理nginx做7層負(fù)載均衡的基本原理如下圖所示:
輪詢(xún)(默認(rèn))
加權(quán)輪詢(xún)
源ip哈希
響應(yīng)時(shí)間
url 哈希
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40177.html
摘要:前言最近在產(chǎn)品新版本的服務(wù)發(fā)現(xiàn)和負(fù)載均衡方案上遇到了一個(gè)問(wèn)題,在盡量不改動(dòng)原生使用方式和代碼前提下,對(duì)又重新復(fù)習(xí)了一遍,略有體會(huì)。所有訪(fǎng)問(wèn)該的請(qǐng)求,都會(huì)被轉(zhuǎn)發(fā)到后端的中。使用這種方案的原因,不外乎是外部無(wú)法訪(fǎng)問(wèn)容器服務(wù)。 前言 最近在產(chǎn)品新版本的服務(wù)發(fā)現(xiàn)和負(fù)載均衡方案上遇到了一個(gè)問(wèn)題,在盡量不改動(dòng)原生k8s使用方式和代碼前提下,對(duì)service又重新復(fù)習(xí)了一遍,略有體會(huì)。 Servic...
摘要:緩存緩存,也叫網(wǎng)關(guān)緩存反向代理緩存。瀏覽器先向網(wǎng)關(guān)發(fā)起請(qǐng)求,網(wǎng)關(guān)服務(wù)器后面對(duì)應(yīng)著一臺(tái)或多臺(tái)負(fù)載均衡源服務(wù)器,會(huì)根據(jù)它們的負(fù)載請(qǐng)求,動(dòng)態(tài)將請(qǐng)求轉(zhuǎn)發(fā)到合適的源服務(wù)器上。雖然這種架構(gòu)負(fù)載均衡源服務(wù)器之間的緩存沒(méi)法共享,但卻擁有更好的處擴(kuò)展性。 一、前言? 工作上遇到一個(gè)這樣的需求,一個(gè)H5頁(yè)面在APP端,如果勾選已讀狀態(tài),則下次打開(kāi)該鏈接,會(huì)跳過(guò)此頁(yè)面。用到了HTML5 的本地存儲(chǔ) API ...
摘要:服務(wù)教程在它提出十多年后的今天,已經(jīng)成為最重要的應(yīng)用技術(shù)之一。全方位提升網(wǎng)站打開(kāi)速度前端后端新的技術(shù)如何在內(nèi)完整打開(kāi)網(wǎng)站會(huì)直接影響用戶(hù)的滿(mǎn)意度及留存率,在前端后端數(shù)據(jù)緩存加速等等方面都有諸多可以提升。 HTTPS 原理剖析與項(xiàng)目場(chǎng)景 最近手頭有兩個(gè)項(xiàng)目,XX 導(dǎo)航和 XX 產(chǎn)業(yè)平臺(tái),都需要使用 HTTPS 協(xié)議,因此,這次對(duì) HTTPS 協(xié)議做一次整理與分享。 使用緩存應(yīng)該注意哪些問(wèn)題...
摘要:服務(wù)教程在它提出十多年后的今天,已經(jīng)成為最重要的應(yīng)用技術(shù)之一。全方位提升網(wǎng)站打開(kāi)速度前端后端新的技術(shù)如何在內(nèi)完整打開(kāi)網(wǎng)站會(huì)直接影響用戶(hù)的滿(mǎn)意度及留存率,在前端后端數(shù)據(jù)緩存加速等等方面都有諸多可以提升。 HTTPS 原理剖析與項(xiàng)目場(chǎng)景 最近手頭有兩個(gè)項(xiàng)目,XX 導(dǎo)航和 XX 產(chǎn)業(yè)平臺(tái),都需要使用 HTTPS 協(xié)議,因此,這次對(duì) HTTPS 協(xié)議做一次整理與分享。 使用緩存應(yīng)該注意哪些問(wèn)題...
閱讀 2750·2021-10-26 09:50
閱讀 2391·2021-10-11 11:08
閱讀 2132·2019-08-30 15:53
閱讀 1910·2019-08-30 15:44
閱讀 2386·2019-08-28 18:12
閱讀 2525·2019-08-26 13:59
閱讀 2858·2019-08-26 12:19
閱讀 2757·2019-08-26 12:09