F5 基本原理介紹(轉)


原文鏈接:http://kuaibao.qq.com/s/20180308G1NPIS00?refer=cp_1026
文章來源:企鵝號 - 民生運維

1. 負載均衡的基本單位

目前負載均衡設備的基本處理單位是TCP連接,也就是說當一個TCP連接建立后,在該連接中的所有客戶端請求和服務器響應信息都通過這一個TCP連接進行。

只有客戶端發起新的連接的時候,才會根據負載均衡算法重新計算,才可能分發到其他服務器上。

2. 基本工作模式

F5支持全代理模式,同時也可以工作在四層轉發模式。

全代理模式就是VS配置成standard類型,此模式下客戶端和F5建立一個連接,客戶端將請求發送給F5,F5再和服務器建立連接,並將請求發送給服務器,服務器返回信息后,F5再將返的回信息送給客戶端。在此模式下F5可以查看請求和響應的所有信息,可以根據所有信息進行分發和處理。

四層轉發模式就是VS配置成Performance L4類型,此模式下F5只做四層轉發,也就是F5只處理四層以下的信息,即端口和IP信息,具體業務數據不做任何處理。客戶端發送給F5的數據包,F5只根據需要將IP和端口處理之后就直接發送給服務器,響應信息也類似處理。在此模式下,F5只能查看四層一下信息,不處理業務信息,好處是處理過程簡單、速度快。缺點是無法對四層以上的協議數據進行精確處理。

3. 負載均衡算法

F5支持的負載均衡算法分類兩大類:靜態算法和動態算法,總共將近20種,這里只分析常用的三種算法:輪詢、比率、最小連接數。

3.1 輪詢

輪詢算法就是按照后台服務器輪流分發,不考慮服務器承受能力和壓力情況。該算法簡單、方便,主要適用於特別大量的訪問,同時要求服務器的處理性能基本一致,每個請求產生的壓力也相當。實際中該算法使用不多。

3.2 比例

比率算法是首先對每台服務器設定一定的比例,該算法根據該比例進行分發,該算法主要用於已經明確后台服務器的處理能力不同,並能夠知道處理能力的大概比例關系的情況;還有一種情況下就是,當需要對后台服務器進行遷移的時候,可以使用該算法,通過調整每台服務器的比例關系,將流量逐漸遷移。

3.3 最小連接數

最小連接數算法是一種最常用的算法,該算法會自動計算分配到每台服務器上的連接數,然后按照每台服務器處理的連接數,選擇一個最小連接數的服務器進行流量分發。該算法適用於后台服務器處理能力相當的大部分情況。該算法也是目前最佳實踐驗證的較為理想的負載均衡算法。

4. 會話保持

由於負載均衡是按照連接盡心分發的,而很多業務都有會話信息,一個會話信息會包括多個連接,從業務角度看,一個會話的連接都應該分發到同一台服務器上,這樣才能保證該會話的一致性。F5提供了超過10種的會話保持方式,這里只介紹最常用的兩種:源地址會話保持和cookie會話保持。

4.1 源地址會話保持

源地址會話保持是最簡單的一種方式,就是當同一個源IP過來的請求,就認為是同一個會話,將其分發到同一個服務器上,這種情況可能會將多個會話分發到一台服務器上,但是可以滿足業務的基本需求。

該方式的優點是,根據源IP地址判斷,滿足所有IP協議的使用,使用范圍廣;缺點是:很多用戶通過proxy上網,這樣會把多個用戶的多個會話當成一個會話,發送到一台服務器上,引起負載不均,同時,針對當前手機用戶,會存在上網方式變化的情況(例如:從WiFi切換到4G等),源地址會發生變化,導致會話保持失敗。

4.2 Cookie會話保持

Cookie會話保持采用在用戶訪問的響應信息中增加一個cookie標識,來標識這個會話分發的具體服務器,這樣用戶第一次來訪問的時候是沒有這個cookie標識的,就可以負載均衡,第二次之后就會帶有這個標識,這樣就能夠將后續的訪問都分發到同一台服務器。該cookie一般設置為session cookie,就是該cookie和瀏覽器的會話聯系,當你清除瀏覽器的會話信息或關閉瀏覽器再重新打開的時候,cookie會被清除。再通過該瀏覽器訪問的話,就不會帶有原來的cookie信息,F5就認為是一個新的會話。

該方式的優點是,能夠更精確的標識一個用戶的會話,比較准確,使得后台服務器的壓力相對比較均衡;缺點是:cookie屬於http協議,對於非http協議,無法使用該方式。

5. 健康檢查

負載均衡是對后台服務器的流量均衡分發,但分發的前提是要求服務器能夠正常提供服務,健康檢查就是判讀服務器是否能夠提供服務的方法。F5提供的健康檢查方式有將近40種,這里只介紹常用的三種:ICMP、TCP、HTTP。

5.1 ICMP

ICMP是最簡單的方式,就是對真實服務器發送”ping”命令。“ping”是常用的程序來確認一個IP地址是否在網絡中存在,或者用來確認主機是否正常工作。

5.2 TCP

F5會試圖聯接到一個特定應用在運行的TCP端口。簡單理解就是通過telnet連接服務的特定端口,如果能夠連通,則正常;如果不能連通,則服務有問題。在深入的情況下,還可以在在連通端口后發送特定命令,並判斷返回結果。通過是否符合預期來確定服務器工作狀態。

5.3 HTTP

HTTP用於檢查http服務的狀態,用戶可以定義發送和接受的字符串,發送字串是指發送到一個服務器的請求命令,例如:“GET /” 字符串發送到一個HTTP 服務器。服務器回應得字符串要求與設定的字符串相匹配,例如“f5.com”。如果不匹配則認為服務器有問題,不能提供正常服務。

6. 節點狀態類型

為了更好的控制流量、遷移流量,F5對后台服務器節點操作,形成三種狀態:Enabled、Disabled、Forced Offline。

6.1 Enabled

Enabled是服務器節點的正常狀態,當服務器能夠提供正常服務的情況,將該節點設置為Enabled狀態,該狀態下,服務器節點能夠正常提供服務,接收所有請求。

6.2 Disabled

Disabled是當服務器需要進行維護時,希望后續流量不分發到該服務節點上時設定的狀態。該模式下該服務節點只接收已經建立的連接的信息和已經存在會話保持記錄信息的流量信息,不接收沒有會話保持記錄的新建連接。該狀態下,由於一些業務的連接信息或者會話保持記錄信息比較長,可能會在很長時間后依然有流量處理。

6.3 Forced Offline

Forced Offline是當服務器需要緊急維護時,需要盡快下線設備情況下設定的狀態。該模式下該服務節點只接收已經建立的連接的信息,也就是說已經建立的連接的信息繼續完成,其他所有請求都會分發到其他服務節點。該狀態下,只要不是長連接,基本上都會很快沒有流量。

7. SSL卸載

SSL的啟用增加了業務的安全性,但SSL的加解密會消耗大量的計算資源,為了解決服務器性能不夠的問題,可以在F5上進行SSL卸載,即客戶端到F5采用SSL加密協議,F5和服務器之間運行http明文協議。這樣既實現了業務的加密處理,保證了安全性,也解決了服務器SSL卸載性能不夠的問題。

7.1 單向認證

單向認證是只需要在服務端配置證書和key,客戶端不需要證書。客戶端通過獲取服務器證書驗證服務器的合法性,同時使用服務器證書和服務器進行加密處理。F5作為SSL服務器端,需要導入證書和key,客戶端通過訪問F5上的SSL服務,同時和F5進行SSL協商,實現SSL加密。

7.2 雙向認證

雙向認證是在單向認證的基礎上,要求客戶端也提供證書,服務器在協商過程中,也會驗證客戶端證書的有效性及身份,確保客戶端的真實性。F5在配置層面要求在單向認證的基礎上,配置客戶端證書的根證書,這個根證書用來驗證客戶端證書的有效性。

7.3 加密算法

在SSL卸載中,F5提供了RSA、ECC等各種算法,滿足當前SSL的各個版本的要求,同時提供了各種算法的配置方法,包括SSL版本:SSLv2、SSLv3、TLS1.0、TLS1.1、TLS1.2等。目前支持蘋果公司要求ATS以及中國網聯SSL算法的要求。

8. 部署方式(串聯、並聯)

F5設備支持各種靈活的部署方式,常用的有串聯和並聯兩種部署方式。下面分別介紹一下。

8.1 串聯

串聯是F5的最基本部署方式,在這種情況下,F5上配置2個vlan,分別配置不同網段的地址,客戶端和服務器端分別位於這兩個不同的網段。該部署方式適用於新建網絡或者網絡出口,便於使用網絡隔離的場景。

8.2 並聯

並聯主要用於F5對服務器負載均衡的情況,F5只配置一個vlan,該vlan和服務器在同一網段,為了保證往返路徑的一致性,要求F5上啟用SNAT功能,這樣服務器收到的請求信息的源地址會轉換成F5的地址,這樣回包的時候,就能夠直接回給F5處理。在此情況下,如果服務器需要審計或記錄客戶端的正式地址則需要特殊處理。這種模式適用於F5對其后端業務按需做負載均衡,這樣只有需要做負載均衡的流量才會經過F5,其他流量可直接通過網絡轉發,不必再次經過F5。

8.3 源地址透傳

源地址透傳是指,將客戶端的源地址傳遞給服務器,用於對用戶業務記錄或審計。F5有兩種方式可以實現源地址透傳,第一種:F5不啟用SNAT(源地址轉換),同時服務器網關指向F5;第二種:F5將客戶端源地址插入到http header中。

第一種方式,主要用戶串接模式,服務器網關指向F5,同時F5關閉SNAT。這樣服務器收到的數據包的源地址就是客戶端的源地址,直接讀取即可。這種方式可以適用於TCP協議,http協議也可以使用,但http協議更多使用第二種方式。

第二種方式:F5將客戶端源地址插入到http header中。在http協議中有一個header是x-forwarded-for,這個header就是在源地址發生變化后,存儲原來的客戶端地址,F5可以在做源地址后,將原來的客戶端地址存儲到x-forwarded-for中,服務器端需要的時候,直接讀取這個header即可獲取到客戶端地址。該方式只適用於http協議,其他協議沒有相應的設置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM