这是一个非常广泛的问题,但希望我能得到有用的提示。目前我有一个在单个服务器上运行的 ASP.NET 应用程序。我现在需要进行扩展以适应不断增加的客户负载。所以我的计划是:
1) 将 ASP.NET 和 Web 组件扩展到五台服务器上。
2) 将数据库移至场中。
我不认为数据库会出现问题,因为就应用程序而言,它只是一个 IP 地址。然而,我现在担心 ASP.NET 和 Web 层。我已经担心的一些问题:
最简单的模型是否是仅实现一个负载均衡器,以循环方式将请求分派给五台服务器中的每台服务器?
既然 HTTPS 和 SSL 连接每次发出请求时都可以在不同的物理服务器上终止,那么它们是否存在任何问题? (例如,性能?)
对于通过 cookie 进行会话维护(登录)是否存在任何问题?我的猜测是否定的,但无法完全解释为什么......;-)
会话数据本身(存储的服务器端)是否有任何问题?显然,我需要在服务器之间复制会话状态,或者以某种方式强制请求仅发送到单个服务器。不管怎样,我在这里看到一个问题......
正如 David 所指出的,这个问题的大部分实际上更多的是管理问题,并且可能对 ServerFault 有用。他发布的链接有很好的信息值得仔细研究。
为您Session
问题:您将需要查看会话状态服务(作为 IIS 附带的独立服务,用于维护多个服务器之间的公共状态)和/或将 ASP.NET 会话状态存储在 SQL 数据库中。我确信,您可以在 David Stratton 的链接中找到这两个选项。
很大程度上来说,一旦设置了进程外会话状态,它就变得透明了。它确实需要您存储Serializable
不过,Session 中的对象。
是的,循环 DNS 是这种情况下最简单的负载平衡方法。它没有考虑每台服务器的实际负载,也没有规定一台服务器何时可能停机维护;任何获得该特定 IP 的人都会看到该站点“已关闭”,即使其他四台服务器可能正在运行。
负载平衡和处理 SSL 连接可能都受益于反向代理类型的情况;代理处理所有传入的连接,但它所做的只是加密和平衡 Web 服务器的实际请求负载。 (当然,这些问题更多的是政府方面的问题,但是......)
如果所有 Web 服务器都将自己宣传为同一网站(通过主机标头等),Cookie 不会成为问题。每个服务器都会很乐意接受使用相同域名的任何其他服务器设置的cookie,而不知道或关心哪个服务器发送它;它基于 Web 浏览器获取 cookie 值时所连接的服务器的主机名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)