微軟HPC解決方案概述與實做

HPC解決方案是微軟產品歷史長河中的一個砂礫,國內不多有人說起,所以老王準備把這個砂礫擦擦,爲你們呈現出來node


開始以前咱們不妨先來看下HPC的概念,前面咱們花了將近50篇左右的文章,講了微軟高可用性羣集,除了高可用羣集,微軟事實上還有負載均衡羣集和高性能羣集技術,負載均衡技術無非是ARR,NLB,DNS輪詢,這些你們都經常使用的技術,而微軟的高性能羣集技術,就連專門作微軟itpro的人也不多知道,所以本文咱們就來從一個入門的角度,爭取讓不懂HPC的微軟ITpro能夠看懂,也可讓懂HPC但不瞭解微軟產品的人看懂。linux


首先咱們先來看下高性能羣集與其它幾種羣集的不一樣web


高可用羣集:羣集全部節點,來維持一個應用的持續運做,若是當前應用所在節點失敗,自動故障轉移至其它節點算法

負載均衡羣集:羣集全部節點來平衡一個應用的訪問請求,利用每一個節點的響應,以提升應用效能,同時支持故障轉移sql

分佈式羣集:羣集全部節點來共同完成一件事,一件事能夠被分散成若干小事由不一樣節點處理,最終彙總結果shell

高性能羣集:羣集全部節點來共同完成一件事,一般以計算爲主,綜合羣集的性能來達到快速完成計算目的
數據庫


分佈式羣集與高性能羣集進一步探討express


這兩種羣集模型,某些程度上存在必定類似度,但某些程度又不太同樣編程


例如,一個分佈式羣集的節點,能夠是server,pc,hpc,能夠是跨機房,跨地區,跨國,能夠是windows,linux,unix,能夠分佈式計算裏面再包括多個羣集,多個節點,基本上分佈式羣集最大的一個特色,就是對提供計算的節點沒有更多的要求,只要可以提供計算能力就行,是鬆耦合化的,不會和某一種OS,某一種硬件綁定windows


高性能羣集在這一點上則與分佈式羣集不一樣,高性能羣集強調的是高性能,所以,若是這個羣集裏面各個節點來自不一樣國家,確定沒法完成高性能的目的,所以,一個高性能羣集的各個節點,確定是經過高速網絡很快的鏈接在一組的服務器,不多是分散在不一樣國家的,同時高性能羣集通常不會由PC,普通server參加,起碼會由相對性能高一些的server,或專門爲高性能計算設計的server來組成,一個高性能羣集的節點一般是標準化的,或者定製化硬件。


分佈式計算一般會把一個做業分紅多個小做業,而後交由各個節點,高性能計算一般是並行做業


分佈式計算更加適用於在計算尋找模式的東西,分析計算,相加計算

高性能計算羣集更多的會被應用於數學,工業,科研領域等,須要在短期內處理多維度的計算


高性能計算是否就是雲計算?


從運做形態來說,老王把雲計算分爲兩個角度來看

對於最終用戶,我的用戶,或企業使用雲計算的部門而言,雲計算就是一種新的IT消費模型,它自助化,自動化,只要付錢就可使用,部署快捷,彈性收費,不須要花費其它前置費用和時間

對於雲提供商或企業提供雲計算的部門來講,雲計算就是一種新的IT管理模型,將原來分散的架構開始集中化,經過軟件定義+資源池,就能夠執行大部分存儲,網絡工做,同時使用雲後能夠作一些自動化的維護操做,減輕IT維護時間,另外雲計算將成本管理,SLA引入,有助於IT部門進一步體現自身價值


所以你們能夠看到從運做形態上來說,雲計算更加像是一種企業信息化的選擇,企業選擇雲計算來輔助現有數據中心,提高資源申請效率


高性能計算與雲計算有一點很是衝突的是,雲計算主要是要求提供彈性,要快速部署,快速響應用戶的請求,甚至要基於程序的性能作部署,所以後臺會引入虛擬化,多租戶等技術,高性能計算一般不會是虛擬化,都會是由實體的物理機承擔,以得到最好的性能。


近些年來,也有些公司提出將高性能計算和雲計算集合,主要仍是公有云廠商提出的概念,能夠從iaas或paas層對接本地高性能計算羣集,將公有云做爲高性能計算的一部分,可是一些高性能計算用戶仍是會對此持有懷疑態度,主要的計算仍是會在本地跑,什麼場景下適用於公有云呢,多是要作一些模擬計算的時候,本地高性能羣集排隊已滿,這時候能夠臨時把做業提交到公有云,最好是不產生數據,僅看結果,這類計算能夠適用於公有云。


高性能羣集名詞與常見功能


高性能計算(Highperformance computing,縮寫HPC)  最先咱們提到高性能計算一般是指某臺高性能主機,經過分片等技術將做業提交到這臺主機進行計算,隨着信息技術不斷髮展,高性能計算逐漸也面向企業,如今的的高性能計算一般是指某一羣集中組織的幾臺計算機(做爲單個計算資源操做)的計算系統和環境,更多的是經過高性能羣集軟件+服務器實現高性能計算效果


高性能計算服務器架構選擇


SMP(Symmetrical Multi-Processing),是指在一個計算機上聚集了一組處理器(多CPU),各CPU之間共享內存子系統以及總線結構,SMP服務器的主要特徵是共享,系統中全部資源(CPU、內存、I/O等)都是共享的。也正是因爲這種特徵,致使了SMP服務器的主要問題,那就是它的擴展能力很是有限。對於SMP服務器而言,每個共享的環節均可能形成SMP服務器擴展時的瓶頸,而最受限制的則是內存。因爲每一個CPU必須經過相同的內存總線訪問相同的內存資源,所以隨着CPU數量的增長,內存訪問衝突將迅速增長,最終會形成CPU資源的浪費,使 CPU性能的有效性大大下降


NUMA(Non-Uniform Memory Access),因爲SMP在擴展能力上的限制,人們開始探究如何進行有效地擴展從而構建大型系統的技術,NUMA就是這種努力下的結果之一,利用NUMA技術,能夠把幾十個CPU(甚至上百個CPU)組合在一個服務器內,NUMA服務器的基本特徵是具備多個CPU模塊,每一個CPU模塊由多個CPU(如4個)組成,而且具備獨立的本地內存、I/O槽口等。因爲其節點之間能夠經過互聯模塊(如稱爲Crossbar Switch)進行鏈接和信息交互,所以每一個CPU能夠訪問整個系統的內存(這是NUMA系統與MPP系統的重要差異)。顯然,訪問本地內存的速度將遠遠高於訪問遠地內存(系統內其它節點的內存)的速度,但NUMA技術一樣有必定缺陷,因爲訪問遠地內存的延時遠遠超過本地內存,所以當CPU數量增長時,系統性能沒法線性增長。如HP公司發佈Superdome服務器時,曾公佈了它與HP其它UNIX服務器的相對性能值,結果發現,64路CPU的Superdome (NUMA結構)的相對性能值是20,而8路N4000(共享的SMP結構)的相對性能值是6.3。從這個結果能夠看到,8倍數量的CPU換來的只是3倍性能的提高。


MPP(Massive Parallel Processing) 由多個SMP服務器經過必定的節點互聯網絡進行鏈接,協同工做,完成相同的任務,從用戶的角度來看是一個服務器系統。其基本特徵是由多個SMP服務器(每一個SMP服務器稱節點)經過節點互聯網絡鏈接而成,每一個節點只訪問本身的本地資源(內存、存儲等),是一種徹底無共享(Share Nothing)結構,於是擴展能力最好,理論上其擴展無限制,目前的技術可實現512個節點互聯,數千個CPU。目前業界對節點互聯網絡暫無標準,如 NCR的Bynet,IBM的SPSwitch,它們都採用了不一樣的內部實現機制。但節點互聯網僅供MPP服務器內部使用,對用戶而言是透明的。

在MPP系統中,每一個SMP節點也能夠運行本身的操做系統、數據庫等。但和NUMA不一樣的是,它不存在異地內存訪問的問題。換言之,每一個節點內的CPU不能訪問另外一個節點的內存。節點之間的信息交互是經過節點互聯網絡實現的,這個過程通常稱爲數據重分配(Data Redistribution)。

可是MPP服務器須要一種複雜的機制來調度和平衡各個節點的負載和並行處理過程。目前一些基於MPP技術的服務器每每經過系統級軟件(如數據庫)來屏蔽這種複雜性。舉例來講,NCR的Teradata就是基於MPP技術的一個關係數據庫軟件,基於此數據庫來開發應用時,無論後臺服務器由多少個節點組成,開發人員所面對的都是同一個數據庫系統,而不須要考慮如何調度其中某幾個節點的負載


一般狀況下SMP和NUMA是過去人們實現高性能計算的選擇,實現高性能計算的一個關鍵標準,是可以讓做業程序在多個節點並行執行,以得到最快的計算結果,如今你們更多的是選擇經過MPP架構或普通服務器組成的羣集,以實現高性能計算,針對於並行,從原來單獨的硬件層面,延伸到軟件層面,經過並行程序和高性能羣集系統的結合,以達到高性能計算。



高性能計算羣集常見指標


GFLOPS 就是 Giga Floating-point Operations Per Second,即每秒10億次的浮點運算數


一個 MFLOPS (megaFLOPS) 等於每秒1百萬 (=10^6) 次的浮點運算

一個 GFLOPS (gigaFLOPS) 等於每秒10億 (=10^9) 次的浮點運算

一個 TFLOPS (teraFLOPS) 等於每秒1萬億 (=10^12) 次的浮點運算

一個 PFLOPS (petaFLOPS) 等於每秒1千萬億 (=10^15) 次的浮點運算


Linpack理論峯值計算 = CPU主頻 X CPU每一個時鐘週期執行浮點計算的次數 X 系統中CPU核心數 


是否支持GPU高性能計算,在浮點運算、並行計算等部分計算方面,GPU能夠提供數十倍乃至於上百倍於CPU的性能


高性能計算常見角色


管理節點:負責整個高性能羣集的監控,資源分組,資源調度,做業調度,受權控制,系統推送(一般會在頭節點安裝DHCP,WDS等PXE部署組件,當進行大規模部署的時候,直接pxe引導部署其它計算節點,或結合BMC實現喚醒部署)

計算節點:用於運行做業,這種類型的節點一般不能成爲不一樣類型的節點(即更改角色)

用戶訪問節點:做爲高性能羣集對外的入口,用戶登陸到這個節點提交做業,一般會有Web,console,api,腳本等接口

存儲節點:存儲高性能羣集產生的數據,或存儲高性能羣集須要的數據,一般會映射這個節點的NFS,SMB至其它計算節點上

數據庫節點:高性能計算羣集一般會有一套數據庫系統,用於存放羣集做業調度,報告,診斷等數據,一般會直接使用頭節點,或部署遠程數據庫節點


整個架構中最關鍵的是管理節點,數據庫節點,實際環境中一般會把高性能與高可用結合,針對於管理節點和數據庫節點實現高可用。

若是是計算節點壞了,一般狀況下管理節點會把它標記爲失敗,下次分發計算任務排除該節點,理想狀況下計算節點應該是無狀態的,壞了直接新加,計算所需數據來自存儲節點。

用戶訪問節點,若是實現了門戶訪問,能夠搭建多臺,結合負載均衡羣集實現高可用


高性能計算常見術語


做業:高性能羣集最終會提供給用戶門戶,控制檯,或接口,以供用戶向高性能計算羣集提供請求,做業就是你但願讓高性能羣集執行的計算任務,一般一個做業裏面能夠包含多個任務,能夠設計做業裏面不一樣任務之間的優先順序與關聯性

隊列:成功提交的做業,會提交到HPC羣集頭節點,再由頭節點根據調度器規則,調度到合適的資源分組執行做業,若是當前高性能羣集全部資源正在使用,或者有優先級更高的計算正在進行,則新提交的做業將被排隊進入隊列,直到有計算資源釋放

資源分組:經過管理節點能夠針對於當前羣集內全部的計算節點進行資源分組,將資源由服務器,轉換爲計算能力,轉換後按照分組計算能力,對使用方進行交付,用戶使用時能夠選擇,要將做業放到什麼樣計算能力的資源分組執行,若是該資源分組正忙,則用戶做業也會進入隊列。


MPI是什麼


MPI並非一種新的開發語言,它是一個定義了能夠被C、C++和Fortran程序調用的函數庫。這些函數庫裏面主要涉及的是兩個進程之間通訊的函數,採用分佈式內存模型,MPI是一種消息傳遞編程模型,駐留在不一樣節點上的進程能夠經過網絡傳遞消息相互通訊,實現進程之間的信息交換。


簡單來講,MPI是一種能夠用於不一樣節點進程之間傳遞消息的編程模型,透過MPI咱們能夠實現進程級別的跨節點通訊,進而實現並行計算


一個MPI應用程序的執行以下

  1. MPI初始化

  2. 由管理節點將消息分發給計算節點並行執行

  3. 計算節點執行完成後通過通訊將結果返回給應用程序


除了MPI,還有其它實現並行計算的方法,例如OpenMP,OpenMP經過在節點間共享變量,已達到並行計算效果,以線程做爲並行計算粒度,採用共享內存模型


當咱們要將做業提交到高性能羣集時,雖然羣集具有實現高性能計算的能力,可是若是咱們提交的做業不是並行的,依然不能實現高性能計算效果,所以也須要考慮如何讓做業並行執行。


經過上面的介紹老王簡單爲你們介紹了下高性能計算的一些術語,以及實際運做的形態,我並無一味介紹高性能計算概念,而是經過對比,舉例的方式使你們更便於理解,構建本身腦中的模型


下面咱們將專一於微軟對於HPC的解決方案,微軟進入HPC領域大概是在2003的時候,那時微軟第一次推出windows computer cluster server解決方案,進入高性能計算領域,整個解決方案當時有兩部分 ,Windows Server 2003 Compute Cluster Edition和Microsoft Compute Cluster Pack,一個系統版本和一個組件包,事實上核心的高性能計算功能,例如資源分區,做業調度,都是在cluster pack中,Computer Cluster edition僅是一個通過優化的操做系統版本,到了2008時代也是如此,2008時代改叫HPC server和hpc pack。從2012開始,微軟已經再也不發行hpc server系統版本,hpc pack能夠直接在標準版,數據中心版OS運行,最後發行computer cluster版本緣由當時的OS還不能和硬件很好的感知,例如RDMA,ODX等功能,2012開始這些都已經完美的內嵌在Server版本中。


最新的hpc pack版本是 hpc pack 2016 ,經過hpc pack能夠幫助咱們配置hpc解決方案所須要的角色,提供管理hpc羣集的工具


微軟HPC解決方案的角色以下,以最新hpc 2016爲例


頭節點:負責整個高性能羣集的監控,資源分組,資源調度,做業調度,系統推送(hpc pack將自動爲頭點安裝dhcp,wds)

計算節點:用於運行做業,這種類型的節點一般不能成爲不一樣類型的節點(即更改角色)

代理節點:Windows Communication Foundation(WCF)代理節點用於將WCF調用從面向服務的體系結構(SOA)客戶端路由到在羣集中的節點上運行的SOA服務,這種類型的節點能夠在不從新部署的狀況下將角色更改成計算節點

工做站節點和非託管服務器節點 :工做站節點和非託管服務器節點是組織中的計算機,它們也能夠運行做業,但它們不是專用的羣集資源。他們能夠安排在特定時間運行工做,也能夠按需提供。這種類型的節點不能更改角色

Microsoft Azure Paas節點: 若是您有Microsoft Azure訂閱,則能夠根據須要添加Azure節點,以便在須要時增長羣集容量。與計算節點,工做站節點和非託管服務器節點同樣,Azure節點也能夠運行做業。添加Azure節點時,還能夠在Azure部署中配置固定或可變數量的代理節點,以便實現本地頭節點和Azure節點之間的通訊。

Microsoft Azure IaaS節點:若是您擁有Microsoft Azure訂閱,則能夠根據須要添加Microsoft Azure IaaS節點,以便在須要時增長羣集容量


hpc pack 2012 - 2016重要功能更新


1.HPC Pack 2016支持計算節點工做組部署

2.HPC Pack 2012 R2 Update 2支持Azure linux計算節點部署

3.HPC Pack 2012 R2 Update 3支持本地linux計算節點部署

4.HPC Pack 2012 R2 Update 3 支持Windows計算節點的GPU

5.HPC Pack 2012 R2 Update 3 中Linux節點的管理和調度體驗相似於咱們已經支持的Windows節點,能夠看到Linux節點的熱圖,使用特定於Linux節點的cmdlet建立做業,監視做業,任務和節點狀態等,Linux節點開始支持便利的工具clusrun


hpc pack頭節點部署要求


操做系統:Windows Server 2016,Windows Server 2012 R2,頭節點必須加入域

SQL Server:默認狀況下hpc pack會直接在頭節點本機安裝一個sql express,並自動配置數據庫,也可使用遠程數據庫實例,支持數據庫羣集或alwayson

.net framework:要求4.6.1或更高版本,Windows Server 2016自帶,Windows Server 2012 R2需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁

其它必備組件會由hpc pack自動安裝


hpc pack 數據庫列表


HPCManagement : 羣集管理信息

HPCScheduler:做業調度

HPCReporting:羣集報告

HPCDiagnostics:羣集診斷

HPCMonitoring:羣集監控數據


如需進行數據庫優化請參考連接,適用於hpc pack 2012 2012R2 2016

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/hh407109(v=ws.11)



微軟HPC羣集網絡角色以下

企業網絡 企業組織網絡,用於鏈接到企業內部基礎架構服務器,如AD,並須要接入用戶網絡,用戶會將做業經過該網絡提交至頭節點,而且在某些狀況下鏈接到羣集中的其餘節點,除非專用網絡和應用網絡也鏈接羣集節點,不然全部羣集內管理和部署流量都將在企業網絡中進行
專用網絡 承載節點間羣集內通訊的專用網絡。若是不存在應用網絡,則專用網絡包含管理,部署和應用程序通訊
應用網絡
專用網絡,最好具備高帶寬和低延遲。此網絡一般僅用於羣集節點之間的並行消息傳遞接口(MPI)應用程序通訊。


詳細HPC網絡拓撲規劃請參考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/ff919486(v=ws.11)



實做環境介紹


08dc :10.0.0.2 255.0.0.0

hpc-headnode

企業網絡10.0.0.9 255.0.0.0 

專用網絡18.0.0.1 255.0.0.0


hpc pack 2016下載地址 https://www.microsoft.com/en-us/download/details.aspx?id=56360


下載完成後在頭節點打開以下,點擊新建安裝或將新功能添加到現有安裝 

2018-04-19_220342.png

選擇安裝類型,咱們第一次安裝選擇 建立頭節點,並建立新的HPC羣集

2018-04-19_220947.png

若是針對頭節點進行了高可用部署,這裏能夠選擇高可用,咱們這裏只有一臺,因此選擇單頭

2018-04-19_221006.png

評估安裝規則

2018-04-19_221023.png

須要注意的是千萬不要自做聰明提早安裝WDS,不然這裏會報錯

2018-04-19_220753.png

選擇數據庫部署模型,默認hpc pack 2016安裝的是sql server 2016 express,若是遠程部署則至少SQL 2008R2標準版或企業版

遠程部署SQL server參考 https://docs.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/ee783551(v=ws.10)

2018-04-19_221038.png

證書這裏,能夠從導入設置中選擇新建一個自簽名證書

2018-04-19_221919.png

或者直接向AD申請一張容許導出密鑰的計算機證書,點擊瀏覽 hpc pack會識別到這張證書,這張證書被用作HPC pack各節點間通訊安全,所以需導出一份帶密鑰的PFX,後期添加計算節點時需導入此證書

2018-04-19_222024.png

最後hpc pack會根據自帶的離線安裝包爲頭節點安裝必備組件,這時候能夠泡杯綠茶,等待全部選項變成綠勾

2018-04-19_222101.png

安裝完成必備組件後,提示輸入HPC羣集鏈接串,這是HPC羣集和高可用羣集不同的地方,高可用羣集咱們是給一個邏輯的名稱,而HPC羣集的對外鏈接始終是頭節點

2018-04-19_230126.png

點擊完成後會自動打開HPC Pack 2016羣集管理器,在開始執行管理以前要完成部署任務

2018-04-19_230714.png

配置網絡拓撲,這裏老王選擇企業和私有網絡上的全部節點,考慮到節點中可能會有加入域節點,所以老王設計每一個節點兩個網絡,企業網絡,和專用的HPC網絡,但最終對外只發布管理節點企業網絡地址

2018-04-20_154448.png

配置完成以下,若是檢測到網卡支持RDMA Direct這裏會顯示出來,建議爲HPC網絡啓用RDMA,同時私有網絡配置部分,會在管理節點建立一個DHCP做用域,用於部署計算機節點時使用,該做用域爲HPC網段

2018-04-20_154623.png

設置安裝節點帳戶,本地管理員權限便可

2018-04-20_162030.png

配置新節點命名規則,主要適用於經過HPC管理節點 批量部署時的計算節點名稱

2018-04-20_162517.png

三個必備任務完成後便可看到HPC羣集完整內容,像極了SystemCenter 2007 2012時的UI

2018-04-20_162747.png

接下來還有一些可選配置的內容

爲HPC羣集添加管理員權限,一般建議在AD裏面建立一個安全組,這個安全組的用戶能夠對HPC羣集具有資源管理,羣集配置,報表查看,做業調度等權限

2018-04-20_163053.png

添加用戶權限,被添加的用戶,有權限經過客戶端應用程序,cmd,api,powershell,webportal向hpc羣集提交做業,一般也建議使用組進行管理

2018-04-20_163333.png

配置做業調度器策略

2018-04-20_163723.png

配置做業電子郵件通知,實現做業開始結束使用郵件通知做業全部者

2018-04-20_163742.png

建立不一樣級別的節點組

2018-04-20_164105.png

建立做業模板,做業模板會做爲用戶提交做業預定時顯示

2018-04-20_164638.png

限制做業運行時間,若是某一類型做業執行有時限限制,能夠經過此處進行配置

2018-04-20_164651.png

設置該做業模板優先級,凡是經過這個做業模板建立的做業,做業優先級默認及最大可調整範圍

2018-04-20_164711.png

限制節點組,能夠配置透過此模板建立的做業,僅容許在那些節點組運行

2018-04-20_164823.png

也能夠針對於做業模板限定使用權限

2018-04-21_153258.png

爲HPC羣集開啓Web門戶,進入安裝bin目錄,輸入如下命令便可,腳本會自動幫助咱們安裝IIS,配置HPC門戶所需內容

2018-04-20_170632.png

若是配置無誤,接下來能夠經過訪問頭節點名稱/hpcportal路徑,打開HPC portal,打開網頁前會須要身份驗證,通過身份驗證的HPC用戶或管理員能夠在portal上面在線提交做業,目前只有英文版

2018-04-21_122935.png


添加Windows計算節點


Windows計算節點系統要求


操做系統:Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2 SP1,支持域或工做組

.net framework:要求4.6.1或更高版本,Windows Server 2016自帶,Windows Server 2012 R2需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁


拷貝頭節點證書帶密鑰的pfx版本至計算節點

2018-04-21_143900.png

在windows計算節點上開啓HPC pack安裝嚮導,選擇建立新計算節點加入現有HPC羣集

2018-04-21_143943.png

加入羣集處輸入頭節點名稱,若是有多個頭節點,能夠按照逗號隔開輸入

2018-04-21_144011.png

添加證書,並輸入證書密碼

2018-04-21_144047.png

嚮導自動爲計算節點安裝必備組件

2018-04-21_144105.png

安裝完成後在頭節點羣集管理器能夠看到節點,當前爲未批准狀態,在HPC羣集中出於安全考慮,防止惡意添加的計算節點進來拷貝羣集數據,每一個被添加的計算節點,都必須通過管理員批准後方可加入羣集


批准方法能夠經過添加節點嚮導,或分配節點模板,節點模板的概念是指一組規範,凡是添加進來的節點,要選擇一種節點模板套入規範,才能夠正常加入HPC羣集

2018-04-21_145018.png

選擇節點模板後,HPC會自動根據咱們的設置,爲計算節點套入規範

2018-04-21_145109.png

當全部規範和設定都已經執行完畢,節點變成聯機狀態,這時候計算節點就能夠正常運行做業

2018-04-21_145138.png

咱們能夠經過修改節點模板,配置當新加入節點時,須要執行那些操做

2018-04-21_145331.png

2018-04-21_145338.png


2018-04-21_145347.png


2018-04-21_145357.png

將計算節點添加到節點組

2018-04-21_150141.png


微軟HPC羣集調度模型


在微軟HPC羣集調度模型中分爲做業和任務兩個概念,其中做業主要是指對高性能羣集資源的預定,一般包括申請的處理器數目,運行做業所須要的節點組,計劃運行的時間


做業調度算法


在使用過程當中咱們能夠經過API,CMD,Powershell,門戶,控制檯,對HPC羣集提交做業,做業會被記錄至HPCScheduler數據庫,同時由頭節點將做業進行調度,提交做業至關於預約一個資源窗口,在做業包括的時間內能夠完成所須要的任務,HPC羣集頭節點負責維護一個做業隊列,若是調度器發現現有資源能夠知足隊列中的第一個做業最小需求,則將其取出投入運行,不然調度器不作任何工做


做業調度算法例外:當全部正在運行的做業代表了計劃運行時間,而當前的空餘資源不夠隊列的第一個做業之最小需求時,能夠從隊列找出最靠前的一個做業進行調度(backfill),其必須知足

backfill做業也代表了計劃運行時間

backfill做業能夠置入當前的空餘資源

根據當前正在運行的做業能夠計算出什麼時候纔能有足夠多的資源供隊列中第一個做業運行,該時間距如今的距離必須大於backfill的計劃運行時間


任務是描述須要完成的具體工做


HPC羣集支持提交空做業,隨後爲做業附加任務,但任務必須依賴於做業運行

每一個任務只能使用該做業所分配到的資源來完成本身的工做

雖然做業是對應單個程序,但有些程序須要跨多個節點並行運行,所需在任務定義也須要指明最小和最大的資源需求

任務能夠明確代表本身須要各節點組,若是有權限也能夠直接指定專屬節點

任務須要提供程序在計算節點的啓動地址,工做目錄(工做目錄一般會選擇一臺存儲服務器映射至各計算節點相同網盤,用於存放程序文件),及啓動該程序所須要的參數

任務定義中能夠指定對程序運行過程當中的標準輸入,輸入出和錯誤流進行重定向

同一做業中的任務之間能夠定義依賴關係


任務調度算法


若是某個任務所依賴的任務都已經被執行完畢或沒有任何依賴任務,則該任務進入無依賴狀態(調度器內部狀態)

每一個做業中都維護一個任務隊列,當出現資源空餘時,調度器將選擇最靠前的一個無依賴狀態並可以被容納在該資源中的任務進行調度



微軟HPC羣集功能支持


  1. 支持資源分組,默認採用節點組方式進行分組,也能夠採用資源池方式進行資源分組

  2. 支持羣集節點狀態,性能,日誌監控

  3. 支持做業調度,任務調度,支持手動控制任務或做業執行

  4. 支持工做組節點做爲計算能力

  5. 支持經過API/CMD/Powershell/Console/portal等方式提交做業

  6. 支持執行MPI,MS-MPI是爲Windows開發的消息傳遞接口(MPI)的Microsoft實現,它容許MPI應用程序在HPC羣集上做爲任務運行

  7. 採用做業模板做爲高性能計算羣集服務質量限定,能夠在做業模板中限定經過此模板執行的做業優先級,可以使用的處理器,節點組,內存,以及可以利用此做業模板申請做業的權限,管理員能夠經過建立不一樣的做業模板,結合節點組,用戶組來對須要不一樣質量服務的用戶進行分類

  8. 採用節點模板做爲添加節點基線,經過配置節點模板,讓各新添加的節點符合基線後加入高性能羣集,也能夠經過在節點模板中封裝操做系統 驅動 軟件,實現經過頭節點PXE批量引導部署計算節點

  9. 和微軟其它組件整合,利用Exchange服務器做爲郵件通知,利用SCOM,OMS做爲羣集監控,利用×××S/SSAS/PowerBI配置分析報表,頭節點支持WSFC部署,數據庫支持Always On或WSFC部署,計算節點支持Azure Paas或Iaas方式部署,受權可使用AD或AzureAD,任務工做目錄能夠是映射到各結算節點的NFS/SMB網盤,背後能夠來自於S2D,傳統文件服務器羣集或通過2016存儲複製的UNC路徑。


微軟HPC羣集能夠提交的做業類型


MPI做業:能夠選擇新建做業新建單任務做業來建立MPI做業,對於運行MPI應用程序的任務,任務命令必須以mpiexec開頭:所以,並行任務命令必須採用如下格式:mpiexec [mpi_options] <myapp.exe> [arguments],其中myapp.exe是要運行的應用程序的名稱,對於並行任務,Windows HPC Server 2008開始包含基於阿貢國家實驗室MPICH2標準的MPI軟件包。微軟的MPI實現(稱爲MS-MPI)包括啓動程序mpiexec,每一個節點的MPI服務以及用於開發用戶應用程序的軟件開發工具包(SDK)


參數掃描做業:

參數化掃描做業由同一應用程序的多個實例組成,一般是串行應用程序,並行運行,輸入由輸入文件提供,輸出指向輸出文件。輸入和輸出一般是一組索引文件(例如,input1,input2,input3 ...,output1,output2,output3 ...),它們設置爲位於單個公用文件夾或單獨的公用文件夾中。任務之間沒有溝通或相互依存關係。這些任務可能並行也可能不會並行運行,具體取決於做業運行時羣集上可用的資源。


任務流程做業


在任務流做業中,一組不一樣的任務按照規定的順序運行,一般是由於一個任務取決於另外一個任務的結果。做業能夠包含許多任務,其中一些是參數化的,一些是串行的,還有一些是並行的。例如,您能夠建立一個由MPI和參數化任務組成的任務流做業。您能夠經過定義任務之間的依賴關係來肯定運行任務的順序。


下圖說明了任務流做業:

2018-04-21_215144.png

任務1首先運行。請注意,只有任務2和3能夠並行運行,由於二者都不依賴於另外一個。任務4在任務2和3都完成後運行。



SOA工做做業

面向服務的體系結構(SOA)是構建分佈式,鬆散耦合系統的一種方法。在SOA系統中,不一樣的計算功能被打包爲稱爲服務的軟件模塊。服務能夠分佈在整個網絡上並由其餘應用程序訪問。例如,若是應用程序執行重複的並行計算,則核心計算能夠打包爲服務並部署到羣集。這使開發人員可以解決使人尷尬的並行問題,而無需重寫低級代碼並快速擴展應用程序。經過在多個服務主機(計算節點)之間分配核心計算,應用程序能夠更快運行 最終用戶在他們的計算機上運行應用程序,羣集節點執行計算。


甲客戶端應用程序提供了一種用於最終用戶訪問的一個或多個服務的功能的接口。開發人員能夠建立羣集SOA客戶端應用程序,以提供對部署到Windows HPC羣集的服務的訪問。在後端,客戶端應用程序向羣集提交包含服務任務的做業,啓動與代理節點的會話,併發送服務請求並接收響應(計算結果)。根據做業調度策略,頭節點上的做業調度器將資源分配給服務做業。服務任務的一個實例在每一個分配的資源上運行並加載SOA服務。做業調度程序嘗試根據服務請求的數量調整資源分配。


若是客戶端建立了持久會話,則代理使用MSMQ存儲全部消息。客戶端隨時能夠檢索代理存儲的回覆,即便在有意或無心斷開鏈接後


下圖說明了SOA做業在微軟HPC羣集上的運行方式:

2018-04-21_215412.png


Microsoft Excel計算卸載


包含在HPC Pack的某些版本中的HPC Services for Excel支持許多用於將Excel計算卸載到HPC Pack羣集的模型。適用於羣集加速的工做簿包括能夠並行運行的獨立計算。許多複雜和長時間運行的工做簿都是迭代運行的 - 也就是說,它們在不一樣的輸入數據集上屢次執行單個計算。這些工做簿可能包含複雜的Microsoft Visual Basic for Applications(VBA)函數或計算密集型XLL加載項。HPC Services for Excel支持將工做簿卸載到羣集,或將UDF卸載到羣集。


經過使Excel 2010 UDF可以在Windows HPC羣集中運行,Microsoft Excel 2010將UDF模型擴展到羣集。當受支持的羣集可用時,用戶能夠經過選擇羣集鏈接器並在「 Excel選項」對話框的「 高級」選項中指定羣集名稱來指示Excel 2010使用該羣集。在羣集中,UDF的工做方式與傳統UDF很是類似,只是計算由一臺或多臺服務器執行。關鍵的好處是並行化。若是工做簿包含對長時間運行的UDF的調用,則可使用多個服務器同時評估函數。爲了在羣集上運行,UDF必須包含在羣集安全的XLL文件中



微軟HPC羣集能夠提交的任務類型


基本:運行串行應用程序或消息傳遞接口(MPI)應用程序的單個實例。MPI應用程序一般在多個核心上併發運行,而且能夠跨越多個節點

參數掃描:一般在索引輸入和輸出文件中運行指定次數的命令(以開始,結束和增量值表示)。掃描的步驟可能並行也可能不一樣步,具體取決於任務運行時羣集上可用的資源。

節點準備:即便在動態添加節點(增加策略)時,也會在每一個計算節點分配給做業時運行命令或腳本。該節點準備任務在工做的任何其餘任務前的節點上運行。

若是節點準備任務沒法在節點上運行,那麼該節點將不會添加到做業中。

節點釋放:

即便在節點被動態刪除(收縮策略)時,也能夠在每一個節點計算每一個節點時運行命令或腳本,由於它是從做業中釋放的。

節點發布任務的最長運行時間(以秒爲單位)由具備NodeReleaseTaskTimeout羣集參數的羣集管理員定義。您沒法覆蓋此運行時間限制。默認狀況下,超時設置爲15秒。要查看此羣集參數的值,能夠運行如下命令(搜索字符串區分大小寫):cluscfg listparams | find「NodeReleaseTaskTimeout」

節點發布任務在做業被取消時運行。強制取消做業時節點發布任務不運行。

若是做業有最大運行時間和節點發布任務,則做業計劃程序將在做業的運行時間到期(做業運行時間減去節點發布任務運行時間)以前取消做業中的其餘任務。這容許節點發布任務在分配的做業時間內運行。

服務:

在分配給做業的全部資源上運行命令或服務。將新資源添加到做業時,或者若是先前正在運行的實例退出而且運行的資源仍然分配給做業,則該命令的新實例會運行。服務任務將繼續啓動實例,直到做業被取消或中止,最大運行時間到期或達到最大實例數(子任務)爲止。

經過面向服務的體系結構(SOA)客戶端提交的任務做爲服務任務運行。

您不能將基本任務或參數掃描任務添加到包含服務任務的做業


定義做業或任務後,能夠將做業或任務規範導出到XML文件,下次能夠直接從XML導入做業或任務


微軟HPC羣集做業及任務狀態

(實際顯示中文,使用英文解釋名稱更爲準確)

Configuring:做業或任務在系統中,但還沒有提交到隊列中。

Submitted:做業或任務已經提交而且正在等待驗證,而後才能排隊

Validating:HPC做業計劃程序服務正在驗證做業或任務。在驗證過程當中,HPC做業計劃程序服務確認權限,爲做業全部者未指定的任何屬性應用默認設置,並根據約束驗證每一個屬性。默認設置和約束由做業模板定義。HPC做業計劃程序服務還確認做業屬性包含全部任務屬性(例如,沒有任務的運行時間的值大於做業的運行時間)。

在驗證過程當中,做業也可能會經過羣集管理員定義的自定義提交篩選器應用程序。

若是做業經過驗證,則會移至隊列狀態。若是做業未經過驗證,則做業顯示錯誤消息,做業將轉至失敗狀態。

Queued:做業或任務已經過驗證,正在等待安排並激活(運行),當正在運行的做業,基本任務或參數掃描子任務被HPC做業計劃程序服務搶佔時,它將移回隊列狀態(除非該任務不可從新運行,在這種狀況下,它將標記爲失敗)。

Dispatching:此狀態僅適用於任務。HPC做業計劃程序服務已將資源分配給該任務,並正在聯繫分配的節點以開始運行該任務。當任務開始時,它將轉到運行狀態。

Running:做業或任務正在一個或多個節點上運行

Finishing:工做或任務已完成,工做或任務清理正在進行中

Finished:工做或任務已成功完成。

Failed:工做或任務已成功完成。做業或任務未能完成,中止運行或返回指示失敗的退出代碼(默認狀況下爲非零退出代碼)。此外,正在運行的任務在如下狀況下標記爲失敗:

  • 做業全部者或羣集管理員取消該任務。

  • HPC做業計劃程序服務取消了一項任務,由於它已超過其最大運行時間。

  • HPC做業計劃程序服務搶佔未標記爲可從新運行的任務。

  • HPC做業計劃程序服務搶先啓動以每一個資源爲基礎啓動的子任務(節點準備,節點發布和服務子任務)。

若是某個做業或任務因爲羣集故障而沒法啓動,則該做業或任務會在標記爲失敗以前自動重試指定次數。

Canceling:工做或任務被取消,清理工做正在進行中

Canceled:做業已被做業全部者,羣集管理員或HPC做業計劃程序服務取消。例如,HPC做業計劃程序服務能夠取消做業,若是超過其運行時或做業被搶佔。做業全部者或羣集管理員在開始運行以前已取消該任務。若是正在運行的任務被取消,則該任務被標記爲失敗。



用戶經過客戶端提交做業


HPC pack 2016 客戶端安裝需求

操做系統:Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Windows Server 2008 R2 SP1,Windows 10,Windows 8.1,Windows 8,Windows 7 SP1,支持加入域客戶端或工做組

.net framework:要求4.6.1或更高版本,Windows Server 2016,Windows 10 自帶,其它操做系統需單獨安裝,在HPC pack安裝文件DotNetFramework目錄有安裝包,win8,2012R2安裝前還需按順序安裝KB2919442,KB2919355補丁,win7sp1,2008R2sp1不須要安裝補丁


拷貝安裝文件包至客戶端,或放在網絡路徑,開啓安裝嚮導,選擇僅安裝客戶端實用工具

2018-04-21_160741.png

安裝完成後能夠在客戶端看到hpc powershell ,hpc 羣集管理器, hpc job manager,點擊job manager鏈接到頭節點

2018-04-21_161342.png

打開做業管理界面,用戶能夠在這裏將做業提交到高性能羣集

權限斷定以當前登陸用戶,或runas用戶爲準

通過老王測試,目前HPC pack的客戶端若是但願鏈接到服務器需加入域才能夠,客戶端若是未加入域,打開job manager鏈接到頭節點不會成功,若是實在不想每臺做業客戶端都加入域,能夠考慮將一臺Server做爲網關節點,安裝RDSH與HPC pack客戶端,把這臺機器上面的hpc pack console做爲app發佈到remoteapp或xenapp解決方案,或工做組客戶端直接使用portal,cmd,powershell,api等方式提交做業

2018-04-21_163013.png

本文篇幅有限,老王這裏僅作拋磚引玉,並不爲你們進行各個做業的建立演示,感興趣的朋友能夠參考連接,本身動手建立做業和任務

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/ff919653(v%3dws.11)



HPC羣集管理器實用功能


批量選擇節點,運行命令,按照節點輸出結果

2018-04-21_222939.png


2018-04-21_223000.png

批量選擇節點運行診斷,診斷包含SOA,MPI,Azure節點等自帶測試項目

2018-04-21_223047.png

總結:經過本文老王爲你們介紹了高性能計算概念,微軟對於高性能計算的解決方案,產品的介紹,概念,羣集建立,以及羣集經常使用設置,一遍走下來看,老王認爲微軟的HPC羣集雖然可能在業界並非性能最好的,可是它也有它的優點,例如和自身產品整合密切,不須要安裝多個功能實現HPC,只須要安裝一個hpc pack便可,HPC該有的功能相對完備,若是不擅長linux命令的朋友,也能夠嘗試下使用微軟GUI的方式構建HPC羣集,但願能夠爲感興趣的朋友帶來收穫,若是有問題歡迎與老王交流

相關文章
相關標籤/搜索