本文介紹如何結合阿里雲NAS的SMB協議支持和ECS Windows虛擬機,使用Windows內置的互聯網信息服務(IIS)來提供Web和FTP服務。
阿里雲文件存儲服務NAS主要面向阿里雲ECS 實例、E-HPC、容器服務、彈性Web和BatchCompute 等計算節點提供文件存儲服務。通過標准的文件訪問協議NFS和SMB,用戶無需對現有應用做任何修改,即可在雲上使用具備無限容量及性能擴展、單一命名空間、多共享、高可靠和高可用等特性的分布式文件系統。
背景和基本信息
與NFS相比,SMB文件系統訪問協議更加適合於Windows客戶端,各個版本的Windows對SMB協議的支持更加完善,絕大多數Windows應用程序不經修改即可通過SMB協議訪問阿里雲文件存儲服務。因此,阿里雲建議應用集中運行在ECS Windows實例上的用戶優先考慮使用SMB文件系統。
阿里雲是目前市場上唯一一個全面支持NFS和SMB協議的公共雲廠商。阿里雲NAS支持SMB 2.0及以上的SMB協議版本,對應支持Windows Vista / Windows Server 2008及以上的各Windows版本,不支持Windows XP / Windows Server 2003及以下的各Windows版本。與SMB 2.0 及以后的版本相比,SMB 1.0協議設計的巨大差異在性能和功能的上有嚴重的不足,同時只支持SMB1.0或更早協議版本的Windows產品都已經完全退出微軟支持的生命周期。如果用戶創建新Windows實例,建議至少選擇Windows 2008 R2以上的版本。

IIS提供的FTP服務也同樣有着非常廣泛的需求。例如,很多Web站點的管理員通過FTP來遠程管理Web站點的內容,同時還有很多用戶希望利用Windows虛擬機上的FTP服務在廣域網和阿里雲之間傳輸和共享文件。
基本設置
這里我們以IIS 7.5 (Windows Server 2008 R2)的設置為例,展示如何通過阿里雲NAS在阿里雲上提供提供單節點的Web和FTP服務。其它Windows服務器版本如Windows Server 2008和Windows Server 2012的安裝和部署也類似。用戶可以進一步使用阿里雲負載均衡服務來建構多服務器節點的彈性容錯的站點。
具體方法請參閱阿里雲負載均衡文檔。
在公網環境里提供Web 和FTP Service的阿里雲ECS虛擬機由於服務的開放性容易受到安全攻擊。本文檔的設置步驟着重說明如何在功能上連接Web服務與NAS存儲,提出某些安全性的考慮,但不能作為完整的安全配置和實現方案。用戶需要承擔安全方面的所有最終責任,從系統級別(如設置防火牆、ECS實例安全組和及時安裝操作系統補丁)和服務級別(如使用阿里雲的各個安全產品)來全面保障自己網站服務和數據的安全性。
- IIS安裝:
以Windows Server 2008 R2為例,通過服務器管理器添加IIS角色並安裝IIS的過程如下面幾張圖所示。在不同Windows操作系統上安裝IIS的詳細過程請參閱下面的微軟在線文檔:
IIS 7的安裝和部署
安裝 IIS 和 ASP.NET 模塊(Windows Server 2012 和2012 R2)
- NAS SMB文件系統的創建和設置:
您的Web服務資源及配置文件可以集中存儲在阿里雲NAS的一個SMB share上。創建了一個支持SMB的阿里雲NAS文件系統之后,通過設置權限組來保證當前Web服務器可以讀寫訪問SMB share對應的文件系統。您可以使用VPC或者經典網絡來連接NAS文件系統和Web服務器。創建和使用阿里雲NAS SMB文件系統的具體步驟請參考阿里雲博客《阿里雲文件存儲SMB協議服務及其申請和使用指南》。
創建SMB 文件系統后,您可以在文件系統的
Index.html
<HTML> <HEAD> <TITLE>Hello World in HTML</TITLE> </HEAD> <BODY> <CENTER><H1>Hello World!</H1></CENTER> </BODY> </HTML>
Test.asp
如下圖所示,當前的ECS虛擬機用戶可以通過Windows文件管理器來驗證對SMB share的訪問。在本示例中,\32f214a370-pcy74.cn-shanghai.nas.aliyuncs.com\myshare\www是網站資源的物理路徑,其中\32f214a370-pcy74.cn-shanghai.nas.aliyuncs.com\myshare是我們創建的阿里雲NAS SMB share。
出於安全和管理的考慮,我們在系統里還加入了一個新用戶iis_user。在提供FTP服務或者在Windows Server2016上運行時,我們選擇通過該用戶而不是系統管理員來進行數據訪問。
- 注意首先在服務器上新建這個iis_user用戶,步驟:計算機管理器——》本地用戶和組下面選擇用戶單擊右鍵新建用戶iis_user,並設置密碼,點擊確定,用戶已創建完成,但是最后要單用戶右鍵設置隸屬於Administrators,如下圖:
如果不設置會報類似的錯誤,如:當前標識(iZra9s0rws5ycqZ\iis_user)沒有對“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET
IIS Web服務的設置


對於Windows Server 2016的用戶來說,由於微軟在該產品周期做的幾個改動,目前需要通過以下的兩個額外設置來讓IIS和阿里雲NAS的SMB服務正確協同工作。
A用戶需要改動SMB client的一個注冊表項來支持對SMB share的匿名訪問。如下圖所示,用戶需要運行注冊表編輯器regedit來修改下面的注冊表值。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\AllowInsecureGuestAuth

除了注冊表項外,用戶還需要在IIS的網站設置中指定一個本地用戶來訪問網站在阿里雲NAS上的資源。具體的步驟如下面兩圖所示,用戶選取網站的基本設置,再通過連接為設置特定用戶,這里選用前面設置的用戶iis_user。
另外,由於IIS使用SMB share的方式下訪問一個文件時,IIS后台會有多次訪問SMB share操作,每次訪問的時間不長,但是多次的疊加可能會造成客戶端總時間比較長。改進的方式可以參考SMB2 文檔將其中提到的三個注冊表項都調大,比如600, 或者更大。需要注意的是這些注冊表項都在注冊表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]之下,分別是
- FileInfoCacheLifetime
- FileNotFoundCacheLifetime
- DirectoryCacheLifetime
除此之外,建議把js/css等網頁程序相關的內容放在本地,因為IIS訪問會非常頻繁。
IIS FTP服務的設置
很多IIS用戶希望用FTP來共享文件或進行網站內容發布。在這里我們介紹如何通過IIS設置FTP over SSL服務 (又名FTP-SSL, S-FTP, FTP Secure)。
- 安裝SSL證書
- FTP站點設置
- 用戶在IIS的網站部分選擇添加FTP站點,和Web服務一樣,物理路徑需要使用UNC格式的SMB share路徑。在這個例子里,我們仍使用前面用過的Web service的www目錄。用戶可以根據需要選取myshare上其它目錄,也可以通過設置多個FTP站點利用不同的端口來提供對不同目錄的訪問。
- 用戶綁定提供FTP服務的IP地址,並分配端口號。這個例子里,我們出於安全的考慮沒有使用標准的21端口而是用2222端口來提供FTP的控制信息通道。需要格外注意的是,我們選擇需要SSL證書才能連接這個FTP站點,並指定使用前面創建的SSL證書。
- 用戶指定身份驗證方式為基本,並授權用戶iis_user讀寫權限。您也可以選取更多的授權用戶。
- 出於安全考慮,通過在IIS中打開服務器級別FTP防火牆支持來限制FTP數據通道的端口范圍,並選取應用。
- 為了使該端口范圍立即生效,需要在服務器管理器中重啟FTP服務。
- 出於安全考慮,建議用戶通過阿里雲的安全組設置來限制FTP客戶端的訪問。在下面的例子里,我們將已經設置的FTP控制及數據端口范圍只授權給一個客戶端IP訪問。您也可以授權給多個IP、一個或多個網段。
- 下面幾張圖展示了通過FTP客戶端WinSCP利用FTP over SSL來訪問我們的FTP站點的過程。
登錄后要求輸入密碼,即授權用戶所在IIS服務器上的密碼。
數據連接建立,服務器讀取和傳輸遠程目錄信息。
- 用戶在IIS的網站部分選擇添加FTP站點,和Web服務一樣,物理路徑需要使用UNC格式的SMB share路徑。在這個例子里,我們仍使用前面用過的Web service的www目錄。用戶可以根據需要選取myshare上其它目錄,也可以通過設置多個FTP站點利用不同的端口來提供對不同目錄的訪問。
總結
本文通過例子介紹了如何結合阿里雲NAS的SMB協議支持和ECS Windows虛擬機,使用Windows內置的互聯網信息服務(IIS)來提供Web和FTP服務。阿里雲NAS服務還在不斷發展和演進中,后續會提供更好的協議服務和性能支持。