陷阱:从单个服务器升级到Web场

时间:2008-11-22 18:13:26

标签: asp.net windows-server-2003 web-farm

我们公司目前运行两台Windows 2003服务器(一台Web服务器和一台MSSQL 8数据库服务器)。我们计划在Web场设置中添加另外两台服务器以实现冗余/可用性。我们的网站主要是ASP.NET,我们有几个PHP站点,但这些站点主要是静态的,没有数据库。

任何经历过这个过程的人都有任何我应该注意的问题或其他要点吗?并且使用Windows Server 2008会为这种情况提供任何额外的优势(所以我可以说服我的老板升级:)?

感谢。

6 个答案:

答案 0 :(得分:4)

如果你有动态负载平衡(即我的第一个请求转到服务器X,但我的下一个请求可能转到服务器Y或Z),你会发现In-Proc会话不起作用。因此,您将需要粘性会话(您的负载均衡器将始终将我(=我的会话)发送到服务器X)或进程外会话(即存储在SQL Server中)。

答案 1 :(得分:4)

像迈克尔说的那样,你需要照顾你的会话。理想情况下,使其精益化并存储在流程之外。根据您的使用方式,您将遇到类似的缓存挑战,如果您只使用asp缓存,可能会对寻求更强大的缓存技术感兴趣。

不要忘记web.config中的机器密钥和验证等内容。机器键需要在服务器上保持一致。

阅读IIS7,您应该能够找到几个很好的例子来向老板展示。

Web场可以为您提供不容忽视的部署机会和挑战。

没有上述设置的特定经验,但对于此类的一般移动。我建议逐步采用这种方法。也就是说,先迁移到Windows 2008然后再迁移。

答案 2 :(得分:4)

另外需要注意的是部署计划。部署计划似乎被遗憾地忽视和/或低估了。请记住,您正在部署到多个节点,并且您希望以合理的方式考虑如何部署和测试。

例如,假设您的服务器场中有四个节点。你是否从群集中拉出两个并进行更新和测试,然后交换另外两个重复?确定您当前的部署过程是否符合您提供的答案。仅仅因为你有X倍的服务器数量并不意味着你想要或需要做X倍的工作量。

暂时重新审视对话的缓存部分。您一定要看看分布式缓存解决方案。如果您预先缓存数据并使用带有缓存删除的回调,那么如果您不小心,您可以真正地对数据库施加压力。此外,许多分布式缓存解决方案也提供某种级别的会话状态管理。我一直非常喜欢微软的Velocity项目,虽然它只是第二个CTP版本,还没有为生产做好准备。

答案 3 :(得分:1)

除了其他人所说的,你可能还想考虑一下Richard Campbell的(.NET Rocks!)产品:

http://www.strangeloopnetworks.com/

答案 4 :(得分:1)

我们使用ASP.NET State Server来处理会话。这是免费的Windows Server 2003/2008。

然后我们必须确保机器密钥是相同的(web.config文件中的设置)。

然后我手动将每个站点脱机(使用app.offline或调用魔法文件)。或者,您可以使用IIS,只需关闭网站,然后关闭网站。

就是这样。你可能会担心分布式缓存,但那是非常核心的东西。你可以从ASP.NET的默认输出缓存中获得很多好的搜索。如果您打算进行分布式缓存,那么在您深入研究复杂性(以及某些产品的成本)之前,我会从那里开始。

哦,我们正在使用不会执行粘性会话的F5负载均衡器,因此我们需要维护会话..这就是我们使用ASP.NET状态服务器的原因。

答案 5 :(得分:1)

除了其他海报描述的会话问题之外的另一个问题是应用程序是否正在写入本地文件系统。如果他们认为文件位于本地PC上,则扩展到Web场会破坏应用程序。例如,上传的文件可能可用或不可用,具体取决于命中的服务器。将路径更改为指向共享驱动器应该可以解决此问题。