1. 程式人生 > >微軟HPC群集添加Linux計算節點

微軟HPC群集添加Linux計算節點

Hpc pack hpcpack2016 nodemanager.json 微軟HPC群集 微軟高性能群集

HPC群集系統中計算資源的管理是重要的一塊,如果能夠實現計算作業可以在異構操作系統上面協同運作,無疑將是一大亮點,微軟HPC pack自2012 upate3開始,支持本地linux作為計算節點,微軟官網寫到如何添加linux計算節點進入HPC群集的方法,但僅是Ubuntu版本的操作,而且有些關鍵步驟並沒有寫出,導致如果不是很懂linux的微軟系統管理員做起來會遇到各種問題,因此老王通過本文將實際環境中安裝涉及到的步驟全部呈現,並討論linux計算節點為微軟HPC群集帶來的可能性。


本文以hpc pack 2016 update1為例

支持的linux本如下SUSE Linux Enterprise Server 12,Red Hat Enterprise Linux 7.1,CentOS 6.7,Ubuntu Server 14.04 LTS和16.04 LTS


環境介紹

08dc

10.0.0.2 255.0.0.0


hpc01-head.oa.com

windows server 2016數據中心版

Enterprise 10.0.0.8 255.0.0.0 dns 10.0.0.2

HPC 18.0.0.1 255.0.0.0


linuxnode1

Centos6.7

Enterprise 10.0.0.51 255.0.0.0 dns 10.0.0.2

HPC 18.0.0.3 255.0.0.0


老王總結的配置步驟如下


  1. 為linux主機修改主機名

  2. 在windows dns服務器上添加linux主機DNS記錄,確保安裝過程中head主機可以找到linux計算節點

  3. 為linux主機導入windows環境根證書,頭節點證書公鑰,確保證書可以驗證,linux主機可以正確打開https://頭節點fqdn(此步驟需重啟生效)

  4. 在linux主機上面添加頭節點主機名和FQDN名稱進入/etc/resolv.conf,最好使用永久生效方式,確保互相正常解析

  5. 通過FileZilla或其它工具,將hpc pack linux aget tar gz,setup.py,頭節點帶私鑰證書拷貝進入linux目錄

  6. 在linux主機安裝hpc pack agent代理需要聯網通過yum install下載依賴組件,因此需要讓安裝過程linux主機可以臨時聯網下載組件

  7. 通過python命令開始安裝setup.py,正常情況下centos或redhat安裝完成後都有這個命令,如果在終端輸入python無效,需自行下載安裝

  8. 嚴格按照setup.py腳本指示安裝代理

  9. 檢查安裝過程日誌,以及nodemanager.json,如果出現主機名,需修改為FQDN,因為主機名稱無法通過SSL驗證

  10. 一切順利,安裝成功後,經過一杯茶的時間,可以在頭節點看到被添加進來的linux計算節點,聯機即可



1.為linux主機修改主機名,最好安裝時指定,否則可以使用hostname linuxnode01修改

技術分享圖片

2.在windows dns服務器上添加linux主機DNS記錄

技術分享圖片

3.導出windows CA根證書與頭節點安裝證書,不帶私鑰版本,導出格式選擇Base 64編碼

技術分享圖片


技術分享圖片

導出完成後得到兩個文件,一個是頭節點安裝證書不帶私鑰的cer,一個是企業根信任證書的cer,如果是自簽名證書僅導出安裝證書不帶私鑰的cer即可

技術分享圖片

直接將文件後綴重命名為pem,便於我們在linux上面導入證書

技術分享圖片

通過filezilla工具,拷貝這兩張證書,放置到centos或redhat的/etc/pki/ca-trust/source/anchors路徑下

技術分享圖片

在centos或redhat上面進入bin目錄下,輸入update-ca-trust,更新證書列表,會將我們放進anchors的證書導入

技術分享圖片

導入之後重啟操作系統,在瀏覽器欄輸入https://hpc01-head.oa.com ,出現以下結果,即代表配置成功

技術分享圖片

如果出現證書不受信任的提示,則一定要重新配置,檢查證書位置,以及是否導入,務必確保地址可以正確打開,因為linux裏面對於證書要求非常嚴格,如果SSL證書不信任,是不允許直接打開SSL網站的

技術分享圖片

但是我們在linux上面安裝hpc pack代理,最後一步,要通過json裏面NamingServceUri寫出的 https://hpc01-head.oa.com:443/HpcNaming/api/fabric/resolve/singleton/

路徑,去聯系頭節點註冊計算節點,如果這一步信任不做,那麽最後一步這個地址是沒辦法打開的,這樣即便linux端安裝代理成功了,但是linux計算節點也不會顯示在windows 頭節點中


4.在linux主機上面添加頭節點主機名和FQDN名稱進入/etc/resolv.conf,這一步是為了讓linux主機能夠正常解析頭節點主機,其實我們在linux上面設置了dns後,理論上來說應該就已經可以解析了,ping頭節點主機名和FQDN都可以ping通,但是之前曾經有外國朋友提到過這是一個bug,告知我們仍需添加/etc/resolv.conf,作為雙保險我們最好還是加上

添加方法使用linux vi編輯器

終端中輸入vi /etc/resolv.conf打開編輯器 ,輸入完成後鍵入ESC,然後鍵入:w保存文檔

此為臨時性修改方法,一旦重啟後即失效,雖可以確保代理安裝過程無誤,但如果有了解linux的朋友還是建議使用永久修改方法

技術分享圖片

添加完成後嘗試在頭節點ping linux節點主機名,主機名加域名,在linux節點ping頭節點主機名,FQDN名,都能ping通即配置成功


5.通過FileZilla或其它工具,將hpcnodeagent.tar.gz,setup.py,頭節點安裝時帶私鑰證書拷貝進入一個linux目錄

技術分享圖片

hpcnodeagent.tar.gz,setup.py可以在hpc pack 頭節點安裝包解壓目錄中找到

技術分享圖片

HPCcom.pfx是我們安裝hpc pack 頭節點時申請的證書,導出那張證書,帶私鑰一起導出



6.在linux主機安裝hpc pack agent代理需要聯網通過yum install下載依賴組件,因此需要讓安裝過程linux主機可以臨時聯網下載組件


hpc pack liunx agent安裝的時候需要聯機下載一些必備組件,實驗中老王臨時把HPC網絡接入了vmwareNAT網絡,實際企業環境建議臨時讓其中一個網絡聯網,或臨時新加入一個網卡

如果安裝linux hpc pack代理時不能聯網,則會出現以下錯誤

技術分享圖片

7.通過python命令開始安裝setup.py,正常情況下centos或redhat安裝完成後都有這個命令,如果在終端輸入python無效,需自行下載安裝


進入setup.py所在目錄運行python命令

python setup.py -install -connectionstring:'hpc01-head'-certfile:'/opt/HPCcom.pfx' -certpassword:'123.com' -managehosts

技術分享圖片

如果怕麻煩可以直接輸入python setup.py,會彈出setup.py幫助內容,直接可以復制粘貼,再修改為我們的內容

技術分享圖片

嚴格按照setup.py說明安裝代理,一個參數和大小寫都不能錯,最好是直接復制示例內容然後修改

技術分享圖片

在安裝步驟進行到大約這裏時

技術分享圖片

打開/opt/hpcnodemanager/nodemanager.json,檢視NamingServceUri一欄,如果是hpc01-head這樣的主機名,請一定把它改成hpc01-head.oa.com

技術分享圖片

因為我們在windows端綁定的證書名稱是fqdn名稱,因此我們導入到linux的證書,也只會匹配fqdn名稱,如果這裏以主機名訪問,則會因為名稱與證書不匹配而無法直接打開網頁,導致沒辦法向頭節點註冊

技術分享圖片

安裝成功後,經過一杯茶的時間,可以在頭節點看到被添加進來的linux計算節點

技術分享圖片

安裝過程日誌排錯

Linux Node

/opt/hpcnodemanager/logs/nodemanager.txt,hpclinuxagent.log

/opt/hpcnodemanager/nodemanager.json


頭節點

安裝目錄 Microsoft HPC Pack 2016 \ Data \ LogFiles \ Scheduler \ HpcScheduler*.bin

使用hpctrace將bin文件轉換txt查看



聯機linux計算節點,現在linux計算節點已經成功加入到微軟HPC群集中,可以正常承載頭節點派發給它的作業任務

技術分享圖片

支持直接在群集管理器對linux節點執行命令

技術分享圖片

支持使用clusrun提交作業直接在linux計算節點執行

技術分享圖片

支持通過群集管理器匯總顯示linux計算節點數據

技術分享圖片


技術分享圖片

支持通過客戶端程序,portal,提交參數掃描作業至linux節點

技術分享圖片


Linux計算節點不支持的場景

  1. linux計算節點僅支持單頭節點的部署,如果采用群集頭節點,則無法使用linux計算節點

  2. 要在Linux節點上運行MPI應用程序,您必須在節點上安裝自己的MPI。包含在HPC Pack中的Microsoft MPI(MS-MPI)僅在Windows節點上運行。調度程序必須在Linux節點之間建立互信,HPC Pack 2016 Update 1會自動為用戶生成密鑰對。

  3. 不支持GPU和SOA工作負載 - 目前HPC Pack不支持在Linux節點上調度GPU或運行SOA工作負載

除上述場景外,其它體驗均與windows計算節點一致


OK,幹貨講完,下面隨便聊聊


有些不太了解微軟最近幾年變化的朋友可能會詫異,怎麽可能你微軟的群集還能允許linux節點加入呢,事實上微軟最近幾年正在逐步走向開放的道路上,老王將微軟的開放分為兩部分,一部分是支持異構化資源,支持和異構資源協同工作,另外一部分則是全面擁抱公有雲,後面我們先不表,單說支持異構資源,老王認為這一點算是個明智之舉,一個企業不可能只有windows或只有linux,如果能有一套工具集中管理windows、linux這當然是企業最希望的,而微軟很多產品正在做到這一點,System Center,powershell,docker,還有我們這個系列的hpc pack,老王認為未來在中國,群集管理平臺,雲管理平臺,IT管理平臺,都將呈現兩個趨勢,一個是異構化,通過一個管理工具可以管理多家廠商節點 ;一個是自主化,越來越多國產廠商將湧現,國產廠商可以從外國廠商中優秀的功能借鑒。


對於高性能計算群集來說,總的來說這種群集相對於高可用群集來說較為松散,高可用群集對於每個群集的配置有嚴格的配置要求,最好要做到的完全一致,高性能群集則不必,因為它所需要的是每個節點能夠提供計算能力,各個節點可以協同並行工作,至於你節點是什麽System,高性能群集理想情況下是不需要關註的。


微軟的高性能群集支持Linux計算節點後帶來的場景思考


1.企業管理員不熟悉linux,只熟悉windows,想搭建一套HPC群集,微軟自家降低學習成本

2.企業已有linux,但是配置linux hpc群集過於復雜,管理員可以挑選微軟hpc pack作為HPC頭節點,計算節點全部采用linux節點

3.可以通過在頭節點配置存儲復制或S2D,對象存儲等技術,將一些微軟上面特有的技術,帶給linux計算節點

4.企業有linux,也有windows,希望同時利用,可以搭建一套微軟高性能群集,同時添加linux計算節點,windows計算節點

5.微軟hpc pack目前看來不單獨收費,只要有正規的windows license或azure訂閱即可安裝使用

6.可以建立windows節點作業模板,linux節點作業模板,如果我們無法做到並行程序跨平臺,就可以讓用戶寫的程序windows的就只能提交到windows節點,linux的就只提交到linux計算節點

7.利用Docker,HPC Pack現在已與Docker集成。用戶作業可以提交請求Docker鏡像的作業,並且HPC Job Scheduler將在Docker中啟動該任務。NVIDIA Docker GPU作業和跨Docker MPI作業均受支持


HPC群集可以支持Linux計算節點之後,下一步主要需要思考的就是如何能讓作業跨windows節點和linux節點執行,選用什麽樣的並行接口程序來實現跨平臺的並行,在異構系統都具備HPC環境的情況下,如何能夠實現一個作業同時提交給windows和linux節點,都能輸出理想的結果


微軟高性能群集,Linux,與Azure


老王認為使用公有雲無非是需要考慮兩個平衡,第一個平衡是我有多大程度上可以信賴公有雲,第二個平衡是我的數據有多大程度上不可以公開給公有雲,結合這兩個平衡考慮,選擇出一個可以接受的負載,放到公有雲運行,下面是老王整理的一些HPC群集和Azure融合的場景,感興趣的朋友可以結合自身的環境去思考選用


  1. 本地沒有服務器環境,在Azure市場申請搭建HPC群集,用於完成計算

  2. 構建混合HPC環境,本地搭建HPC頭節點,計算節點,Azure也搭建計算節點,當本地計算環境達到閥值,啟動Azure計算節點輔助完成計算

  3. 本地沒有Windows授權,直接申請Azure虛擬機,自帶系統授權和HPC授權

  4. Azure上面添加linux計算機節點有腳本幫助我們自動完成

  5. 需要完成重大運算,本地資源不足,臨時開啟Azure虛擬機,運算完成刪除關閉虛擬機


相信一些朋友看過後會對微軟hpc pack產生興趣,這裏老王給出一個我的學習路線建議

  1. 了解什麽是高性能群集

  2. 了解什麽是高性能群集作業管理,作業調度,資源管理

這兩點可以在百度文庫,國內博客上面獲得

3.查看微軟官網,了解微軟hpc pack概念,架構,對於作業調度,資源管理等概念如何實現

4.了解HPC pack 作業申請過程 ,資源如何管理

這部分內容可以參考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/jj899615(v%3dws.11)

5.了解並行計算,並行計算方式,並行計算程序,這些如何在微軟HPC群集上面工作

6.實戰添加windows計算節點,添加linux計算節點,配置門戶

7.實戰裸金屬部署windows節點

8.實戰提交作業,觀察HPC作業調度過程

9.熟悉HPC pack群集管理器,資源管理功能,報表功能

10.了解hpc pack在azure上面場景,參考https://docs.microsoft.com/en-us/azure/virtual-machines/linux/classic/ruby-rails-web-app



HPC pack支持整合科學計算環境:NAMD,OpenFOAM,STAR-CCM+環境,InterMPI,Matlab


Matlab整合介紹

https://ww2.mathworks.cn/help/mdce/configure-parallel-computing-products-for-hpc-server.html

https://blogs.technet.microsoft.com/hpc_and_azure_observations_and_hints/2011/12/12/running-matlab-in-parallel-on-a-windows-cluster-using-compiled-matlab-code-and-the-matlab-compiler-runtime-mcr/


NAMD,OpenFOAM,STAR-CCM+環境,InterMPI整合介紹

https://docs.microsoft.com/en-us/azure/virtual-machines/linux/classic/hpcpack-cluster-starccm



微軟HPC群集添加Linux計算節點