深入了解負載均衡器
每個負載均衡器都是反向代理,但并非每個反向代理都必須是負載均衡器。
問題: OSI模型是什么樣的?
問題: 負載均衡器的需求是什么?
答案 → 為了創建一個容錯系統,使得當客戶端向負載均衡器發出請求時,它可以與一個或多個后端進行通信。
問題: 解釋一下第4層負載均衡器是如何工作的?
答案 → 第4層負載均衡器的工作原理如下:
(1) 握手 → 第4層負載均衡器首先與后端服務器建立TCP連接。
(2) 預熱 → 負載均衡器可以與后端建立多個基于TCP的連接,然后保持這些連接處于活動狀態。這是為了確保每當客戶端連接到負載均衡器時,它不必每次都經歷連接預熱過程。
(3) 客戶端連接 → 當客戶端連接到第4層負載均衡器時,該連接將在負載均衡器級別具有狀態,并將映射到后端服務器的任何一個連接。因此,第4層負載均衡器是有狀態的。
- 第4層負載均衡器只處理端口和IP地址。
- 數據被分段,但它不能簡單地觸摸數據或解析數據。
- 客戶端發送到第4層負載均衡器的所有數據段都將最終發送到某個服務器上的一個專用連接。
- 如果客戶端向第4層負載均衡器發送一些數據,它不能只將一個段發送到一個服務器,然后將另一個段發送到另一個服務器,因為數據將會損壞,一切都會變得糟糕。
問題: 第4層負載均衡器是否也充當NAT層?
答案 → 是的,第4層負載均衡器充當客戶端的NAT層/網關/路由器。
- 請求 → 在與后端建立全新的TCP連接時,負載均衡器更改目標IP地址。客戶端完全不知道這個概念。
- 響應 → 第4層負載均衡器知道,從應用連接接收到的任何內容都必須發送回帶有原始客戶端的這個連接。這是負載均衡器保持的映射表。
問題: 演示從客戶端到后端的基于Http的調用(Restful API調用)的例子?
答案 → 想象一下客戶端向負載均衡器發送Http調用。還想象一下,這個特定的請求被分為2個段。
步驟 #1) 請求到達負載均衡器,然后負載均衡器選擇將此請求的所有段發送到某個后端服務器。
步驟 #2) 現在,假設客戶端發送的是另一個段(段#3),然后將其寫回同一連接。
- 在這個第4層負載均衡器上沒有緩沖。它只是讀取并轉發數據段。
- 第4層負載均衡器不知道HTTP。它只知道和理解TCP。傳遞到這個第4層負載均衡器的所有數據(無論是基于gRPC的請求還是基于套接字的連接),它都將所有這些數據視為數據段。
- 但是,根據客戶端端的MTU和后端服務器端的MTU,負載均衡器可能會執行某種優化。它可能僅僅接收段并將該段進一步細分為多個段,反之亦然。TCP始終會嘗試擠取盡可能多的性能。
步驟 #3) 現在,假設同一客戶端在同一連接上發起了另一個請求,那么該請求也將首先被讀取,然后寫回后端服務器。
步驟 #4) 現在,假設有一位不同的客戶端發起了另一個請求,然后根據負載均衡算法,該請求可能會轉發到另一個后端服務器。
問題: 提供L4負載均衡器的公司有哪些?
答案 → 像Radware和F5-BigIp等公司提供L4負載均衡器。
問題: L4負載均衡器的優缺點是什么?
(1) 以下是L4 LB的優點:
- 這是一種簡單的負載均衡策略。它只是不讀取第7層的內容。
- 它更安全,因為它不從L7讀取數據。
- 它與任何協議一起工作。它對協議是不可知的。
(2) 以下是L4 LB的缺點:
- 它不聰明,不能與微服務一起工作。這是有粘性連接的。每個連接都沒有負載均衡。盡管我們可以配置IP和端口組合,但在生產系統中不建議這樣做。
- 如果客戶端發送POST請求或發送GET請求或發送PATCH請求,L4負載均衡器對此一無所知。它只看到這些請求作為進來的數據段。
- 它不能支持緩存,因為它不知道要緩存什么,因為它無法讀取L7層中的數據。
- 在L4 LB上,我們無法執行任何類似于“阻止某些用戶”、“阻止某些標頭”、“阻止某些身份驗證方法”的操作。
問題: 解釋第7層負載均衡器是如何工作的?
答案 → 第7層負載均衡器的工作原理如下:
(1) 握手 → 第7層負載均衡器還與后端服務器建立TCP連接。
(2) 預熱 → 負載均衡器可以與后端建立多個基于TCP的連接,然后保持這些連接處于活動狀態。這是為了確保每當客戶端連接到負載均衡器時,它不必每次都經歷連接預熱過程。
(3) 客戶端連接 → 當客戶端連接到第7層負載均衡器時,該連接將成為特定于協議的。
- 第7層負載均衡器需要理解發送到它的任何內容。
- 任何邏輯請求都將首先在L7-LB級別緩沖,理解它(即解密數據),解析它,然后決定將請求轉發到后端服務器的其中一個。
注意: 如果您希望L7 LB面向外部客戶端,則:
- 您的L7 LB必須具有存儲在其上的證書,因為此L7 LB必須首先證明其身份。
- L7 LB還必須解密數據。
問題: L7負載均衡器如何處理基于HTTP的請求?
步驟 #1) 首先,它接收請求并將其發送到后端服務器1。
步驟 #2) 接下來,假設同一客戶端發送了另一個請求,然后L7 LB實際上也可以將其轉發到其他后端服務器,因為L7 LB是無狀態的。
問題: L7負載均衡器的優缺點是什么?
(1) 以下是L4 LB的優點:
- 它提供智能的負載均衡策略。例如,如果請求是針對端點“/pictures”的,則可以將請求轉發到特定的主機組,可能是Pictures微服務。
- 另一個例子,如果請求是針對端點GET“/comments”的,則可以將請求轉發到特定的主機組,可能是評論微服務。
- 另一個例子,如果請求是針對端點POST“/comments”的,則它是寫入密集型工作負載,那么可能轉到另一個主機組,因為它具有專為此寫入密集型工作負載設計的特定數據庫。
- 因此,L7 LB非常適合微服務。
- 我們還可以在此L7負載均衡器上執行AuthN和AuthZ。?我們還可以緩存結果。
(2) 以下是L4 LB的缺點:
- 它很昂貴,因為它要做更多的工作,比如緩沖數據,讀取數據,解密數據,終止TLS連接。
- 它必須共享TLS證書。
- 它可能效率不高,實際上可能成為瓶頸,因為它正在緩沖大量數據并解析它。它可能會減慢速度。
- 它需要理解協議。