2011-09-27 67 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只是一個實例。您需要研究並向數據庫添加聯合,這與「添加實例」或「更新配置文件」不同。 –

相關問題