4

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

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

谢谢。

4

6 回答 6

4

另一件需要注意的事情是您的部署计划。可悲的是,部署计划似乎被忽视和/或低估了。请记住,您正在部署到多个节点,并且您希望考虑如何以逻辑方式进行部署和测试。

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

只是重新审视一下对话的缓存部分。您绝对应该看看分布式缓存解决方案。如果您正在预缓存数据并使用带有缓存删除的回调,如果您不小心,您真的可以对数据库造成冲击。此外,许多分布式缓存解决方案也提供了某种程度的会话状态管理。我一直非常喜欢微软的 Velocity 项目,尽管它只是第二个 CTP 版本,还没有准备好投入生产。

于 2008-11-23T03:07:28.430 回答
4

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

于 2008-11-22T18:19:24.313 回答
4

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

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

阅读 IIS7,你应该能够挑选出几个很好的例子来向你的老板炫耀。

网络场可以为您带来不容忽视的部署机遇和挑战。

对上述设置没有具体经验,但对这种一般动作没有经验。我建议分阶段采用这种方法。也就是说,先迁移到 Windows 2008,然后再进行农场。

于 2008-11-22T18:26:23.410 回答
1

我们使用 ASP.NET 状态服务器来处理会话。Windows Server 2003/2008 免费提供。

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

然后,我手动使每个站点脱机(使用 app.offline 或任何调用的魔术文件)。或者,您可以使用 IIS 并关闭站点并“打开”离线站点。

就是这样。您可能会担心分布式缓存,但这是非常核心的东西。您可以从使用 ASP.NET 的默认输出缓存中获得很多好处。如果您要进行分布式缓存,我将从那里开始,然后再深入研究复杂性(以及某些产品的成本)。

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

于 2008-11-30T10:45:30.220 回答
1

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

于 2008-11-30T11:20:16.733 回答
1

除了其他人所说的之外,您可能还需要考虑研究 Richard Campbell 的(.NET Rocks!)产品:

http://www.strangeloopnetworks.com/

于 2008-11-22T19:51:26.640 回答