2010-05-13 50 views
0

我是一个完全unix方式的人,但现在我们公司在ASP.NET + SQL Server集群平台下创建了一个新的应用程序。从ASP.Net访问SQL Server集群

所以我知道最好和最有效的原则和方法来缩放负载,但我想知道水平缩放的MS背景。

这个问题很简单 - ASP.Net中有没有内置的功能可以从SQL Server集群中访问最小加载的SQL Server?

任何单词,库,链接都受到高度赞赏。

我也很乐意听到围绕这个主题的最佳SQL Server实践或成功案例。

谢谢。 Pavel

回答

0

SQL Server集群不是负载平衡,它用于高可用性(例如,一台服务器死亡,集群仍然存在)。

+0

Yeap,那完全是我需要的。那么我们是否可以访问一些路由查询的proxy-sql-server,或者应该在应用程序端设计路由和集群逻辑? – Pavel 2010-05-13 16:58:34

+0

等等 - 什么是LB的MS技术?我正在阅读谷歌,但真正的经验也很有趣。 – Pavel 2010-05-13 16:59:47

+0

你是否已经知道你有负载问题,或者不是?你声明你需要负载平衡,但你没有说什么方式,所以很难指导建议。我们通过传统的集群(主节点完成大部分工作)运行一些非常繁重的负载,而没有真正的问题。 – Joe 2010-05-13 17:03:20

0

如果您使用的是SQL Server集群,则集群是主动/被动集群,因为集群中只有一台服务器拥有SQL实例,因此无法在两者之间分摊负载。

如果您有两个正在使用的数据库,您可以创建两个SQL实例,并使群集中的一台服务器拥有两个实例之一,另一台服务器拥有另一个实例。然后,将一个数据库的连接字符串指向第一个实例,将第二个数据库的连接字符串指向第二个实例。如果两个实例中的一个发生故障,它将故障切换到该实例的被动服务器。

替代方案(仍然不是负载平衡,但更容易设置IMO比群集)是数据库镜像:http://msdn.microsoft.com/en-us/library/ms189852.aspx。对于镜像,您可以在连接字符串中指定伙伴服务器名称:Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;Failover Partner=myBackupServerAddress;如果主服务器出现故障,ADO.Net将自动切换到故障转移伙伴。

最后,另一个需要考虑的选择是复制。如果您将主数据库复制到多个订户,则可以将您的负载分配给订户。没有我知道的用于分割负载的内置功能,因此您的代码需要处理该逻辑。

+0

有用,谢谢。 – Pavel 2010-05-13 17:18:07