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