我正在写一个网站,它将开始使用负载均衡器,我正试图绕过它。
似乎很多我一直在阅读的文章并没有真正给我一个直接的答案,或者我只是没有正确理解它们,我想了解真正的负载均衡是如何起作用的。 techincal方面,如果有人有任何代码可以分享,那也很不错。
我知道缓存会成为一个问题,但这也是一个不同的主题,会话。
答案 0 :(得分:17)
IIS默认情况下没有负载均衡器,但您可以使用至少两种Microsoft技术:
这两种技术都不需要任何代码本身,这是基础设施的问题。但是你当然必须记住开发过程中的负载平衡环境。例如,为了使网站真正平衡,它们应该是无国籍的。否则,您必须在客户端和服务器之间提供所谓的粘性,因此同一客户端将始终连接到同一服务器。
要使服务无状态,请不要在服务器上保留任何状态(例如,在ASP.NET网站的情况下为Session),而是在服务器场中所有服务器之间共享的外部服务器上保留。因此,例如,对集群中的所有站点使用外部ASP.NET Session server(StateServer或SQLServer模式)是常见的。
修改强>
只是澄清一些事情,关于两种提到的技术:
答案 1 :(得分:10)
IIS是否只为您完成所有平衡?
是的,如果您配置Application Request Routing:
您是否有一个位于分布式服务器上的单独Web层
是
在发送到子服务器之前做了一些工作,比如auth或其他工作?
No,ARR非常“愚蠢”:
IIS ARR不提供任何预身份验证。如果需要pre-auth,那么您可以查看Windows Server 2012 R2中可用的Web应用程序代理(WAP)。
它只是作为接受和转发请求的透明代理,同时在配置时添加一些缓存。
对于身份验证,您可以查看Windows Server 2012的Web Application Proxy。
答案 2 :(得分:5)
一些提示,也许是让自己完全熟悉的项目:
ARR因为上述所有上述答案都是“代理”,可以处理从您的用户到服务器的流量。
您可以像Konrad指出的那样处理 State ,或者您可以让ARR执行“粘性”会话(确保客户端始终转到“此服务器” - 可能是维护的服务器特定客户的状态。请参阅有关该答案的讨论/评论 - 这很棒。
我没有佩戴IT /服务器帽这么长时间,并且坦率地说没有触及群集手(总是“由某些提供商自动处理”),所以我确实从我们的主机那里提出了这个问题,“我们的集群/服务器之间的复制是什么/如何”完成?“ - 问题包括
之类的内容 SSL :ARR can handle this for you as well,这太棒了!但与所有权力一样,如果您在代码中检查/验证,则会出现“骗局”,例如: HttpRequest.IsSecureConnection,好吧,它始终是false
。您的服务器/虚拟机没有证书,ARR可以。加密的conn位于客户端和ARR 之间。 ARR到您的服务器/虚拟机不是。正如链接所解释的那样,如果您更喜欢它(没有卸载),您可以......但这意味着您的所有服务器/ VM都应该拥有一个证书(以及与上述“复制”相关的方式如何开始在您的头)。
不仅仅是全面的,只是从记忆中列出的东西...... Hth