什么是負載均衡—萬年小白的翻身之作
什么是負載均衡呢?筆者在接觸這個技術詞語的時候,從字面上很好理解,就是讓負載平衡,均勻。但是,隨著學習了解,卻越發(fā)對這個概念模糊起來,到底有什么應用,到底如何實現呢?對于像筆者這種“萬年小白",想要搞清楚什么是負載均衡,還真不是一句兩句能說清楚的。那么,在學習的過程中,筆者發(fā)現一篇文章,很基礎,文章也很直白。那么,在此,推薦給大家,希望能讓像我這樣的初學者掌握其中的基礎概念。
負載均衡的作用:把不同的客戶端的請求通過負載均衡策略分配到不同的服務器上去。
負載均衡的基本工作方式:通過更改請求的目的地址對請求進行轉發(fā),在服務器返回數據包的時候更改返回數據包的源地址保證客戶端請求的目的和返回包是同一個地址。
現在大家基本上已經知道了什么是負載均衡,以及對它的作用和工作方式都有了一個了解。下面我們再來細化一下它的內容。
負載均衡設計的三個要素:分發(fā)策略、會話保持和服務器健康檢查。
分發(fā)策略:即負載均衡設備根據什么樣的策略把請求分發(fā)到不同的后臺服務器上。最簡單的算法就是輪詢,把用戶的請求依次分配到服務器上。
會話保持:在大部分的應用中都會涉及到服務器Session控制。而且這些Session通常不會在服務器之間進行復制的。也就是說一個用戶在登錄的時候,如果分配到了某一臺服務器上,則最基本的要求就是這個用戶后續(xù)的請求都分配到這臺服務器上。如果分配到其他的服務器上則可能不認識這個用戶的請求,而造成請求失敗。最簡單的會話保持策略是源地址會話保持,也就是負載均衡設備認為同一個源地址過來的所有請求都是發(fā)自于同一個客戶端。在源地址會話保持的情況下,一個客戶端的第一個請求會按照負載均衡策略進行分配,一旦分配了一臺服務器之后,后續(xù)的請求都會發(fā)到這臺服務器。當然,對于一些應用如新聞、圖片等靜態(tài)的內容就不需要會話保持了。
健康檢查:負載均衡設備必須檢測后臺服務器是否在正常工作,如果發(fā)現某一臺服務器出現了故障,則需要把這臺服務器從負載均衡組里面摘掉。當故障服務器恢復服務的時候,再把服務器重新加入到負載均衡組里面進行處理。
四層負載均衡:就是以TCP的一個連接為最小單位,也就是以一個Socket連接的最小單位來進行轉發(fā),在一個Socket里面跑了多少個交易和負載均衡無關。
七層負載均衡:負載均衡設備可以按照協議識別每一筆交易,并以每個交易為最小單位進行轉發(fā)。比如在一個HTTP 1.1的連接中可以包含多個Request/Response,四層負載均衡一旦在確定第一個連接的分配后,就不能對后續(xù)的request /response進行后續(xù)處理了。而七層負載均衡處理能把每一個http request/response分別進行處理。
到此,相信大家對什么是負載均衡有了更深一步的了解了,但是,一個技術的應用不會只局限在一兩個地方,現在就來為大家詳細說一下負載均衡的方式。
負載均衡實際上有多種方式:
1、DNS負載均衡,通過DNS協議實現,對于同一個域名,DNS可以同時提供多個IP地址對應,瀏覽器會選擇第一個地址發(fā)出請求,而多個DNS地址在 Local DNS返回給客戶端的時候會輪詢返回,所以不同的用戶得到的第一個地址是不一樣的。因此,對一個域名提供多個地址可以實現負載均衡的效果。另外一種DNS 負載均衡的方式是DNS服務器判斷客戶端local DNS的源地址,根據不同的源地址返回不同的IP地址和域名對應。比如來源是網通,就返回網通的服務器地址,來源是電信,就返回電信的服務器地址。這樣也能實現負載均衡的效果。
2、NAT負載均衡,在前面一貼已經講過了,就不多說了。
3、重定向負載均衡,一些協議比如HTTP是可以支持重定向的,負載均衡設備通過算法決定用戶的請求應該去某臺服務器的時候,就返回一個302重定向指令使用戶重新發(fā)送一個請求到目的服務器。這樣實現負載均衡。
好了,對于什么是負載均衡,我們就先介紹到這里了,由于筆者也是初學,可能知識只是基礎概括,歡迎廣大的讀者,愛好者指點迷津。