共用方式為


將應用程式部署至 Windows HPC 叢集中的 Azure 節點

從 HPC Pack 2008 R2 搭配 Service Pack 1 (SP1)開始,HPC Pack 包含內建公用程式和機制,可協助叢集系統管理員將應用程式(例如可執行檔、SOA 服務、XLL 檔案和已啟用叢集的 Microsoft Excel 活頁簿)部署到已加入 Azure「高載」案例中內部部署叢集的 Azure 節點。 根據預設,Azure 節點無法直接存取內部部署資源和共享資料夾,因此您用來在 Azure 節點上部署應用程式的方法與您用來在內部部署應用程式的方法不同。 此外,新增至 Windows HPC 叢集的 Azure 節點會以動態方式部署和重新佈建,因此應用程式部署的建議方法有助於確保新的 Azure 節點實例上會自動提供應用程式。

Azure 高載 HPC 應用程式工作負載的考慮

將應用程式部署至 Azure 節點之前,請先評估您現有的或規劃的 HPC 工作負載是否會在 Azure 中有效率地執行或調整。 在 Azure 高載案例中執行之 HPC 應用程式的詳細移轉、開發和設計考慮已超出本主題的範圍。 此外,Azure 平臺的功能也不斷演進。 不過,以下是使用 HPC Pack 成功高載至 Azure 工作負載的目前特性,特別是針對 Azure 節點的大規模部署:

  • 高度分散式的單一節點計算 這些包括許多參數式掃掠和特定服務導向架構 (SOA) 作業。 其他作業類型,包括訊息傳遞介面 (MPI) 作業,可以在 Azure 高載設定中執行,但可能需要選取支援 Azure RDMA 網路的 計算密集型實例大小。 如需 HPC 作業類型的一般資訊,請參閱 瞭解平行運算作業

  • 計算時間超過數據移動時間, 某些 HPC 工作負載需要將大量數據上傳至 Azure 以進行計算,或傳回已處理的大量數據。 請確定數據移動不是 HPC 工作流程中的瓶頸。

  • 檔案型數據存取 存取內部部署數據檔的現有 HPC 應用程式,可藉由存取上傳至 Azure Blob 記憶體的數據檔,輕鬆地遷移至 Azure 中執行。 您可以開發新的 HPC 應用程式,以存取 Azure 中的各種記憶體類型。 不過,根據數據的敏感度、法律需求、成本考慮和其他因素,可能無法將應用程式數據儲存在 Azure 中。

  • 「高載」工作負載模式 Azure 高載案例非常適合使用內部部署叢集固定資源無法輕易完成的資源密集型工作負載。 工作負載可能包括不規則的計算尖峰、定期排程的作業或一次性作業。

如需在 Azure 節點上執行應用程式的詳細資訊,請參閱在 Azure 節點上執行 HPC 應用程式的 指導方針

選取將應用程式和數據部署至 Azure 節點的方法

您用來將應用程式和數據部署至 Azure 節點的方法取決於安裝應用程式所需的方法,如下表所述。

安裝需求 方法 可用性
您可以將檔案和 DLL 或組態檔等任何相依性複製到節點來完成安裝。 - 使用 hpcpack 命令,將檔案設定為 Azure 記憶體的系統管理員套件和階段。
請參閱使用 hpcpack 和 hpcsync
- 系統管理員部署 Azure 節點。 套件會自動部署到新的 Azure 節點實例(複製和擷取),或者如果節點已經執行,系統管理員可以手動部署。
請參閱使用 Microsoft HPC Pack
高載至 Azure 背景工作實例。
HPC Pack 2008 R2 搭配 SP1
安裝需要以無訊息方式執行安裝程式,或需要其他設定步驟,例如設定環境變數或建立防火牆例外狀況。 - 使用 hpcpack 命令,將檔案或安裝程式設定為 Azure 記憶體的系統管理員套件和安裝程式。
請參閱使用 hpcpack 和 hpcsync
- 系統管理員會在 Azure 節點範本中指定啟動文稿,以設定環境或執行安裝命令。
請參閱 針對 Azure 節點使用啟動文稿
- 系統管理員部署 Azure 節點。 套件會自動部署到新的 Azure 節點實例,然後啟動腳本會在布建程式中執行。
請參閱使用 Microsoft HPC Pack
高載至 Azure 背景工作實例。
HPC Pack 2008 R2 with SP2
在作業執行期間,可能會進行安裝與數據散發至 Azure 節點。 - 系統管理員使用 Azure 記憶體工具,例如 AzCopy,將安裝程式和數據檔上傳至 Azure Blob 記憶體中的容器。
- 系統管理員套件,並使用 hpcpack 命令,將其他檔案或安裝程式分階段至 Azure 記憶體。
請參閱使用 hpcpack 和 hpcsync
- 系統管理員會在 Azure 節點範本中指定啟動文稿,以設定環境或執行安裝命令。
請參閱 針對 Azure 節點使用啟動文稿
- 系統管理員部署 Azure 節點。 套件會自動部署到新的 Azure 節點實例,然後啟動腳本會在布建程式中執行。
請參閱使用 Microsoft HPC Pack
高載至 Azure 背景工作實例。
- 系統管理員會建立具有節點準備工作的作業,以執行其他安裝步驟,或從 Azure Blob 記憶體容器下載數據。
請參閱 定義節點準備工作 - 作業管理員
HPC Pack 2008 R2 搭配 SP1
安裝需要不容易編寫腳本的步驟,而且可以從 Azure 中的長期磁碟驅動器存取應用程式和應用程式數據。

-
- 系統管理員使用 Windows 工具來建立虛擬硬碟(VHD),並在 VHD 上安裝應用程式和任何必要的應用程式數據。
- 系統管理員會中斷連結 VHD,並使用 hpcpack upload 命令,將 VHD 上傳為分頁 Blob 上傳至 Azure 記憶體。
請參閱使用 hpcpack 和 hpcsync
- 系統管理員會在設定 Azure 節點範本時指定 Azure 記憶體中的應用程式 VHD。
請參閱 在 Azure 背景工作節點上掛接應用程式 VHD
- 選擇性地,系統管理員為其他設定指定啟動腳本,或在部署中的一或多個節點上設定共享資料夾。
請參閱 針對 Azure 節點使用啟動文稿
- 系統管理員部署 Azure 節點。 Azure 節點實例會建立以掛接應用程式 VHD、記憶體上的任何套件都會自動部署到節點,然後啟動腳本會在布建程式中執行。
請參閱使用 Microsoft HPC Pack
高載至 Azure 背景工作實例。
HPC Pack 2012

使用 hpcpack 和 hpcsync

每個 Azure 節點部署都會與節點範本中指定的 Azure 記憶體帳戶相關聯。 叢集管理員可以使用 hpcpack 命令,將檔案(例如應用程式、SOA 服務、XLL、已啟用叢集的 Excel 活頁簿和公用程式)暫存到記憶體帳戶。 您可以使用 hpcpack create,以可上傳至 Azure 記憶體的壓縮格式 (.zip) 封裝檔案或資料夾。 每個應用程式、SOA 服務或 XLL 都必須個別封裝,而且套件必須包含任何必要的相依性,例如 DLL 或組態檔。 接著,您可以使用 hpcpack 上傳,將套件上傳至記憶體帳戶。 您可以從前端節點或在已安裝 HPC 用戶端公用程式的電腦上,執行 hpcpack 命令。

儲存體帳戶中的所有套件都會在布建程式期間自動部署到新的 Azure 節點實例。 當您使用 HPC 管理公用程式部署一組 Azure 節點,以及您的節點實例是由 Window Azure 系統自動重新佈建時,就會發生這種情況。 hpcsync 命令會在每個 Azure 節點上執行,並將所有套件從記憶體複製到節點,然後擷取檔案。 如果您在啟動 Azure 節點之後將套件上傳至記憶體,您可以在每個 Azure 節點上手動執行 hpcsync 命令來部署套件。

注意事項

如果您建立多個參考相同記憶體帳戶的 Azure 節點範本,則會將相同的分段檔案部署至所有 Azure 節點集。 若要將不同的檔案部署到不同的節點集,請為每個 Azure 節點範本建立個別的 Azure 記憶體帳戶。

下圖說明將應用程式複製到 Azure 節點的基本工作流程和機制:

將應用程式複製到 Windows HPC 中的 Azure 節點

根據預設,hpcsync 將檔案擷取到CCP_PACKAGE_ROOT環境變數所指定的位置。 此變數會在布建程式期間於 Azure 節點上設定。 擷取的檔案會放在已決定的資料夾中,如下所示:%CCP_PACKAGE_ROOT%\<packageName>\<uploadTimeStamp>。 這是 SOA 服務、XL 和 Excel 活頁簿的預期位置。 不過,對於叢集使用者在其命令行中呼叫的應用程式來說,這並不方便。 若要簡化可執行檔的資料夾結構,您可以在將封裝上傳至記憶體時,設定套件的相對路徑屬性。 hpcsync 擷取檔案時套用相對路徑,讓路徑判斷如下:%CCP_PACKAGE_ROOT%\<relativePath>。 然後,使用者可以指定其應用程式的路徑,如下列作業送出命令範例所示:job submit %CCP_PACKAGE_ROOT%\myRelativePath\myapp.exe

以下是 hpcsync 和CCP_PACKAGE_ROOT的重要考慮:

  • 在 Azure 背景工作節點上,%CCP_PACKAGE_ROOT% 資料夾會在 10 GB 磁碟分區上建立。 這表示節點實例上的所有應用程式檔不能超過 10 GB。 如果應用程式有相當大量的輸入和輸出檔案,您可以使用啟動腳本來授與 C:\ 磁碟驅動器的使用者許可權,讓使用者可以寫入節點上的所有可用臨時空間。

  • 當您手動執行 hpcsync 時,您可以覆寫預設位置 (%CCP_PACKAGE_ROOT%)。 例如,您可以在每個 Azure 節點上建立資料夾,然後在 hpcsync執行時指定該位置。 所有套件都會解壓縮到該資料夾。 不過,任何部署的新節點實例(或自動重新布建)都不會包含該資料夾,而且套件會自動部署至預設位置。 此外,叢集使用者只有 %CCP_PACKAGE_ROOT%中資料夾的寫入許可權。 除非您修改 Azure 節點上的資料夾許可權,否則只有系統管理員可以在 %CCP_PACKAGE_ROOT%之外執行應用程式。

  • hpcsync 部署套件時,未擷取的檔案完整路徑長度超過 256 個字元。 擷取檔案暫時放置的根目錄,最後放置最多可能需要 136 個字元,為檔名、子目錄(如果有的話)和 relativePath 留下 120 個字元(如果指定的話)。 如果擷取檔案的路徑超過 256 個字元,套件部署就會失敗。

hpcsync 機制足以部署SOA服務、XLL 檔案和應用程式,只要將檔案複製到節點即可安裝。 如果您需要執行安裝程式來安裝應用程式,或應用程式需要其他設定步驟,例如設定環境變數、新增防火牆例外狀況、修改資料夾許可權或建立資料夾,您可以在節點範本中包含啟動腳本。 此腳本會在 hpcsync 執行之後,在布建程式期間執行,而且可用來設定節點並執行必要的應用程式安裝步驟。

如何將應用程式檔案暫存至 Azure 記憶體

本節提供如何使用 hpcpack封裝應用程式並將其暫存至 Azure 記憶體的相關信息。 分段套件會自動部署到您布建的新 Azure 節點實例(或由 Azure 系統自動重新佈建的實例)。

注意事項

您必須是叢集管理員,或至少具有 Azure 訂用帳戶標識碼和記憶體帳戶密鑰,才能將檔案暫存至 Azure 記憶體。

需求

如果您要封裝 SOA 服務:

  • 封裝的名稱必須是SOA服務的名稱(也就是SOA用戶端在SessionStartInfo 建構函式中指定的服務名稱)。 例如,serviceName.zip 或 serviceName_serviceVersion.zip。

  • 您必須包含服務 DLL、任何相依 DLL,以及套件中的服務組態檔。

  • 服務組態檔也必須部署到前端節點。 所有設定都是由組態檔的內部部署複本所決定。

  • 上傳封裝時,請勿指定相對路徑。 SOA 服務必須解壓縮到預設位置。

如果您要封裝 XLL 檔案:

  • 封裝的名稱必須是 XLL 檔案的名稱。 例如,XLLName.zip。

  • 如果 XLL 具有相依性,請將 XLL 和支援的檔案放在資料夾中並封裝資料夾。 XLL 必須位於資料夾的最上層(不在子資料夾中)。

  • 上傳封裝時,請勿指定相對路徑。 XL 必須解壓縮至預設位置。

如果您要封裝 Excel 活頁簿:

  • 封裝的名稱必須是活頁簿的名稱。 例如,workbookName.zip。

  • 如果活頁簿具有相依性,請將活頁簿和支援的檔案放在資料夾中並封裝資料夾。 活頁簿必須位於資料夾的最上層(不在子資料夾中)。

  • 上傳封裝時,請勿指定相對路徑。 活頁簿必須解壓縮至預設位置。

如果您要封裝可執行檔案(例如 MPI 應用程式)、應用程式安裝程式或公用程式,您將從啟動文稿呼叫:

  • 您必須在套件中包含任何相依 DLL 或檔案。

  • 當您上傳封裝時,請指定相對路徑屬性。

如果您要封裝啟動文稿:

  • 封裝的名稱必須是啟動文本的名稱。 例如,startup.bat.zip。

  • 上傳封裝時,請勿指定相對路徑。 啟動文稿必須解壓縮到預設位置。

  • 如果您的啟動文本呼叫安裝程式或公用程式,請確定您封裝並個別暫存必要的檔案。

步驟

如範例所示,下列程序說明如何將不同類型的應用程式檔暫存至 Azure 記憶體。

注意事項

您不需要提升權限的命令提示字元(以系統管理員身分執行),即可執行 hpcpack create。 不過,hpcpack 上傳 需要提高許可權。 若要執行下列程式,請在提升許可權的命令提示字元視窗中執行命令。

將 SOA 服務封裝並暫存至 Azure 記憶體
  1. 如果 SOA 服務尚未註冊並部署至內部部署叢集,請將服務組態檔的複本放在前端節點上的服務註冊資料夾中來註冊 SOA 服務(通常是 %CCP_HOME%\ServiceRegistration)。 如需詳細資訊,請參閱 部署和編輯服務組態檔

  2. 將服務組態檔、服務元件和任何相依 DLL 複製到空白資料夾。 例如,將檔案複製到名為 C:\myFiles\myServiceFiles 的資料夾,

  3. 在提升許可權的命令提示字元中,執行 hpcpack 建立,並指定套件的名稱和包含服務檔案的資料夾。

    重要事項

    封裝的名稱必須是SOA服務的名稱(也就是SOA用戶端在 SessionStartInfo 建構函式中指定的服務名稱)。

    例如,將 C:\myFi les\myServiceFiles 的內容封裝為 myServiceName.zip (並將套件儲存至名為 AzurePackages的資料夾):

    hpcpack create C:AzurePackagesmyServiceName.zip C:myFilesmyServiceFiles

  4. 使用下列命令執行 hpcpack upload 將套件上傳至 Azure 記憶體,其中 myHeadNode 是您前端節點的名稱,myAzureTemplate 是您用來部署 Azure 節點的範本名稱。 例如:

    hpcpack upload C:\AzurePackages\myServiceName.zip /nodetemplate:myAzureNodeTemplate /scheduler:myHeadNode

將 XLL 檔案或 Excel 活頁簿封裝並暫存至 Azure 記憶體
  1. 如果 XLL 或活頁簿具有 DLL 或其他檔案的相依性,請將 XLL 或活頁簿及其相依性複製到資料夾,例如 c:\myFiles\myExcelFiles

  2. 在提升許可權的命令提示字元中,執行 hpcpack create 封裝您的 XLL 或活頁簿。 指定封裝的名稱,並指定 XLL 或活頁簿。 封裝的名稱必須是 XLL 檔案或 Excel 活頁簿的名稱。

    例如,如果您的 XLL 或活頁簿具有相依性,請將整個資料夾封裝(並將套件儲存至名為 AzurePackages的資料夾):

    hpcpack create C:\AzurePackages\myXLL.zip C:\myFiles\myExcelFiles

    如果您的 XLL 或活頁簿沒有相依性,您可以直接封裝它。 例如,將 C:\myFiles\myXLL.xll 封裝為 myXLL.zip

    hpcpack create C:\AzurePackages\myXLL.zip C:\myFiles\myXLL.xll

  3. 使用下列命令執行 hpcpack upload 將套件上傳至 Azure 記憶體,其中 myHeadNode 是您前端節點的名稱,myAzureTemplate 是您用來部署 Azure 節點的範本名稱。 例如:

    hpcpack upload C:\AzurePackages\myXLL.zip /nodetemplate:myAzureNodeTemplate /scheduler:myHeadNode

將可執行檔封裝並暫存至 Azure 記憶體
  1. 將可執行檔和任何相依性或 DLL 複製到資料夾,例如 C:\myFiles\myAppFiles

  2. 在提升許可權的命令提示字元中,執行 hpcpack create 封裝應用程式檔。 指定封裝的名稱,並指定包含應用程式檔的資料夾。

    例如,若要將 c:\myFi les\myAppFiles 的內容封裝為 myApp.zip (並將套件儲存至名為 AzurePackages的資料夾):

    hpcpack create c:\AzurePackages\myApp.zip c:\myFiles\myAppFiles

  3. 使用下列命令將套件上傳至 Azure 記憶體,其中 myHeadNode 是您前端節點的名稱,myAzureTemplate 是您用來部署 Azure 節點的範本名稱。 指定應用程式檔案的相對路徑。 例如:

    hpcpack upload c:\AzurePackages\myApp.zip /scheduler:myHeadNode /nodetemplate:myAzureTemplate /relativepath:myApp

如何將分段套件部署至 Azure 節點

暫存至 Azure 記憶體的套件會自動部署到新的節點實例。 您可以手動部署套件 -例如,在將部署自動化至所有新節點之前,先確認您在封裝中具有所有必要的相依性,或將套件部署到已經執行的節點。 您可以使用 clusrunhpcsync,將檔案從 Azure 記憶體帳戶部署至 Azure 節點。

例如:

clusrun /nodegroup:AzureWorkerNodes hpcsync

若要查看已部署至 Azure 節點的資料夾或檔案清單,您可以執行下列命令:

clusrun /nodegroup:AzureWorkerNodes dir %CCP_PACKAGE_ROOT% /s

從 Azure 節點存取檔案

如果您的 HPC 應用程式需要檔案存取,以下是從部署至 Azure 節點的應用程式存取檔案的選項。

選項 必要條件 附註
Azure 磁碟驅動器 系統管理員會在 Azure 節點上設定和掛接應用程式 VHD。

請參閱 在 Azure 背景工作節點上掛接應用程式 VHD
- 磁碟驅動器會在每一個節點上本機複製並快取
- 磁碟驅動器一次只能由一個節點撰寫
Azure 虛擬機上的檔案伺服器 系統管理員設定 Azure 虛擬機實例、將數據磁碟連結至虛擬機、啟用文件伺服器角色,以及建立檔案共享資料夾。

請參閱 如何設定 Azure 虛擬機檔伺服器,並從 Windows HPC Server 計算作業使用它。
- 依作業存取檔案伺服器資源需要經過驗證的使用者存取權。
- 為現有應用程式提供SMB相容性
- 每個伺服器最多提供 16 TB 的數據
- 將頻寬限制為 800 Mb/秒
將本機檔案鏡像至 Azure Blob 記憶體 系統管理員會使用 Azure 記憶體工具,例如 AzCopy,將內部部署檔案鏡像到 Azure Blob 記憶體中的容器。
- 將內部部署環境的數據鏡像至 Azure 會增加額外負荷。
直接存取 Azure Blob 記憶體 應用程式架構為直接在 Azure Blob 上執行資料存取作業 - 提供可用選項的最高延展性

其他參考