我想建立一個能夠負載均衡UDP流量的負載均衡解決方案。就我而言,我有幾個不同的服務器將UDP包發送到負載平衡器。在每個UDP包體內,都有一個MSG-ID字段。理想情況下,我想根據該MSG-ID將UDP流量負載平衡到一組服務器。換句話說,兩個具有相同MSG-ID的UDP包應該被髮送到同一個服務器(因爲我想組裝兩個具有相同MSG-ID的UDP包來形成完整的包以供進一步處理)。但是,如果這是不可能的,那麼基於源/發送者IP的解決方案可能就足夠了。UDP負載均衡使用定製的平衡方法與UDP身體內的會話ID
Haproxy不支持UDP,所以我正在檢查nginx。但似乎只有nginx-plus(不是免費的解決方案)允許你基於ip_hash方法做負載平衡?
我想知道:
- 什麼是最好的開源的解決方案,以幫助我處理基於UDP體內定製MSG-ID負載平衡。
- nginx(免費/開源)版本是否支持基於ip_hash方法的UDP負載均衡。
- 有反正我可以欺騙UDP源/發件人IP。基本上,如果我有從多個服務器(服務器D)接收UDP包並將其轉發給一組服務器(服務器B,C)的服務器(如服務器A);我想要服務器B,C接收IP,並將IP指定爲服務器D,而不是A.
- 寫入自定義層的缺點是:讀取UDP然後形成TCP包,然後與負載平衡器保持TCP連接以轉發新形成的TCP包。在這種情況下,可以使用nginx或haproxy。
謝謝。
負載均衡可能會造成您無序傳送數據包的情況。 TCP可以處理這個問題,但它可能導致性能下降。這可能真的搞砸了UDP。 UDP是一個即忘即忘的協議,沒有保證交付。許多實時協議,例如VoIP,使用UDP。 VoIP在無序分組傳送方面存在問題。 –