我想确定如何加载平衡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