2011-09-27 66 views
4

我目前有一个Web应用程序,我想使用Amazon Web Services向外扩展。在Amazon Web Services上扩展SQL Server

我的web应用程序的规格:

C#ASP.NET的SQL Server

我必须为我的用户提供的文件存储,并有我的所有数据的SQL Server数据库。我想使用S3在Amazon Web Services上进行扩展。我不确定如何在Amazon Web Services上使用SQL Server进行扩展? Amazon Relational Database Service看起来不像SQL Server。我会在Windows实例上运行它吗?我将如何扩展。

+0

也许这可以帮到您? [配置亚马逊EC2中的SQL Server - 培训视频](http://www.brentozar.com/archive/2011/09/configuring-sql-server-amazon-ec2-training-video/) –

+1

这将有助于很多,如果你可以定义“比例”。我们需要知道您是否只是想要运行“普通”应用程序,或者我们是否需要考虑纵向或横向缩放的解决方案。 –

回答

7

您的应用程序中有两个不同的元素。应用程序服务器是持有ASP .Net应用程序的应用程序服务器,并且有数据库服务器。

Web应用程序服务器本质上是无状态的,因此扩展应用程序服务器将非常简单。只需在多个实例上部署应用程序,然后将负载均衡器放在它们的前面。

对于数据库服务器来说事情比较复杂。关系数据库由于其事务性和关系性而非常难以扩展,并且通常会涉及在应用程序级别编写自定义代码,以支持横向扩展方案。这实际上是一个重要的方面,因为可扩展性不仅仅是通过增加更多硬件(更多机器)来透明地实现,而且您还必须投资编码。用Sql Server进行扩展的最普遍的两种方法可能是通过镜像和分区。当Sql Server部署在云中时扩展出来并不受云本身的任何帮助,它仍将基于内置选项。

除了在非免费的数据库解决方案方面涉及到某种程度的复杂性,横向扩展可能比垂直扩展要昂贵得多。例如,考虑以下情况:

1×10000 $机+ 1×8,000 $ SQL服务器专业执照= 18000 $

10×1000 $机+ 10×8000个$ SQL服务器专业执照= 90000 $

由于它只需要一个Sql Server许可证,昂贵的机器最终要比使用10个许可证的便宜的10台机器便宜得多。

现在我已经到了云端扩展的地步,事情变得复杂了一点。云提供商给你的实质是虚拟机。虚拟机在划分CPU和RAM内存方面非常出色,如果需要,可以通过增加更多的CPU功率和更多的内存为机器增加更多功率。这很好,但数据库高度依赖于I/O(硬盘)速度,这是虚拟机不太好的一个领域。

相关亚马逊云优惠和Sql Server我可以推荐this非常好的文章(我实际上通过遵循@marc_s提供的链接)。为了在扩展方案上实现良好的I/O速度,作者正在使用EBS卷。这种方法的问题在于,EBS卷不是您已部署数据库的服务器内部的硬盘,而是通过网络访问的存储卷,并且其效率会大大降低。

如果您没有与亚马逊绑定,那么您可以尝试在其基础架构中也提供物理机器(专用服务器)的云提供商。据我所知gogrid这样做,但也可能有其他人。我们的想法是将数据库部署到专用服务器(良好的I/O性能)和虚拟机上的应用程序服务器(这些服务器可以水平扩展)。

微软也有一个云服务,叫做Windows Azure,它可能是目前最有趣的一个,但在我看来,它正在让他们的关系数据库产品失望。他们有一个专门的服务,称为Sql Azure。它的一个主要优点是比正常数据库更容易管理,但是它的缺点是缩放比例非常有限。唯一的缩放选项是数据库大小,只能达到50Gb。他们没有提及任何关于数据库交付的性能,也不能进行与此相关的任何配置。有可能性能低于廉价专用服务器的性能(实际上有人在StackOverflow上发布帖子,人们抱怨Sql Azure速度与物理机器相比)。您可以使用分片进行扩展,但如上所述,这会影响并限制数据库结构及其在代码中的使用方式。

结论

  • 如果您正在构建与关系数据有非常大的需求的业务应用,那么云提供商可能不会是你最好的选择。您可以考虑使用您自己的硬件或可能提供给您选择使用专用服务器的提供商。
  • 您可能会考虑使用nosql数据库解决方案构建您的应用程序。这些更具可扩展性,但缺点是它们有一些功能限制(无交易,无连接,有限的索引)。如果您对这种方法感兴趣,Sql Table Storage可能是一个开始的地方。你也可以考虑采用混合方法,这将涉及到你的部分数据将保存在关系数据库中,并且其中的一部分数据将保存在nosql数据库中。
  • 扩展数据库之前,请检查是否没有其他您可能首先尝试的选项。例如,检查是否存在效率低下的查询或构建缓存层,这取决于应用程序,可能会给数据库带来相当大的压力。
+0

您可能想要使用名为“预配iops”的新功能更新您的答案。它允许您为RDS实例提供特定数量的IO/s。 –

1

如果您想轻松扩展,您可能需要查看Windows Azure(www.microsoft.com/windowsazure)。 Azure可让您“随时付费” - 为实际使用的带宽和存储支付费用,同时使其基本上可以扩展为配置设置。

亚马逊所有你得到的是一堆虚拟机 - 如果你想扩大规模,有很多工作要做,以便将它转变为网络服务器场和SQL Server群集。加上SQL Server许可证在集群情况下变得非常昂贵。但是如果您想从小规模开始,您可以始终拥有一个用于Web服务器的Amazon VM,托管您的ASP.NET应用程序以及运行SQL Server的单个VM。

+0

Sql Azure不会仅使用配置文件或自动进行水平伸缩。 Sql Azure只是一个实例。您需要研究并向数据库添加联合,这与“添加实例”或“更新配置文件”不同。 –

相关问题