使用 SSL 直通的負載平衡系統中的握手

使用 SSL 直通的負載平衡系統中的握手

讓負載平衡器將 SSL/TLS 加密的資料傳遞到伺服器。我想知道如果建立了與客戶端的新 HTTPS 連接,握手是如何處理的:握手是一種有狀態通訊。例如,為了驗證客戶端完成的訊息,伺服器需要知道迄今為止在伺服器(場)和客戶端之間交換的所有握手訊息。因此,據我所知,有三種可能性:

  1. SSL/TLS 資料保存在所有伺服器共享的快取中

  2. 握手訊息的內容被複製到所有伺服器。

  3. 負載平衡器將來自客戶端的所有握手訊息定向到同一伺服器。

問題:這樣的環境通常會使用什麼場景?在處理我錯過的握手方面是否有進一步的政策?


添加:我面臨這樣的說法:我的問題是重複的,我被告知要編輯我的問題,以解釋為什麼它與負載平衡和HTTPS策略。這是我的問題和其他問題之間的比較:

a) 我想出了在負載平衡環境中處理 https 狀態的三個選項,並詢問在實踐中使用了哪一個(或可能是其他選項)。

b) 在另一個問題中,OP 使用選項 3(「同一伺服器」),即所有具有相同 IP 的請求都會路由到同一台伺服器。然而,由於他們的大多數客戶都使用相同的 IP,lb 的工作效果不佳,OP 要求出路。五分之四的答案給出了實際上保留上述選項 3 的建議。那裡的答案的一部分(“目標伺服器的 DNS”),我不明白。

所以問題仍然是,選項 1(“ssl 快取”)和 2(“ssl hanshake 資料的複製”)是否在實踐中使用。文章http://wtarreau.blogspot.de/2006/11/making-applications-scalable-with-load.html似乎更傾向於選項 1(請參閱“4. 專用 SSL 快取場”)。

答案1

如果要求在設定的所有部分都使用 HTTPS,則在用戶端和 lb 之間完成握手,然後在 lb 和伺服器之間擁有一組單獨的憑證會更容易/更可行。

SSL 直通是可能的,並且某些 CDN 提供此功能。據我了解,所有流量均按原樣轉發,但這不允許負載平衡。

要實現此功能,您需要負載平衡等級的會話黏著度。

答案2

您可以在 Nginx 中透過 TCP 流代理進行 SSL 傳遞

https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

相關內容