我想確定如何加載平衡TCP流量。我瞭解HTTP負載平衡如何工作,因爲它是一個簡單的請求/響應架構。但是,我不確定您的服務器在嘗試向其他客戶端寫入數據時如何負載均衡TCP流量。我附上了一個簡單TCP聊天服務器的工作流程圖,我們希望在N臺應用程序服務器之間平衡流量。是否有任何負載均衡器可以做我想做的事情,還是我需要研究一個不同的主題?謝謝。您如何負載均衡TCP流量?
回答
首先,您的圖假定負載平衡器被用作(TCP)代理,這並非總是如此。通常使用直接路由(或直接服務器返回),或執行目標NAT。在這兩種情況下,後端服務器和客戶端之間的連接都是直接的。所以在這種情況下,它本質上是分佈在後端服務器中的TCP握手。詳情參見以下內容:
顯然TCP代理確實存在(HAProxy的是一個),在這種情況下,代理管理connecton的兩邊,這樣你的應用程序需要能夠通過傳入IP /端口識別客戶端(這恰好來自代理而不是客戶端)。代理將處理將消息回送給客戶端。無論哪種方式,它都歸結爲應用程序設計,因爲我會想像棘手的一點是有一個共同的會話存儲(某種類型的數據庫或key =>值存儲,如Redis),以便當您的應用程序服務器說:「我需要發送一條消息給弗蘭克」,它可以確定哪個後端服務器弗蘭克連接到(從數據庫),並通知服務器發送消息。通過持久連接(所有負載平衡器都可以這樣做),或通過使用像websocket這樣的固有持久性,可以減少連接(來自同一客戶端)在不同後端服務器之間的連接問題。
這可能是一個巨大的過分簡化,因爲我沒有聊天軟件的經驗。很明顯,DB服務器本身可以分佈在多臺機器中,以實現容錯和負載平衡。
感謝您提供豐富的答案。我將不得不深入瞭解這些主題以瞭解更多。你知道有什麼好的資源來學習更多關於負載均衡的知識嗎?謝謝! – 2012-01-19 14:21:32
- 1. HAProxy負載平衡TCP流量
- 2. Nginx負載均衡 - TCP,SSL,HTTPS
- 3. 負載均衡
- 4. 如何與負載均衡
- 5. 與負載均衡
- 6. MongoDB負載均衡
- 7. 如何列出GCE http負載均衡?
- 8. 流負載平衡
- 9. 使用Apache流量服務器進行負載均衡
- 10. 使用負載均衡器
- 11. yii2和負載均衡
- 12. 負載均衡的Fiware Orion
- 13. Kubernetes,GCE,負載均衡,SSL
- 14. docker swarm的負載均衡
- 15. SignalR和負載均衡
- 16. terraform負載均衡多lisstners
- 17. IPTables端口負載均衡
- 18. 負載均衡錯誤 - NLB
- 19. Magento - AWS負載均衡
- 20. 負載均衡服務器
- 21. Azure負載均衡問題?
- 22. Asp.net負載均衡SessionState
- 23. 負載均衡部署
- 24. 負載均衡SOAP請求
- 25. Nginx負載均衡問題
- 26. HAProxy的負載均衡
- 27. Openmeeting負載均衡http
- 28. NServiceBus:負載均衡訂戶
- 29. 負載均衡和APC
- 30. 如何按需流式傳輸負載均衡
像你提出的平行佈局負載平衡它有一些問題,你注意到。以IRC爲例,它具有樹形佈局(這有助於同步並簡化向每個人發送的消息),並且根據例如,樹經過樹的數據量並不是那麼多。儘管他們有將近8萬用戶,但它仍然是freenode的運營商。 – 2012-01-19 09:25:18