Windows Azure Storage (20) 使用Azure File实现共享文件夹

简介:

 《Windows Azure Platform 系列文章目录

 

  Update 2016-4-14。在Azure VM配置FTP和IIS,请参考:

  http://blogs.iis.net/davidso/azurefile  

 

 

  Update 2015-12-28,如果读者使用的是国内世纪互联运维的Azure China,请使用以下Azure 脚本:

  Azure PowerShell执行:

复制代码
Select-AzureSubscription -SubscriptionName 'Internal Billing'

#为存储账户和密钥创建上下文
$ctx=New-AzureStorageContext account-name account-key

#创建名为sampleshare的新共享
$fs = New-AzureStorageShare sampleshare -Context $ctx

#创建新的目录sampledir
New-AzureStorageDirectory -Share $fs -Path sampledir

#将本地计算机C盘根目录下的Log1.txt,拷贝到Azure File的sampledir目录下
Set-AzureStorageFileContent -Share $fs -Source C:\Log1.txt -Path sampledir

#Azure File的sampledir目录下的所有文件
Get-AzureStorageFile -Share $fs -Path sampledir
复制代码

 

  Azure Virtual Machine执行CMD命令:

#允许Windows自动连接到文件共享
cmdkey /add:<storage-account>.file.core.chinacloudapi.cn /user:<storage-account> /pass:<account-key>

#装载Azure File,这里可以用file.core.chinacloudapi.cn\sampleshare
net use z: \\<storage-account>.file.core.chinacloudapi.cn\<share-name>

 

============================================================

 

  我们在传统IDC托管环境运维网站的时候,经常会遇到多台Web服务器实现负载均衡的时候,后面使用同一个网络存储(SAN)。通过这种方式,可以解决文件同步的问题。

  服务器部署图,如下图所示:

  

 

  在Windows Azure公有云环境,想实现上面的架构会比较困难,主要原因有:

  1.Azure公有云不允许用户把网络存储(SAN)放置在Azure数据中心

  2.如果使用单独一台Azure Virtual Machine模拟网络存储,则这一台Azure VM会出现单点故障。  

  需要手动创建一台Active Azure VM和一台StandBy Azure VM。当Active VM宕机的时候,由StandBy VM进行托管。

 

  在Azure File出现之前,对于这种共享存储的方案可以提供的解决方案是,让用户基于Azure Storage进行二次开发,将需要共享的文件保存在Azure Storage中。但是这样的开发代价太大了,非常不方便。

 

  现在可以使用Azure File来实现共享文件夹的功能,让多台Azure Virtual Machine使用同一个Azure File,如下图:

  

  Azure File特点如下:

  1.是一个PaaS服务,提供99.9% SLA,不会出现单点故障

  2.可以同时被多台Azure VM共享,解决文件共享的问题

  3.基于SMB2.1协议,可以被Windows和Linux同时使用。

  4.可以通过REST API访问

 

  接下来,笔者做一个简单的DEMO,给各位简单介绍一下Azure File。工作内容主要分为以下几步:

  一.准备工作

  二.使用PowerShell创建文件共享

  三.在Azure Virtual Machine装载Azure File

 

 

  一.准备工作:确认Azure Storage是否可以使用Azure File功能

  1.Azure File功能目前是Preview阶段,如果我们之前创建的老的Azure Storage Account,是无法查看到Azure File的。比如笔者很久以前在香港数据中心(East Asia)创建的Azure Storage Account为leivms,是没有Azure File功能的,如下图:

  

  为了演示相关的功能,笔者创建了新的存储账号,命名为leifiledemo,创建在香港数据中心(East Asia,注意必须和VM在同一个数据中心),如下图:

  

  可以看到,上图中已经出现了Files,我们可以使用这个命名空间,来创建Azure File。

 

  2.接下来,我们需要准备以下环境:

  -  创建一个新的虚拟网络LeiVNet

  -  创建2台Windows VM,命名为LeiZhangVMOneLeiZhangVMTwo

  -  这2台VM使用通过一个Cloud Service Name:LeiZhangVM

  -  这2台VM设置高可用集:LeiAvbSet

  -  这2台VM保存在我们之前创建的存储账号leivms,注意这个存储账号和我们之前创建的leifiledemo不同

  -  注意:我们Azure VM所在的存储账号,和Azure File所在存储账号,必须在同一个数据中心。这里笔者使用的都是香港数据中心(East Asia)

 

 

 

  二.使用PowerShell创建文件共享

  注意:Azure File只咋最新的0.8.5版本及更高的Azure  PowerShell模块中提供,请下载最新的Azure PowerShell工具,请在http://azure.microsoft.com/en-us/downloads/ 进行下载。

   以下命令可以在Azure Virtual Machine或者本地计算机,通过Azure PowerShell执行:

  1.为存储账户和密钥创建上下文,执行以下命令:

$ctx=New-AzureStorageContext account-name account-key

  比如笔者在步骤一中创建的Azure File名称为leifiledemo,则执行以下命令

$ctx=New-AzureStorageContext leifiledemo [存储账号的密钥]

  

  2.创建新的文件共享,这里我们创建名为sampleshare的新共享。执行以下命令:

$fs = New-AzureStorageShare sampleshare -Context $ctx

 

  3.在文件共享中,创建新的目录sampledir。执行以下命令

New-AzureStorageDirectory -Share $fs -Path sampledir

  上面1-3步骤的截图,如下:

   

  4.将本地计算机C盘根目录下的Log1.txt,拷贝到Azure File的sampledir目录下

Set-AzureStorageFileContent -Share $fs -Source C:\Log1.txt -Path sampledir

  5.执行成功后,查看Azure File的sampledir目录下的所有文件

Get-AzureStorageFile -Share $fs -Path sampledir

  下图可以看到,PowerShell已经列出了所有Azure。并且可以观察到步骤4中,通过本地上传Log1.txt文件

 

 

 

  三.在Azure Virtual Machine装载Azure File

  1.我们通过Remote Desktop,登陆之前创建的Azure VM LeiZhangVMOne

  请注意:不要在本地计算器运行以下命令,因为某些电信运营商会禁用445端口,造成在本地计算器添加SMB File失败

  请在Azure Virtual Machine执行以下命令

 

  2.打开Azure VM的PowerShell

  3.保存虚拟机的存储账户凭据

  为了保证Azure VM在重启时,允许Windows自动连接到文件共享,我们需要执行以下命令:

cmdkey /add:<storage-account>.file.core.windows.net /user:<storage-account> /pass:<account-key>

  笔者的环境中,我们执行以下命令:

cmdkey /add:leifiledemo.file.core.windows.net /user:leifiledemo /pass:[存储账号的密钥]

  在LeiZhangVMOne这台VM上执行的截图如下:

 

  4.装载Azure File

  我们可以使用net use命令,将Azure File装载为本地共享存储

net use z: \\<storage-account>.file.core.windows.net\<share-name>

  在笔者的环境中,我们执行以下命令

net use z: \\leifiledemo.file.core.windows.net\sampleshare

  注意:上面命令中的sampleshare,就是我们在步骤二中创建的名为sampleshare的文件共享

  我们可以查看到挂载成功的共享存储,如下图:

  

  还可以看到sampleshare共享文件夹里的,我们在步骤二中创建的sampledir目录。

  

   重复执行步骤三的命令,我们可以同时在两台Azure VM上挂载共享存储,如下图:

  

   

 

  当笔者在第一台VM新建文件的时候,在第二台VM上也可以同时看到,如下图:

 

  默认情况下,Azure File容量为5TB,存储在Azure File里的单个文件最大容量为1TB。

  以下是Azure File与Blob的比较

   以下是Azure File与Disk的比较

 

 

  参考资料:http://blogs.msdn.com/b/windowsazurestorage/archive/2014/05/12/introducing-microsoft-azure-file-service.aspx

       https://github.com/Azure/azure-content/blob/master/articles/storage-dotnet-how-to-use-files.md

 

 

 

=========================我是分隔符===================================

  Update 2016-02-19

  IIS如何使用Azure File呢?这里我简单介绍一下:

  场景:我们将ASP.NET项目文件保存在Azure File里,实现多台Azure Web Server使用共享目录,hosting IIS Service

  1.我们在Azure VM创建新的用户,比如mystorage

  用户名是Azure File存储账号,密码是Azure File存储账号密钥

 

  2.将该用户(mystorage)加入到IIS_IUser组

 

  3.在Azure虚拟机,运行inetmgr,进入IIS配置页面

 

  4.选择我们需要配置的Web Site,点击下图的Basic Setting

  

 

  5.在弹出的页面中,我们要使用Azure File全路径

  \\mystorage.file.core.chinacloudapi.cn\fileshare\[你的网站项目路径]

  不可以设置为Z盘

  

 

  6.在上图的Connect as,选择我们在步骤1中创建的用户:mystorage

 

  7.这样就配置完成了。

 



本文转自Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/4441388.html,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
3月前
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
|
3月前
|
PHP 开发工具 git
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
|
3月前
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
|
3月前
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
|
3月前
|
存储 Linux Windows
【应用服务 App Service】App Service For Windows 如何挂载Storage Account File Share 示例
【应用服务 App Service】App Service For Windows 如何挂载Storage Account File Share 示例
|
3月前
|
应用服务中间件 nginx Windows
【Azure 应用服务】在App Service for Windows中实现反向代理
【Azure 应用服务】在App Service for Windows中实现反向代理
|
3月前
|
安全 Windows
【Azure 云服务】当Windows系统发布新的安全漏洞后,如何查看Azure云服务(Cloud Service)的实例是否也更新了安全补丁呢?
【Azure 云服务】当Windows系统发布新的安全漏洞后,如何查看Azure云服务(Cloud Service)的实例是否也更新了安全补丁呢?
|
3月前
|
消息中间件 Kafka 网络安全
【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息
【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息
|
3月前
|
网络协议 Linux 网络安全
【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包