Proxy

客戶端和伺服器之間沒有橋接的負載均衡器

  • October 27, 2017

我先在這裡問了這個問題。最終我被建議在這裡問。

我正在開發一個伺服器端軟體,它使用ASIO進行客戶端和伺服器之間的 TCP 套接字通信。一切都在 C++ 中完成,因為該軟體用於極快的低延遲數據傳輸。我需要能夠在伺服器的不同實例(程序)之間分配傳入的客戶端連接。於是我學了一個新名詞——負載均衡器。現在,因為我使用 C++ 和 ASIO,我開始尋找可用的開源庫。我找到了這個。我的理解是,這是一個代理伺服器,它調解客戶端和伺服器之間的連接。也就是說,它在兩者之間架起了一座橋樑。

我有以下問題:

所有代理伺服器都這樣工作嗎?

是否可以製作一個僅將傳入連接重定向到伺服器實例而不充當活動連接期間打開套接字流量的中介的代理伺服器(或負載平衡器)?

同樣,我最終想要的是我的負載均衡器從客戶端獲取傳入的連接請求,然後“告訴”我的伺服器獲取該連接資訊(例如 IP 地址),然後繼續進行伺服器和客戶端之間的直接連接.

“正常”負載均衡器/ADC(F5 BIG-IP、Citrix Netscaler 等)將代理連接。

您想要的是基於 GSLB(或類似)的基於 DNS 的負載平衡技術(不是 DNS 循環)。我知道 F5 和 A10 也有 GSLB 實現,我敢肯定還有很多其他的。

它的基本工作原理是您將擁有一個盒子,它的工作是監視伺服器,並使用客戶端應該訪問的伺服器的 IP 響應來自客戶端的 DNS 查詢。您將擁有正常的內部(或外部)dns,但隨後您將一些 DNS 範圍委託給 GSLB 框。

從功能上講,您的客戶端將嘗試按名稱連接,它會查詢您的 dns 伺服器,該伺服器會將客戶端發送到 GSLB 框以獲取答案。GSLB 框將使用它認為最合適的伺服器響應 DNS 查詢(或下一個,或者您已配置它)。客戶端將繼續為該記錄的 TTL 命中相同的 IP,此時它將重新查詢 GSLB 框。

在這方面,負載平衡永遠不會在客戶端和伺服器之間,它只是告訴客戶端去哪裡。並且客戶端或伺服器都不需要任何關於發生這種情況的知識。就客戶端而言,它只是一個DNS查詢,它不需要知道它是一個條件查詢。

引用自:https://serverfault.com/questions/880688