Azure使用文件共享从IIS VM共享照片?

时间:2014-07-26 09:02:00

标签: asp.net iis azure azure-storage

如何创建可在VM中运行的Web服务器之间共享的文件共享,以直接访问Azure中的Blob存储?

我正在将.net 1.1中编写的现有n层网站应用程序移动到Azure虚拟机。

这是一个遗留应用程序,我想以当前形式将其移动到azure,然后慢慢更改代码以便稍后利用云类型服务。

该应用程序目前分为4个服务器:

1 x SQL数据库服务器

2 x用于应用程序的IIS Web服务器(通过循环dns进行负载平衡)

用于照片的1 x IIS Web服务器(托管数百万用户上传的照片)

照片服务器是一台怪物机器,其RAID 10阵列为12 HDD。

用户可以使用简单的文件共享将通过Web服务器传输的照片上传到照片服务器。例如:

\\PhotoServer1\UserData\Photos\

文件共享作为Z:\驱动器安装在2台Web服务器上,通过共享读取文件到照片服务器没有问题。

照片服务器还充当IIS Web服务器,用于托管文件。例如:

http://photos.mysite.com/userdata/photos/234/234photo.jpeg

我可以轻松地将SQL服务器和IIS Web服务器移动到Azure上的虚拟机。

但我很难理解如何以当前形式实现文件/网络照片服务器。

我想在网络服务器上设置文件共享,然后通过网络服务器虚拟机读取/写入/删除照片。

我可以简单地为文件/ Web服务器设置另一个VM,但它是一台繁忙的机器,我需要创建一个RAID阵列的驱动器,这似乎毫无意义,因为Azure存储已经自行完成了这项工作。

我无法理解blob存储,我知道它不是硬盘驱动器,但是对于传统应用程序来说这样做会很方便,尤其是在服务器之间共享它。

问题:

  1. 如何创建可在VM中运行的Web服务器之间共享的文件共享,以直接访问Azure中的blob存储?

  2. 如果我确实将所有内容存储在blob存储中,我是否还需要一台IIS服务器来托管这些文件,如果是这样,它还会通过文件共享挂载到IIS?

2 个答案:

答案 0 :(得分:2)

Azure存储有两种可以解决问题的潜在服务 - Azure Blob和Azure文件。正如David在他的回答中提到的,Azure文件服务的设计看起来与标准文件共享完全相同,只要您从云中的VM访问它即可。您可以将共享安装在一个或多个VM中,并像访问本地文件共享一样访问它。 David发布的链接是一个很好的起点http://blogs.msdn.com/b/windowsazurestorage/archive/2014/05/12/introducing-microsoft-azure-file-service.aspx,也可以在此处查看:http://blogs.msdn.com/b/windowsazurestorage/archive/2014/05/27/persisting-connections-to-microsoft-azure-files.aspx

Blob存储有点像文件系统,但存储在云中并通过REST API访问。对于基于代码/示例的blob存储概述,我建议使用http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/下的代码示例。如果您使用blob存储,则可以让客户端直接访问blob,具体取决于您的身份验证需求。 Blob存储支持三种类型的身份验证 - 匿名(任何人都可以访问),共享密钥(必须具有要访问的存储帐户密钥,帐户密钥才能完全访问存储帐户中的所有内容),以及SAS(共享访问签名,提供访问权限) blob或容器级别)。 SAS通常是一个不错的选择,并且不需要托管文件的服务器,尽管客户端确实需要一种方法来访问SAS令牌。有关身份验证概述,请参阅http://msdn.microsoft.com/en-us/library/azure/hh225339.aspx

请注意,blob和文件服务是分开的,您无法访问另一个中的数据。

答案 1 :(得分:0)

有多种方法可以实现文件共享,包括按照您的建议将其托管在VM上。但是,这不会为您提供持久性解决方案,因为如果VM脱机,文件共享将脱机。

Azure现在提供文件服务(仍在预览中),可让您设置SMB ​​2.1(由blob存储支持)。这将允许您运行net use以将驱动器号作为驱动器号挂载,然后离开。

可能会找到更多信息here