负载均衡器作为代理或重定向器

时间:2014-11-18 08:44:29

标签: c# http redirect proxy saas

目前的情况:我编写了一个c#应用服务器,它与某些应用程序(计算机/智能手机/网络)进行通信。现在我遇到了问题,应用服务器必须处理很多请求,而且速度会非常慢。

我的想法是将应用程序服务器更改为在软件集群中工作。要选择正确的应用程序服务器,我想编写一个负载均衡器,选择工作负载最低的应用程序服务器。

我的问题是,我不知道如何编写负载均衡器。负载均衡器应该作为代理工作,以便所有流量通过负载均衡器,或者负载均衡器是否会重定向到应用程序服务器,应用程序是否直接与应用程序服务器通信。

4 个答案:

答案 0 :(得分:5)

实际上有现成的产品可以完全满足您的需求,其中最成熟的产品之一是HAProxy,它充当HTTP / TCP负载均衡器/ HA代理,可以选择基于先前客户端请求的适当服务器(例如,通过cookie -insertion,它支持其他方法),我相信这正是您所需要的。

回到问题,

  

负载均衡器应该作为代理工作,以便所有流量都通过负载均衡器,或者负载均衡器是否应该重定向到应用服务器

代理实现是一个正常的路由,重定向不是一个好主意,并在客户端特殊浏览器上引起一些令人不安的问题(例如书签不会按预期工作)我会说它不会有使用代理获得更多好处(除了在client-side上进行平衡之后移除负载均衡器节点)

  

我不知道如何编写负载均衡器

简短的回答是你不需要自己编写,就像我之前说的那样,在这个领域有完善的产品,但是如果你想自己编写HAProxy Architecture manualWriting a load balancer proxy from ground up会是好的开始。

答案 1 :(得分:3)

分两部分回答:

  1. 您需要代理功能,而不是重定向或路由器 功能。重定向将显示后端服务器的IP / URL 汇集到客户端,你当然不想要。客户 一旦他们知道后端IP,就可以绕过你的LB.从而, 所有流量必须通过代理

  2. 不推荐进入写一个领域 LB 即可。它是一个非常专业的功能,有很多 可以为此部署的免费/商业烘焙产品。您 可能会选择HAProxy,Appache HTTPD,Microsoft NLB,NginX之一。每个都提供了许多负载平衡算法的配置选择,您可以使用它们。

答案 2 :(得分:2)

重定向会更改最终用户的URL,这通常不是一个好主意。

您尝试做的事情是可能的,但非常复杂。构成“工作负载”的因素很多,包括CPU,驱动器活动(可能在多个驱动器上),网络活动(可能在多个网卡上)和软件锁定。能够有效地监控所有这些事情是一个非常大的项目(我从来没有听说过任何人将锁定考虑在内)。整个公司都致力于做这样的事情。

根据您的情况,我建议使用Microsoft的内置网络负载平衡功能。它实现了更多的随机负载平衡,但它完成了工作,对于绝大多数应用程序,随机分配请求会导致相当均匀的工作负载。

如果这还不够,请购买硬件负载均衡器,或计划至少两周的硬核编码,以便根据CPU,驱动器活动和网络活动进行适当平衡。

答案 3 :(得分:2)

准备使用像Apache + mod_cluster这样的负载均衡器。 可以创建配置,如...... Apache + mod_cluster - > Tomcat1,Tomcat2,Tomcat3,Tomcat4。 所有请求都将来到Apache + mod_cluster,如果它不是静态的,而是分布在Tomcat1,Tomcat2,Tomcat3,Tomcat4之间。 如果请求是静态类型,那么它将仅由Apache处理。 配置Stick Session是可能的,也是可取的。

mod_cluster的主要优点是服务器端负载平衡。 Apache + mod_cluster也可以处理HTTPS请求。

http://mod-cluster.jboss.org/

相关问题