如何为高使用率的ASP.NET应用程序负载均衡SQL Server 2008?


12

假设您有一个使用ASP.NET和IIS 7的成功Web应用程序。它会生成许多对SQL Server 2008数据库的调用,并且预计将以99.9%的正常运行时间对公众开放(停机时间为8小时,每分钟45分钟)年)。

我们的目标是:

  • 在服务器上安装Windows Update,而不会导致客户停机
  • 防止由于超时而导致服务器上的硬件崩溃使ASP.NET应用程序变慢

与ASP.NET应用程序的负载平衡不同,SQL的负载平衡似乎要困难得多。为使用Microsoft堆栈的Micro-ISV设置简单的负载平衡SQL Server 2008 R2群集的最佳实践是什么?


几点评论:我们所做的是编写ASP.NET应用程序,该应用程序可以在“脱机”模式下工作,而在连接超时时无需连接到数据库。它降级为“基本”服务,而不是功能全面的应用程序。我也看到了有关Netflix的混沌猴子的做法,是鼓舞人心: readwriteweb.com/cloud/2010/12/...

你是什​​么情况 您是在服务器数量有限的托管环境中,还是在托管自己的东西,可以使用现金和扩展服务器数量的能力?

@Jay:与许多Micro-ISV一样,我们有两台专用服务器正在过渡到Rackspace Cloud托管。如果需要,我们可以提供两个专用的SQL Server盒,但我想知道是否有更好的方法。

将数据库移至SQL Azure。然后,您摆脱了服务器故障,采购和更新的噩梦。除了您的工作副本外,您的数据还重复了两次,并且还为您处理了负载平衡方面,而实现/管理SQL Server的实际成本却很少,例如硬件,软件许可,服务器支持时间等。
布雷特·里格比

Answers:


4

如果需要高可用性,则Windows / SQL Server群集或SQL Server数据库镜像可以提供解决方案。如果您以前从未做过群集工作,则确实需要进行大量规划和熟悉,但是它对应用程序是透明的。

使用SQL Server可以实现负载平衡,但并非适合胆小者。这是在SQL Server之前使用Windows网络负载平衡(NLB)的解决方案。如果它们是只读的,则NLB中的SQL Server本身更易于管理,但是如果您将事务复制与可更新的订户一起使用,则它们可以是可读写的。但是,此复制类型在将来的版本中被标记为不推荐使用。

最后一种可能性是可伸缩共享数据库,但是它们肯定是只读的。

更多阅读:

查看有关SQL Server 2005高可用性的Allan Hirt的Apress书籍,以及来自Apress的Pro SQL Server 2005/2008复制。

可扩展的共享数据库:http : //technet.microsoft.com/zh-cn/library/ms345392.aspx


2

关系数据库系统很少像Web服务器那样平衡负载。经典的负载平衡方法的问题在于,所有数据库都必须保持恒定同步。如果两个服务器在任何时间点都不具有相同的状态,则关系模型将毫无价值。

从您的问题来看,您似乎根本没有尝试完成负载平衡,这主要是一种性能指标,可确保只有尽可能多的用户访问该服务器可以处理的每台服务器。听起来您好像需要高可用性设置。既然您说您正在使用SQL Server,所以我将研究故障转移。这意味着,如果主数据库不可用,则客户端将尝试访问故障转移服务器。当主实例从脱机状态恢复为联机状态时,SQL Server可以使主实例和每个故障转移保持同步,还可以将主实例与故障转移重新同步。


0

好的,我们开始。无法完成。并非没有应用程序更改。

  • 安装更新-使用群集或镜像来确保您有两个可以运行的数据库,或者可以更快地故障转移到另一台计算机。强烈建议使用镜像。
  • 重写应用程序以解决该问题(即连接失败,需要透明地重新连接,以便随后连接到副本)。

意识到当您部署新的副本/进行数据库架构更改时,仍然需要关闭应用程序进行维护。


0

一个经济有效的答案通常是使用便宜的商品平衡服务器层托管应用程序服务来缓冲数据库,这些服务器层提供了逻辑处理和数据存储,否则将占用数据库资源。显然,这需要考虑数据的波动性和缓存策略。


-1

让我给你一个侏罗纪的答案。如果您的目标包括“安装Windows更新”,那么您将无可救药。

我满脑子都是灰白的,可以回想起某个应用程序可以运行10年而不必遭受“操作系统更新”的情况。应用的使用寿命是数十年而不是几年。

因此,我的建议是:建立SQL Server数据库+应用程序的工作版本,并从MICROSOFT UPDATES中隔离数据库服务器。如果没有损坏,请不要修复。

使用可热交换的RAID磁盘。

随手准备一个镜像数据库服务器(根据TomTom的建议),以防您的硬件崩溃。


3
蒂姆(Tim),这就像是说为什么当您可以将结果存储在Excel文件中时,为什么还要使用数据库?操作系统中存在许多漏洞,建议不要安装常规更新/保持防病毒/防火墙规则为最新。不建议在任何级别上使用。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.