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